Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       posix_fadvise - predeclară un model de acces pentru datele din fișiere

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <fcntl.h>

       int posix_fadvise(int fd, off_t offset, off_t len, int advice);

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

       posix_fadvise():
           _POSIX_C_SOURCE >= 200112L

DESCRIERE

       Programele pot utiliza posix_fadvise() pentru a anunța intenția de a accesa în viitor datele unui fișier
       după un anumit model, permițând astfel nucleului să efectueze optimizările corespunzătoare.

       Argumentul advice se aplică unei regiuni (care nu este neapărat existentă) care începe la offset și se
       extinde pe o lungime de len octeți (sau până la sfârșitul fișierului dacă len este 0) în cadrul
       fișierului la care face referire fd. fd nu este obligatoriu; el constituie doar o așteptare din partea
       aplicației.

       Valorile admise pentru advice includ:

       POSIX_FADV_NORMAL
              Indică  faptul  că  aplicația nu are nici o indicație „advice” de dat cu privire la modelul său de
              acces pentru datele specificate.  În cazul în care nu  se  oferă  niciun  sfat  pentru  un  fișier
              deschis, aceasta este presupunerea implicită.

       POSIX_FADV_SEQUENTIAL
              Aplicația  se  așteaptă  să  acceseze  datele specificate în mod secvențial (cu citirea pozițiilor
              inferioare înaintea celor superioare).

       POSIX_FADV_RANDOM
              Datele specificate vor fi accesate în ordine aleatorie.

       POSIX_FADV_NOREUSE
              Datele specificate vor fi accesate o singură dată.

              Înainte de Linux 2.6.18, POSIX_FADV_NOREUSE avea  aceeași  semantică  ca  și  POSIX_FADV_WILLNEED.
              Aceasta era probabil o eroare; începând cu Linux 2.6.18, acest fanion nu mai este operațional.

       POSIX_FADV_WILLNEED
              Datele specificate vor fi accesate în viitorul apropiat.

              POSIX_FADV_WILLNEED  inițiază  o  citire  fără  blocaj  a regiunii specificate în memoria cache de
              pagină. Cantitatea de date citite poate fi diminuată de către  nucleu  în  funcție  de  încărcarea
              memoriei  virtuale; (câțiva megaocteți vor fi de obicei pe deplin satisfăcători, iar mai mult este
              rareori util).

       POSIX_FADV_DONTNEED
              Datele specificate nu vor fi accesate în viitorul apropiat.

              POSIX_FADV_DONTNEED încearcă  să  elibereze  paginile  din  memoria  cache  asociate  cu  regiunea
              specificată.  Acest lucru este util, de exemplu, în timpul transmiterii în flux a fișierelor mari.
              Un program poate solicita periodic nucleului să elibereze datele din memoria cache  care  au  fost
              deja utilizate, astfel încât paginile mai utile din memoria cache să nu fie eliminate în schimb.

              Solicitările  de  eliminare  a  paginilor  parțiale  sunt ignorate. Este preferabil să se păstreze
              datele necesare decât să se renunțe la datele inutile. Dacă aplicația cere ca datele să fie  luate
              în considerare pentru a fi eliminate, atunci offset și len trebuie să fie aliniate la pagină.

              Implementarea  poate  încerca  să  scrie  înapoi  paginile „murdare” (scrise parțial) din regiunea
              specificată, dar acest lucru nu este  garantat.  Toate  paginile  „murdare”  nescrise  nu  vor  fi
              eliberate. Dacă aplicația dorește să se asigure că paginile „murdare” vor fi eliberate, trebuie să
              apeleze mai întâi fsync(2) sau fdatasync(2).

VALOAREA RETURNATĂ

       În caz de succes, se returnează zero. În caz de eroare, se returnează un număr de eroare.

