readahead(2)

NUME
readahead - inițiază citirea în avans a fișierului în memoria cache a paginii

BIBLIOTECA
Biblioteca C standard (libc, -lc)

REZUMAT
#define _GNU_SOURCE             /* Consultați feature_test_macros(7) */
#define _FILE_OFFSET_BITS 64
#include <fcntl.h>

ssize_t readahead(int fd, off_t offset, size_t count);

DESCRIERE
readahead() inițiază citirea în avans „readahead” a unui fișier astfel încât citirile ulterioare din acel fișier să fie satisfăcute din memoria cache și să nu blocheze operațiile de intrare/ieșire pe disc (presupunând că citirea în avans a fost inițiată suficient de devreme și că alte activități din sistem nu au golit între timp paginile din memoria cache).

Argumentul fd este un descriptor de fișier care identifică fișierul care urmează să fie citit. Argumentul offset specifică punctul de plecare de la care trebuie citite datele, iar count specifică numărul de octeți care trebuie citiți. In/Ieș se efectuează în pagini întregi, astfel încât offset este rotunjit efectiv până la o limită de pagină, iar octeții sunt citiți până la următoarea limită de pagină mai mare sau egală cu (offset+count). readahead() nu citește dincolo de sfârșitul fișierului. Decalajul de fișier al descrierii fișierului deschis la care se face referire prin descriptorul de fișier fd rămâne neschimbat.

VALOAREA RETURNATĂ
În caz de succes, readahead() returnează 0; în caz de eșec, se returnează -1, cu errno configurată pentru a indica eroarea.

ERORI

EBADF
    fd nu este un descriptor de fișier valid sau nu este deschis pentru citire.

EINVAL
    fd nu se referă la un tip de fișier la care se poate aplica readahead().

VERSIUNI
Pe unele arhitecturi pe 32 de biți, semnătura de apelare pentru acest apel de sistem este diferită, din motivele descrise în syscall(2).

STANDARDE
Linux.

ISTORIC
Linux 2.4.13, glibc 2.3.

NOTE
_FILE_OFFSET_BITS ar trebui să fie definită ca fiind de 64 biți în codul care folosește un indicator către readahead, dacă codul este destinat să fie portabil pe platformele tradiționale x86 și ARM pe 32 de biți unde lățimea lui off_t este implicită la 32 biți.

ERORI
readahead() încearcă să programeze citirile în fundal și să se întoarcă imediat. Cu toate acestea, este posibil să se blocheze în timp ce citește metadatele din sistemul de fișiere necesare pentru a localiza blocurile solicitate. Acest lucru se întâmplă frecvent cu ext[234] în cazul fișierelor mari care utilizează blocuri indirecte în loc de „extents”, dând impresia că apelul se blochează până când datele solicitate au fost citite.

CONSULTAȚI ȘI
lseek(2), madvise(2), mmap(2), posix_fadvise(2), read(2)

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.