readahead(2) System Calls Manual readahead(2)

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

Biblioteca C standard (libc, -lc)

#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);

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.

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

ERORI-IEȘIRE

fd nu este un descriptor de fișier valid sau nu este deschis pentru citire.
fd nu se referă la un tip de fișier la care se poate aplica readahead().

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).

Linux.

Linux 2.4.13, glibc 2.3.

_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.

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.

lseek(2), madvise(2), mmap(2), posix_fadvise(2), read(2)

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 de Linux 6.8