.\" -*- coding: UTF-8 -*- .\" Copyright 2003 Abhijit Menon-Sen .\" and Copyright (C) 2010, 2015, 2017 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" 2005-04-08 mtk, noted kernel version and added BUGS .\" 2010-10-09, mtk, document arm_fadvise64_64() .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH posix_fadvise 2 "20 noiembrie 2024" "Pagini de manual de Linux 6.12" .SH NUME posix_fadvise \- predeclară un model de acces pentru datele din fișiere .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH SINOPSIS .nf \fB#include \fP .P \fBint posix_fadvise(int \fP\fIfd\fP\fB, off_t \fP\fIoffset\fP\fB, off_t \fP\fIsize\fP\fB, int \fP\fIadvice\fP\fB);\fP .fi .P .ad l .RS -4 Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați \fBfeature_test_macros\fP(7)): .RE .P \fBposix_fadvise\fP(): .nf _POSIX_C_SOURCE >= 200112L .fi .SH DESCRIERE Programele pot utiliza \fBposix_fadvise\fP() 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. .P Argumentul \fIadvice\fP se aplică unei regiuni (care nu este neapărat existentă) care începe la \fIoffset\fP și se extinde pe o lungime de \fIlen\fP octeți (sau până la sfârșitul fișierului dacă \fIlen\fP este 0) în cadrul fișierului la care face referire \fIfd\fP. \fIfd\fP nu este obligatoriu; el constituie doar o așteptare din partea aplicației. .P Valorile admise pentru \fIadvice\fP includ: .TP \fBPOSIX_FADV_NORMAL\fP 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ă. .TP \fBPOSIX_FADV_SEQUENTIAL\fP Aplicația se așteaptă să acceseze datele specificate în mod secvențial (cu citirea pozițiilor inferioare înaintea celor superioare). .TP \fBPOSIX_FADV_RANDOM\fP Datele specificate vor fi accesate în ordine aleatorie. .TP \fBPOSIX_FADV_NOREUSE\fP Datele specificate vor fi accesate o singură dată. .IP Înainte de Linux 2.6.18, \fBPOSIX_FADV_NOREUSE\fP avea aceeași semantică ca \fBPOSIX_FADV_WILLNEED\fP. Aceasta a fost probabil o eroare; de la Linux 2.6.18 până la Linux 6.2, acest fanion a fost un no\-op. Începând cu Linux 6.3, \fBPOSIX_FADV_NOREUSE\fP semnalează faptul că algoritmul de înlocuire a paginilor din nucleu poate ignora accesul la memoria cache a paginilor cartografiate marcate de acest fanion. Acest lucru este util, de exemplu, în timpul transmiterii de fișiere mari. .TP \fBPOSIX_FADV_WILLNEED\fP Datele specificate vor fi accesate în viitorul apropiat. .IP \fBPOSIX_FADV_WILLNEED\fP 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). .TP \fBPOSIX_FADV_DONTNEED\fP Datele specificate nu vor fi accesate în viitorul apropiat. .IP \fBPOSIX_FADV_DONTNEED\fP î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. .IP 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 \fIoffset\fP și \fIsize\fP trebuie să fie aliniate la pagină. .IP Implementarea \fIpoate\fP î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 \fBfsync\fP(2) sau \fBfdatasync\fP(2). .SH "VALOAREA RETURNATĂ" În caz de succes, se returnează zero. În caz de eroare, se returnează un număr de eroare. .SH ERORI\-IEȘIRE .TP \fBEBADF\fP Argumentul \fIfd\fP nu este un descriptor de fișier valid. .TP \fBEINVAL\fP A fost specificată o valoare nevalidă pentru \fIadvice\fP. .TP \fBESPIPE\fP .\" commit 87ba81dba431232548ce29d5d224115d0c2355ac Descriptorul de fișier specificat se referă la o conductă sau FIFO; (\fBESPIPE\fP este eroarea specificată de POSIX, dar înainte de Linux 2.6.16, Linux a returnat \fBEINVAL\fP în acest caz). .SH VERSIUNI În Linux, \fBPOSIX_FADV_NORMAL\fP stabilește fereastra de citire\-anticipată la dimensiunea implicită pentru dispozitivul de rezervă; \fBPOSIX_FADV_SEQUENTIAL\fP dublează această dimensiune, iar \fBPOSIX_FADV_RANDOM\fP dezactivează complet citire\-anticipată a fișierelor. \fBPOSIX_FADV_NOREUSE\fP nu modifică dimensiunea ferestrei de citire\-anticipată. Aceste modificări afectează întregul fișier, nu doar regiunea specificată (dar alte gestionare de fișier deschise pentru același fișier nu sunt afectate). .SS "Diferențe între biblioteca C și nucleu" Numele funcției de învăluire din biblioteca C este \fBposix_fadvise\fP(). Apelul de sistem subiacent se numește \fBfadvise64\fP() (sau, pe unele arhitecturi, \fBfadvise64_64\fP()); diferența dintre cele două este că primul apel de sistem presupune că tipul argumentului \fIlen\fP este \fIsize_t\fP, în timp ce al doilea se așteaptă ca \fIloff_t\fP să fie acolo. .SS "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 \fBsyscall\fP(2) pentru mai multe detalii). Pe astfel de arhitecturi, semnătura de apelare a \fBposix_fadvise\fP() prezentată în SINOPSIS ar forța irosirea unui registru ca umplutură între argumentele \fIfd\fP și \fIoffset\fP. 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 \fBposix_fadvise\fP(). .P De exemplu, începând cu Linux 2.6.14, ARM are următorul apel de sistem: .P .in +4n .EX \fBlong arm_fadvise64_64(int \fP\fIfd\fP\fB, int \fP\fIadvice\fP\fB,\fP \fB loff_t \fP\fIoffset\fP\fB, loff_t \fP\fIsize\fP\fB);\fP .EE .in .P Aceste detalii specifice arhitecturii sunt, în general, ascunse aplicațiilor de către funcția de învăluire glibc \fBposix_fadvise\fP(), care invocă apelul de sistem specific arhitecturii corespunzătoare. .SH STANDARDE POSIX.1\-2008. .SH ISTORIC POSIX.1\-2001. .P .\" of fadvise64_64() Suportul pentru nucleu a apărut pentru prima dată în Linux 2.5.60; apelul de sistem subiacent se numește \fBfadvise64\fP(). Suportul pentru bibliotecă a fost furnizat începând cu glibc 2.2, prin intermediul funcției de învăluire \fBposix_fadvise\fP(). .P .\" commit d3ac21cacc24790eb45d735769f35753f5b56ceb Începând cu Linux 3.18, suportul pentru apelul de sistem subiacent este opțional, în funcție de valoarea opțiunii de configurare \fBCONFIG_ADVISE_SYSCALLS\fP. .P Tipul argumentului \fIsize\fP a fost schimbat din \fIsize_t\fP în \fIoff_t\fP în POSIX.1\-2001 TC1. .SH NOTE Conținutul cache\-ului tampon al nucleului poate fi șters prin intermediul interfeței \fI/proc/sys/vm/drop_caches\fP descrisă în \fBproc\fP(5). .P 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 \fBmmap\fP(2) și apoi aplicând \fBmincore\fP(2) la cartografiere. .SH ERORI Înainte de Linux 2.6.6, dacă \fIlsize\fP 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”. .SH "CONSULTAȚI ȘI" \fBfincore\fP(1), \fBmincore\fP(2), \fBreadahead\fP(2), \fBsync_file_range\fP(2), \fBposix_fallocate\fP(3), \fBposix_madvise\fP(3) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .