table of contents
mincore(2) | System Calls Manual | mincore(2) |
NUME¶
mincore - determină dacă paginile sunt rezidente în memorie
BIBLIOTECA¶
Biblioteca C standard (libc, -lc)
SINOPSIS¶
#include <sys/mman.h>
int mincore(void addr[.length], size_t length, unsigned char *vec);
mincore():
Începând cu glibc 2.19:
_DEFAULT_SOURCE
glibc 2.19 și versiunile anterioare:
_BSD_SOURCE || _SVID_SOURCE
DESCRIERE¶
mincore() returnează un vector care indică dacă paginile din memoria virtuală a procesului apelant sunt rezidente în nucleu (RAM) și, prin urmare, nu vor cauza un acces la disc (page fault) dacă sunt menționate. Nucleul returnează informații de rezidență despre pagini începând cu adresa addr și continuând cu length octeți.
Argumentul addr trebuie să fie un multiplu al dimensiunii paginii de sistem. Argumentul length nu trebuie neapărat să fie un multiplu al dimensiunii paginii, dar deoarece informațiile privind rezidența sunt returnate pentru pagini întregi, length este rotunjit efectiv la următorul multiplu al dimensiunii paginii. Se poate obține dimensiunea paginii (PAGE_SIZE) folosind sysconf(_SC_PAGESIZE).
Argumentul vec trebuie să indice o matrice care să conțină cel puțin (length+PAGE_SIZE-1) / PAGE_SIZE octeți. La returnare, bitul cel mai puțin semnificativ al fiecărui octet va fi activat în cazul în care pagina corespunzătoare se află în prezent în memorie, iar în caz contrar va fi dezactivat; (definirile celorlalți biți din fiecare octet sunt nedefinite; acești biți sunt rezervați pentru o eventuală utilizare ulterioară). Bineînțeles, informațiile returnate în vec sunt doar un instantaneu: paginile care nu sunt blocate în memorie pot apărea și dispărea în orice moment, iar conținutul lui vec poate fi deja expirat în momentul în care se întoarce acest apel.
VALOAREA RETURNATö
În caz de succes, mincore() returnează zero. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.
ERORI-IEȘIRE¶
EAGAIN nucleul este temporar în criză de resurse.
- EFAULT
- vec indică o adresă nevalidă.
- EINVAL
- addr nu este un multiplu al dimensiunii paginii.
- ENOMEM
- length este mai mare decât (TASK_SIZE - addr); (acest lucru ar putea să apară dacă se specifică o valoare negativă pentru length, deoarece această valoare va fi interpretată ca un număr întreg mare fără semn). În Linux 2.6.11 și în versiunile anterioare, pentru această condiție era returnată eroarea EINVAL.
- ENOMEM
- De la addr până la addr + length conținea memorie necartografiată.
STANDARDE¶
Niciunul.
ISTORIC¶
Linux 2.3.99pre1, glibc 2.2.
A apărut pentru prima dată în 4.4BSD.
NetBSD, FreeBSD, OpenBSD, Solaris 8, AIX 5.1, SunOS 4.1.
ERORI¶
Înainte de Linux 2.6.21, mincore() nu returna informații corecte pentru cartografieri MAP_PRIVATE sau pentru cartografieri neliniare (stabilite cu ajutorul remap_file_pages(2)).
CONSULTAȚI ȘI¶
fincore(1), madvise(2), mlock(2), mmap(2), posix_fadvise(2), posix_madvise(3)
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.
2 mai 2024 | Pagini de manual Linux (nepublicate) |