mincore(2)

NUME
mincore - determină dacă paginile sunt rezidente în memorie

BIBLIOTECA
Biblioteca C standard (libc, -lc)

REZUMAT
#include <sys/mman.h>

int mincore(void addr[.length], size_t length, unsigned char *vec);

    Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

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
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 creată de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) 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.