mpool(3) Library Functions Manual mpool(3) NUME mpool - grup de memorie tampon partajata BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include #include MPOOL *mpool_open(DBT *key, int fd, pgno_t pagesize, pgno_t maxcache); void mpool_filter(MPOOL *mp, void (*pgin)(void *, pgno_t, void *), void (*pgout)(void *, pgno_t, void *), void *pgcookie); void *mpool_new(MPOOL *mp, pgno_t *pgnoaddr); void *mpool_get(MPOOL *mp, pgno_t pgno, unsigned int flags); int mpool_put(MPOOL *mp, void *pgaddr, unsigned int flags); int mpool_sync(MPOOL *mp); int mpool_close(MPOOL *mp); DESCRIERE Noteaza bine: Aceasta pagina documenteaza interfeele furnizate pana la glibc 2.1. Incepand cu glibc 2.2, glibc nu mai furnizeaza aceste interfee. Probabil ca, in schimb, cautai API-urile furnizate de biblioteca libdbb. mpool este interfaa de biblioteca destinata sa asigure gestionarea memoriei tampon orientata spre pagina a fiierelor. Memoriile tampon pot fi partajate intre procese. Funcia mpool_open() iniializeaza un grup de memorie. Argumentul key este irul de octei utilizat pentru a negocia intre mai multe procese care doresc sa imparta memorii tampon. In cazul in care memoriile tampon ale fiierelor sunt alocate in memoria partajata, toate procesele care utilizeaza aceeai cheie vor partaja memoriile tampon. Daca key este NULL, tampoanele sunt alocate in memoria privata. Argumentul fd este un descriptor de fiier pentru fiierul de baza, care trebuie sa poata fi cautat. In cazul in care key nu este NULL i corespunde unui fiier care este deja alocat, argumentul fd este ignorat. Argumentul pagesize este dimensiunea, in octei, a paginilor in care este imparit fiierul. Argumentul maxcache este numarul maxim de pagini din fiierul de baza care trebuie sa fie stocate in memoria cache la un moment dat. Aceasta valoare nu este relativa la numarul de procese care impart memoriile tampon ale unui fiier, ci va fi cea mai mare valoare specificata de oricare dintre procesele care partajeaza fiierul. Funcia mpool_filter() este menita sa faca posibila prelucrarea transparenta a paginilor la intrare i la ieire. In cazul in care este specificata funcia pgin, aceasta este apelata de fiecare data cand o memorie tampon este citita in grupul de memorie din fiierul de suport (backing). In cazul in care este specificata funcia pgout, aceasta este apelata de fiecare data cand o memorie tampon este scrisa in fiierul de suport. Ambele funcii sunt apelate cu indicatorul pgcookie, numarul paginii i un indicator la pagina care urmeaza sa fie citita sau scrisa. Funcia mpool_new() primete ca argumente un indicator MPOOL i o adresa. Daca se poate aloca o pagina noua, se returneaza un indicator la pagina respectiva, iar numarul paginii este stocat in adresa pgnoaddr. In caz contrar, se returneaza NULL i se configureaza errno. Funcia mpool_get() primete ca argumente un indicator MPOOL i un numar de pagina. In cazul in care pagina exista, se returneaza un indicator la pagina respectiva. In caz contrar, se returneaza NULL i se configureaza errno. Argumentul flags nu este utilizat in prezent. Funcia mpool_put() detaeaza pagina la care face referire pgaddr. pgaddr trebuie sa fie o adresa returnata anterior de mpool_get() sau mpool_new(). Valoarea indicatorului este specificata prin combinarea prin OR a oricareia dintre urmatoarele valori: MPOOL_DIRTY Pagina a fost modificata i trebuie sa fie scrisa in fiierul de rezerva. mpool_put() returneaza 0 in caz de succes i -1 daca apare o eroare. Funcia mpool_sync() scrie toate paginile modificate asociate cu indicatorul MPOOL in fiierul de suport. mpool_sync() returneaza 0 in caz de succes i -1 in caz de eroare. Funcia mpool_close() elibereaza orice memorie alocata asociata cu modulul cookie al grupului de memorie. Paginile modificate nu sunt scrise in fiierul de suport. mpool_close() returneaza 0 in caz de succes i -1 daca apare o eroare. ERORI-IEIRE Funcia mpool_open() poate eua i configura errno pentru oricare dintre erorile specificate pentru rutina de biblioteca malloc(3). Funcia mpool_get() poate eua i configura errno pentru urmatoarele situaii: EINVAL Inregistrarea solicitata nu exista. Funciile mpool_new() i mpool_get() pot eua i pot configura errno pentru oricare dintre erorile specificate pentru rutinele de biblioteca read(2), write(2) i malloc(3). Funcia mpool_sync() poate eua i configura errno pentru oricare dintre erorile specificate pentru rutina de biblioteca write(2). Funcia mpool_close() poate eua i configura errno pentru oricare dintre erorile specificate pentru rutina de biblioteca free(3). STANDARDE BSD. CONSULTAI I btree(3), dbopen(3), hash(3), recno(3) 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 . 4.4 Berkeley Distribution 2 mai 2024 mpool(3)