Scroll to navigation

msync(2) System Calls Manual msync(2)

NUME

msync - sincronizează un fișier cu o hartă din memorie

BIBLIOTECA

Biblioteca C standard (libc, -lc)

REZUMAT

#include <sys/mman.h>
int msync(void addr[.length], size_t length, int flags);

DESCRIERE

msync() trimite înapoi în sistemul de fișiere modificările aduse copiei din nucleu a unui fișier care a fost cartografiat în memorie utilizând mmap(2). Fără utilizarea acestui apel, nu există nicio garanție că modificările sunt scrise înapoi înainte de apelarea munmap(2). Pentru a fi mai precis, partea din fișier care corespunde zonei de memorie care începe la addr și are lungimea length este actualizată.

Argumentul flags trebuie să specifice exact unul dintre MS_ASYNC și MS_SYNC și poate include în plus bitul MS_INVALIDATE. Acești biți au următoarele semnificații:

Precizează că o actualizare este planificată, dar apelul se întoarce imediat.
Solicită o actualizare și așteaptă ca aceasta să fie finalizată.
Solicită invalidarea altor hărți ale aceluiași fișier (astfel încât acestea să poată fi actualizate cu valorile noi care tocmai au fost scrise).

VALOAREA RETURNATĂ

În caz de succes, se returnează zero. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI

MS_INVALIDATE a fost specificat în flags și există o blocare a memoriei pentru intervalul de adrese specificat.
addr nu este un multiplu de PAGESIZE; sau orice alt bit decât MS_ASYNC | MS_INVALIDATE | MS_SYNC este definit în flags; sau atât MS_SYNC cât și MS_ASYNC sunt definite în flags.
Memoria indicată (sau o parte a acesteia) nu a fost cartografiată.

STANDARDE

POSIX.1-2001, POSIX.1-2008.

Acest apel a fost introdus în Linux 1.3.21, iar atunci se folosea EFAULT în loc de ENOMEM. În Linux 2.4.19, aceasta a fost schimbată cu valoarea POSIX ENOMEM.

Pe sistemele POSIX pe care este disponibil msync(), atât _POSIX_MAPPED_FILES, cât și _POSIX_SYNCHRONIZED_IO sunt definite în <unistd.h> la o valoare mai mare decât 0. (A se vedea, de asemenea, sysconf(3).)

NOTE

În conformitate cu POSIX, fie MS_SYNC, fie MS_ASYNC trebuie să fie specificat în flags și, într-adevăr, dacă nu se include unul dintre aceste fanioane, msync() va eșua pe unele sisteme. Cu toate acestea, Linux permite un apel la msync() care nu specifică niciunul dintre acești indicatori, cu o semantică care este (în prezent) echivalentă cu specificarea MS_ASYNC. (Începând cu Linux 2.6.19, MS_ASYNC este, de fapt, o non-opțiune, deoarece nucleul urmărește în mod corespunzător paginile modificate și le elimină din memorie în funcție de necesități). În pofida comportamentului Linux, aplicațiile portabile și cu perspective de viitor ar trebui să se asigure că specifică fie MS_SYNC, fie MS_ASYNC în flags.

CONSULTAȚI ȘI

mmap(2)

B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128–129 și 389–391.

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

5 februarie 2023 Pagini de manual de Linux 6.03