ERORI-IEȘIRE

       EBADF  Argumentul fd nu este un descriptor de fișier valid.

       EINVAL A fost specificată o valoare nevalidă pentru advice.

       ESPIPE Descriptorul  de  fișier  specificat  se  referă  la  o  conductă  sau  FIFO; (ESPIPE este eroarea
              specificată de POSIX, dar înainte de Linux 2.6.16, Linux a returnat EINVAL în acest caz).

VERSIUNI

       În Linux, POSIX_FADV_NORMAL stabilește fereastra de citire-anticipată  la  dimensiunea  implicită  pentru
       dispozitivul   respectiv;   POSIX_FADV_SEQUENTIAL  dublează  această  dimensiune,  iar  POSIX_FADV_RANDOM
       dezactivează complet citirea-anticipată de fișiere. Aceste modificări afectează întregul fișier, nu  doar
       regiunea specificată (dar alte gestionări de fișiere deschise pentru același fișier nu sunt afectate).

   Diferențe între biblioteca C și nucleu
       Numele funcției de învăluire din biblioteca C este posix_fadvise(). Apelul de sistem subiacent se numește
       fadvise64()  (sau,  pe unele arhitecturi, fadvise64_64()); diferența dintre cele două este că primul apel
       de sistem presupune că tipul argumentului len este size_t, în timp ce al doilea se așteaptă ca loff_t  să
       fie acolo.

   Variante specifice arhitecturii
       Unele  arhitecturi  necesită  ca  argumentele  pe  64  de biți să fie aliniate într-o pereche adecvată de
       registre (a se vedea syscall(2) pentru mai multe detalii). Pe astfel de arhitecturi, semnătura de apelare
       a posix_fadvise() prezentată în SINOPSIS ar forța irosirea unui registru ca umplutură  între  argumentele
       fd  și offset. Prin urmare, aceste arhitecturi definesc o versiune a apelului de sistem care ordonează în
       mod corespunzător argumentele, dar care, în rest, este exact la fel ca posix_fadvise().

       De exemplu, începând cu Linux 2.6.14, ARM are următorul apel de sistem:

           long arm_fadvise64_64(int fd, int advice,
                                 loff_t offset, loff_t len);

       Aceste detalii specifice arhitecturii  sunt,  în  general,  ascunse  aplicațiilor  de  către  funcția  de
       învăluire glibc posix_fadvise(), care invocă apelul de sistem specific arhitecturii corespunzătoare.

STANDARDE

       POSIX.1-2008.

ISTORIC

       POSIX.1-2001.

       Suportul  pentru nucleu a apărut pentru prima dată în Linux 2.5.60; apelul de sistem subiacent se numește
       fadvise64(). Suportul pentru bibliotecă a fost furnizat începând cu glibc 2.2, prin intermediul  funcției
       de învăluire posix_fadvise().

       Începând  cu Linux 3.18, suportul pentru apelul de sistem subiacent este opțional, în funcție de valoarea
       opțiunii de configurare CONFIG_ADVISE_SYSCALLS.

       Tipul argumentului len a fost schimbat din size_t în off_t în POSIX.1-2001 TC1.

NOTE

       Conținutul   cache-ului   tampon   al   nucleului   poate   fi   șters   prin   intermediul    interfeței
       /proc/sys/vm/drop_caches descrisă în proc(5).

       Se  poate  obține  o imagine instantanee a paginilor dintr-un fișier care se află în memoria cache tampon
       deschizând un fișier, cartografiindu-l cu mmap(2) și apoi aplicând mincore(2) la cartografiere.

ERORI

       Înainte de Linux 2.6.6, dacă len era specificat ca fiind 0, atunci acest lucru era interpretat literal ca
       fiind „zero octeți”, în loc să însemne „toți octeții până la sfârșitul fișierului”.

CONSULTAȚI ȘI

       fincore(1), mincore(2), readahead(2), sync_file_range(2), posix_fallocate(3), 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.

Pagini de manual de Linux 6.9.1                    2 mai 2024                                   posix_fadvise(2)