mpool(3)

NUME
mpool - grup de memorie tampon partajată

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <db.h>
#include <mpool.h>

MPOOL *mpool_open(DBT *key, int fd, pgno_t pagesize, pgno_t maxcache);

void mpool_filter(MPOOL *mp,
                  typeof(void (void *, pgno_t, void *)) *pgin,
                  typeof(void (void *, pgno_t, void *)) *pgout,
                  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
Notează bine: Această pagină documentează interfețele furnizate până la glibc 2.1. Începând cu glibc 2.2, glibc nu mai furnizează aceste interfețe. Probabil că, în schimb, căutați API-urile furnizate de biblioteca libdbb.

mpool este interfața de bibliotecă destinată să asigure gestionarea memoriei tampon orientată spre pagină a fișierelor. Memoriile tampon pot fi partajate între procese.

Funcția mpool_open() inițializează un grup de memorie. Argumentul key este șirul de octeți utilizat pentru a negocia între mai multe procese care doresc să împartă memorii tampon. În cazul în care memoriile tampon ale fișierelor sunt alocate în memoria partajată, toate procesele care utilizează aceeași cheie vor partaja memoriile tampon. Dacă key este NULL, tampoanele sunt alocate în memoria privată. Argumentul fd este un descriptor de fișier pentru fișierul de bază, care trebuie să poată fi căutat. În cazul în care key nu este NULL și corespunde unui fișier care este deja alocat, argumentul fd este ignorat.

Argumentul pagesize este dimensiunea, în octeți, a paginilor în care este împărțit fișierul. Argumentul maxcache este numărul maxim de pagini din fișierul de bază care trebuie să fie stocate în memoria cache la un moment dat. Această valoare nu este relativă la numărul de procese care împart memoriile tampon ale unui fișier, ci va fi cea mai mare valoare specificată de oricare dintre procesele care partajează fișierul.

Funcția mpool_filter() este menită să facă posibilă prelucrarea transparentă a paginilor la intrare și la ieșire. În cazul în care este specificată funcția pgin, aceasta este apelată de fiecare dată când o memorie tampon este citită în grupul de memorie din fișierul de suport (backing). În cazul în care este specificată funcția pgout, aceasta este apelată de fiecare dată când o memorie tampon este scrisă în fișierul de suport. Ambele funcții sunt apelate cu indicatorul pgcookie, numărul paginii și un indicator la pagina care urmează să fie citită sau scrisă.

Funcția mpool_new() primește ca argumente un indicator MPOOL și o adresă. Dacă se poate aloca o pagină nouă, se returnează un indicator la pagina respectivă, iar numărul paginii este stocat în adresa pgnoaddr. În caz contrar, se returnează NULL și se configurează errno.

Funcția mpool_get() primește ca argumente un indicator MPOOL și un număr de pagină. În cazul în care pagina există, se returnează un indicator la pagina respectivă. În caz contrar, se returnează NULL și se configurează errno. Argumentul flags nu este utilizat în prezent.

Funcția mpool_put() detașează pagina la care face referire pgaddr. pgaddr trebuie să fie o adresă returnată anterior de mpool_get() sau mpool_new(). Valoarea indicatorului este specificată prin combinarea prin OR a oricăreia dintre următoarele valori:

MPOOL_DIRTY
    Pagina a fost modificată și trebuie să fie scrisă în fișierul de rezervă.

mpool_put() returnează 0 în caz de succes și -1 dacă apare o eroare.

Funcția mpool_sync() scrie toate paginile modificate asociate cu indicatorul MPOOL în fișierul de suport. mpool_sync() returnează 0 în caz de succes și -1 în caz de eroare.

Funcția mpool_close() eliberează orice memorie alocată asociată cu modulul cookie al grupului de memorie. Paginile modificate nu sunt scrise în fișierul de suport. mpool_close() returnează 0 în caz de succes și -1 dacă apare o eroare.

ERORI-IEȘIRE
Funcția mpool_open() poate eșua și configura errno pentru oricare dintre erorile specificate pentru rutina de bibliotecă malloc(3).

Funcția mpool_get() poate eșua și configura errno pentru următoarele situații:

EINVAL
    Înregistrarea solicitată nu există.

Funcțiile mpool_new() și mpool_get() pot eșua și pot configura errno pentru oricare dintre erorile specificate pentru rutinele de bibliotecă read(2), write(2) și malloc(3).

Funcția mpool_sync() poate eșua și configura errno pentru oricare dintre erorile specificate pentru rutina de bibliotecă write(2).

Funcția mpool_close() poate eșua și configura errno pentru oricare dintre erorile specificate pentru rutina de bibliotecă free(3).

STANDARDE
BSD.

CONSULTAȚI ȘI
btree(3), dbopen(3), hash(3), recno(3)

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) 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.