Scroll to navigation

process_madvise(2) System Calls Manual process_madvise(2)

NUME

process_madvise - oferă sfaturi despre utilizarea memoriei pentru un proces

BIBLIOTECA

Biblioteca C standard (libc, -lc)

REZUMAT

#include <sys/mman.h>      /* Definiția constantelor MADV_* */
#include <sys/syscall.h>   /* Definiția constantelor SYS_* */
#include <sys/uio.h>       /* Definiția tipului struct iovec */
#include <unistd.h>
ssize_t syscall(SYS_process_madvise, int pidfd,
                const struct iovec *iovec, size_t vlen, int advice,
                unsigned int fanioane);

Notă: glibc nu oferă o funcție de învăluire pentru process_madvise(), fiind necesară utilizarea syscall(2).

DESCRIERE

Apelul de sistem process_madvise() este utilizat pentru a da sfaturi sau indicații nucleului cu privire la intervalele de adrese ale unui alt proces sau ale procesului apelant. Acesta oferă sfaturi pentru intervalele de adrese descrise de iovec și vlen. Scopul acestor sfaturi este de a îmbunătăți performanța sistemului sau a aplicației.

Argumentul pidfd este un descriptor de fișier PID (a se vedea pidfd_open(2)) care specifică procesul căruia trebuie să i se aplice sfatul.

Indicatorul iovec indică o matrice de structuri iovec, descrise în iovec(3type).

vlen specifică numărul de elemente din matricea de structuri iovec. Această valoare trebuie să fie mai mică sau egală cu IOV_MAX (definită în <limits.h> sau accesibilă prin apelul sysconf(_SC_IOV_MAX)).

Argumentul advice este una dintre următoarele valori:

A se vedea madvise(2).
A se vedea madvise(2).
A se vedea madvise(2).
A se vedea madvise(2).

Argumentul fanioane este rezervat pentru utilizare viitoare; în prezent, acesta trebuie să fie specificat ca fiind 0.

Argumentele vlen și iovec sunt verificate înainte de a aplica orice sfat. În cazul în care vlen este prea mare sau iovec nu este valid, se va returna imediat o eroare și nu se va aplica nici un sfat.

Sfatul ar putea fi aplicat numai unei părți din iovec dacă unul dintre elementele sale indică o regiune de memorie nevalidă în procesul la distanță. Nici un alt element nu va fi procesat dincolo de acest punct; (a se vedea discuția privind recomandările parțiale în secțiunea VALOAREA RETURNATĂ).

Începând cu Linux 5.12, permisiunea de a aplica sfaturi unui alt proces este guvernată de verificarea modului de acces ptrace PTRACE_MODE_READ_FSCREDS (a se vedea ptrace(2)); în plus, din cauza implicațiilor de performanță ale aplicării sfaturilor, apelantul trebuie să aibă capacitatea CAP_SYS_NICE (a se vedea capabilities(7)).

VALOAREA RETURNATĂ

În caz de succes, process_madvise() returnează numărul de octeți recomandat. Această valoare de returnare poate fi mai mică decât numărul total de octeți solicitați, dacă a apărut o eroare după ce unele elemente iovec au fost deja procesate. Apelantul trebuie să verifice valoarea de returnare pentru a determina dacă a avut loc o recomandare parțială.

În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI-IEȘIRE

pidfd nu este un descriptor de fișier PID valid.
Memoria descrisă de iovec se află în afara spațiului de adrese accesibil al procesului la care se referă pidfd.
fanioane nu este 0.
Suma valorilor iov_len din iovec depășește o valoare ssize_t.
vlen este prea mare.
Nu s-a putut aloca memorie pentru copiile interne ale structurilor iovec.
Apelantul nu are permisiunea de a accesa spațiul de adrese al procesului pidfd.
Procesul țintă nu există (adică s-a încheiat și a fost așteptat).

A se vedea madvise(2) pentru erorile specifice advice.

VERSIUNI

Acest apel de sistem a apărut pentru prima dată în Linux 5.10. Suportul pentru acest apel de sistem este opțional, în funcție de valoarea opțiunii de configurare CONFIG_ADVISE_SYSCALLS.

STANDARDE

Apelul de sistem process_madvise() este specific Linux.

NOTE

Când acest apel de sistem a apărut pentru prima dată în Linux 5.10, permisiunea de a aplica sfaturi unui alt proces era în întregime guvernată de verificarea modului de acces ptrace PTRACE_MODE_ATTACH_FSCREDS (a se vedea ptrace(2)). Această cerință a fost relaxată în Linux 5.12, astfel încât apelantul să nu aibă nevoie de control total asupra procesului țintă.

CONSULTAȚI ȘI

madvise(2), pidfd_open(2), process_vm_readv(2), process_vm_write(2)

TRADUCERE

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

1 noiembrie 2022 Pagini de manual de Linux 6.03