remap_file_pages(2) System Calls Manual remap_file_pages(2) NUME remap_file_pages - creeaza o cartografiere neliniara a fiierelor BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #define _GNU_SOURCE /* A se vedea feature_test_macros(7) */ #include [[depreciat]] int remap_file_pages(void addr[.size], size_t size, int prot, size_t pgoff, int flags); DESCRIERE Nota: acest apel de sistem a fost marcat ca fiind depreciat incepand cu Linux 3.16. In Linux 4.0, implementarea a fost inlocuita cu o emulaie in nucleu mai lenta. Acele cateva aplicaii care utilizeaza acest apel de sistem ar trebui sa ia in considerare migrarea catre alternative. Aceasta modificare a fost facuta deoarece codul nucleului pentru acest apel de sistem era complex i se crede ca este puin utilizat sau poate chiar complet nefolosit. Dei a avut unele cazuri de utilizare in aplicaiile de baze de date pe sisteme pe 32 de bii, aceste cazuri de utilizare nu exista pe sistemele pe 64 de bii. Apelul de sistem remap_file_pages() este utilizat pentru a crea o cartografiere neliniara, adica o cartografiere in care paginile fiierului sunt cartografiate intr-o ordine nesecveniala in memorie. Avantajul utilizarii remap_file_pages() faa de utilizarea apelurilor repetate la mmap(2) consta in faptul ca prima abordare nu necesita ca nucleul sa creeze structuri de date suplimentare VMA (Virtual Memory Area). Pentru a crea o cartografiere neliniara, efectuam urmatorii pai: 1. Utilizai mmap(2) pentru a crea o cartografiere (care este iniial liniara). Aceasta cartografiere trebuie sa fie creata cu indicatorul MAP_SHARED. 2. Utilizai unul sau mai multe apeluri la remap_file_pages() pentru a rearanja corespondena dintre paginile din cartografiere i paginile din fiier. Este posibil sa se cartografieze aceeai pagina a unui fiier in mai multe locaii din regiunea cartografiata. Argumentele pgoff i size specifica regiunea din fiier care trebuie realocata in cadrul cartografierii: pgoff este un interval al fiierului in unitai de dimensiune a paginii de sistem; size este lungimea regiunii in octei. Argumentul addr are doua scopuri. In primul rand, identifica cartografierea ale carei pagini dorim sa le rearanjam. Astfel, addr trebuie sa fie o adresa care sa se incadreze intr-o regiune cartografiata anterior printr-un apel la mmap(2). In al doilea rand, addr specifica adresa la care vor fi plasate paginile de fiier identificate de pgoff i size. Valorile specificate in addr i size trebuie sa fie multiplii dimensiunii paginii de sistem. Daca nu sunt, atunci nucleul rotunjete valorile both down la cel mai apropiat multiplu al dimensiunii paginii. Argumentul prot trebuie sa fie specificat ca fiind 0. Argumentul prot trebuie sa fie specificat ca fiind 0. Argumentul flags are aceeai semnificaie ca i pentru mmap(2), dar toate fanioanele, altele decat MAP_NONBLOCK, sunt ignorate. VALOAREA RETURNATA In caz de succes, remap_file_pages() returneaza 0. In caz de eroare, se returneaza -1, iar errno este configurata pentru a indica eroarea. ERORI-IEIRE EINVAL addr nu se refera la o cartografiere valida creata cu indicatorul MAP_SHARED. EINVAL addr, size, prot, sau pgoff nu este valid. STANDARDE Linux. ISTORIC Linux 2.5.46, glibc 2.3.3. NOTE Incepand cu Linux 2.6.23, remap_file_pages() creeaza cartografieri neliniare numai pe sistemele de fiiere in memorie, cum ar fi tmpfs(5), hugetlbfs sau ramfs. Pe sistemele de fiiere cu o memorie de rezerva, remap_file_pages() nu este mult mai eficient decat utilizarea mmap(2) pentru a ajusta ce pari ale fiierului sunt cartografiate la ce adrese. CONSULTAI I getpagesize(2), mmap(2), mmap2(2), mprotect(2), mremap(2), msync(2) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 remap_file_pages(2)