process_madvise(2) System Calls Manual process_madvise(2) NUME process_madvise - ofera sfaturi despre utilizarea memoriei pentru un proces BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include /* Definiia constantelor MADV_* */ #include /* Definiia constantelor SYS_* */ #include /* Definiia tipului struct iovec */ #include ssize_t syscall(SYS_process_madvise, int pidfd, const struct iovec *iovec, size_t vlen, int advice, unsigned int fanioane); Nota: glibc nu ofera o funcie de invaluire pentru process_madvise(), fiind necesara utilizarea syscall(2). DESCRIERE Apelul de sistem process_madvise() este utilizat pentru a da sfaturi sau indicaii nucleului cu privire la intervalele de adrese ale unui alt proces sau ale procesului apelant. Acesta ofera sfaturi pentru intervalele de adrese descrise de iovec i vlen. Scopul acestor sfaturi este de a imbunatai performana sistemului sau a aplicaiei. Argumentul pidfd este un descriptor de fiier PID (a se vedea pidfd_open(2)) care specifica procesul caruia trebuie sa i se aplice sfatul. Indicatorul iovec indica o matrice de structuri iovec, descrise in iovec(3type). vlen specifica numarul de elemente din matricea de structuri iovec. Aceasta valoare trebuie sa fie mai mica sau egala cu IOV_MAX (definita in sau accesibila prin apelul sysconf(_SC_IOV_MAX)). Argumentul advice este una dintre urmatoarele valori: MADV_COLD A se vedea madvise(2). MADV_COLLAPSE A se vedea madvise(2). MADV_PAGEOUT A se vedea madvise(2). MADV_WILLNEED A se vedea madvise(2). Argumentul fanioane este rezervat pentru utilizare viitoare; in prezent, acesta trebuie sa fie specificat ca fiind 0. Argumentele vlen i iovec sunt verificate inainte de a aplica orice sfat. In cazul in 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 pari din iovec daca unul dintre elementele sale indica o regiune de memorie nevalida in procesul la distana. Nici un alt element nu va fi procesat dincolo de acest punct; (a se vedea discuia privind recomandarile pariale in seciunea VALOAREA RETURNATA). Incepand cu Linux 5.12, permisiunea de a aplica sfaturi unui alt proces este guvernata de verificarea modului de acces ptrace PTRACE_MODE_READ_FSCREDS (a se vedea ptrace(2)); in plus, din cauza implicaiilor de performana ale aplicarii sfaturilor, apelantul trebuie sa aiba capacitatea CAP_SYS_NICE (a se vedea capabilities(7)). VALOAREA RETURNATA In caz de succes, process_madvise() returneaza numarul de octei recomandat. Aceasta valoare de returnare poate fi mai mica decat numarul total de octei solicitai, daca a aparut o eroare dupa ce unele elemente iovec au fost deja procesate. Apelantul trebuie sa verifice valoarea de returnare pentru a determina daca a avut loc o recomandare pariala. In caz de eroare, se returneaza -1, iar errno este configurata pentru a indica eroarea. ERORI-IEIRE EBADF pidfd nu este un descriptor de fiier PID valid. EFAULT Memoria descrisa de iovec se afla in afara spaiului de adrese accesibil al procesului la care se refera pidfd. EINVAL fanioane nu este 0. EINVAL Suma valorilor iov_len din iovec depaete o valoare ssize_t. EINVAL vlen este prea mare. ENOMEM Nu s-a putut aloca memorie pentru copiile interne ale structurilor iovec. EPERM Apelantul nu are permisiunea de a accesa spaiul de adrese al procesului pidfd. ESRCH Procesul inta nu exista (adica s-a incheiat i a fost ateptat). A se vedea madvise(2) pentru erorile specifice advice. STANDARDE Linux. ISTORIC Linux 5.10. Suportul pentru acest apel de sistem este opional, in funcie de valoarea opiunii de configurare CONFIG_ADVISE_SYSCALLS. Cand acest apel de sistem a aparut pentru prima data in Linux 5.10, permisiunea de a aplica sfaturi unui alt proces era in intregime guvernata de verificarea modului de acces ptrace PTRACE_MODE_ATTACH_FSCREDS (a se vedea ptrace(2)). Aceasta cerina a fost relaxata in Linux 5.12, astfel incat apelantul sa nu aiba nevoie de control total asupra procesului inta. CONSULTAI I madvise(2), pidfd_open(2), process_vm_readv(2), process_vm_write(2) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 process_madvise(2)