get_mempolicy(2) System Calls Manual get_mempolicy(2) NUME get_mempolicy - recupereaza politica de memorie NUMA pentru un fir de execuie BIBLIOTECA Biblioteca de politici NUMA (,,Non-Uniform Memory Access": acces neuniform la memorie) (libnuma, -lnuma) REZUMAT #include long get_mempolicy(int *mode, unsigned long nodemask[(.maxnode + ULONG_WIDTH - 1) / ULONG_WIDTH], unsigned long maxnode, void *addr, unsigned long flags); DESCRIERE get_mempolicy() recupereaza politica NUMA a firului apelant sau a unei adrese de memorie, in funcie de valoarea lui flags. O maina NUMA are diferite controloare de memorie cu distane diferite faa de diferitele CPU-uri. Politica de memorie definete din ce nod este alocata memoria pentru firul de execuie. Daca flags este specificat ca fiind 0, atunci sunt returnate informaii despre politica implicita a firului apelant (aa cum a fost stabilita de set_mempolicy(2)), in memoriile tampon indicate de mode i nodemask. Valoarea returnata in aceste argumente poate fi utilizata pentru a readuce politica firului la starea sa din momentul apelului la get_mempolicy() folosind set_mempolicy(2). Atunci cand flags este 0, addr trebuie sa fie specificat ca NULL. Daca flags specifica MPOL_F_MEMS_ALLOWED (disponibil incepand cu Linux 2.6.24), argumentul mode este ignorat, iar setul de noduri (memorii) pe care firul de execuie are voie sa le specifice in apelurile ulterioare catre mbind(2) sau set_mempolicy(2) (in absena oricarui indicator mode flags) este returnat in nodemask. Nu este permisa combinarea MPOL_F_MEMS_ALLOWED cu MPOL_F_ADDR sau MPOL_F_NODE. In cazul in care flags specifica MPOL_F_ADDR, atunci sunt returnate informaii despre politica care guverneaza adresa de memorie indicata in addr. Aceasta politica poate fi diferita de politica implicita a firului de execuie daca mbind(2) sau una dintre funciile de ajutor descrise in numa(3) a fost utilizata pentru a stabili o politica pentru intervalul de memorie care conine addr. Daca argumentul mode nu este NULL, atunci get_mempolicy() va stoca modul de politica i orice indicatori opionali mode flags ai politicii NUMA solicitate in locaia indicata de acest argument. Daca nodemask nu este NULL, atunci masca de nod asociata politicii va fi stocata in locaia indicata de acest argument. maxnode specifica numarul de ID-uri de nod care pot fi stocate in nodemask, adica ID-ul maxim de nod plus unu. Valoarea specificata de maxnode este intotdeauna rotunjita la un multiplu de sizeof(unsigned long)*8. Daca flags specifica atat MPOL_F_NODE, cat i MPOL_F_ADDR, get_mempolicy() va returna ID-ul nodului pe care adresa addr este alocata in locaia indicata de mode. In cazul in care nu a fost alocata inca nicio pagina pentru adresa specificata, get_mempolicy() va aloca o pagina ca i cum firul de execuie ar fi efectuat un acces de citire (incarcare) la adresa respectiva i va returna ID-ul nodului in care a fost alocata pagina respectiva. In cazul in care flags specifica MPOL_F_NODE, dar nu MPOL_F_ADDR, iar politica curenta a firului este MPOL_INTERLEAVE, atunci get_mempolicy() va returna in locaia indicata de un argument mode non-NULL, ID-ul de nod al nodului urmator care va fi utilizat pentru intercalarea paginilor interne ale nucleului alocate in numele firului. Aceste alocari includ paginile pentru fiiere alocate in memorie in intervalele de memorie ale procesului, alocate cu ajutorul apelului mmap(2) cu indicatorul MAP_PRIVATE pentru accesari de citire i in intervalele de memorie alocate cu indicatorul MAP_SHARED pentru toate accesarile. Alte valori ale fanionului sunt rezervate. Pentru o prezentare generala a politicilor posibile, a se vedea set_mempolicy(2). VALOAREA RETURNATA In caz de succes, get_mempolicy() returneaza 0; in caz de eroare, se returneaza -1, iar errno este configurata pentru a indica eroarea. ERORI-IEIRE EFAULT O parte din tot intervalul de memorie specificat de nodemask i maxnode indica in afara spaiului de adrese accesibil. EINVAL Valoarea specificata de maxnode este mai mica decat numarul de ID-uri de noduri acceptate de sistem. Sau flags a specificat alte valori decat MPOL_F_NODE sau MPOL_F_ADDR; sau flags a specificat MPOL_F_ADDR i addr este NULL, sau flags nu a specificat MPOL_F_ADDR i addr nu este NULL. Sau, flags a specificat MPOL_F_NODE, dar nu MPOL_F_ADDR, iar politica curenta a firelor nu este MPOL_INTERLEAVE. Sau, flags a specificat MPOL_F_MEMS_ALLOWED fie cu MPOL_F_ADDR, fie cu MPOL_F_NODE; (i mai exista i alte cazuri EINVAL). STANDARDE Linux. ISTORIC Linux 2.6.7. NOTE Pentru informaii privind suportul de biblioteca, consultai numa(7). CONSULTAI I getcpu(2), mbind(2), mmap(2), set_mempolicy(2), numa(3), numa(7), numactl(8) 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 get_mempolicy(2)