Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       mpool,   mpool_open,  mpool_filter,  mpool_new,  mpool_get,  mpool_put,
       mpool_sync, mpool_close - Partage d'ensembles de tampons memoires

SYNOPSIS

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

       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);

DESCRIPTION

       mpool est l'interface de la bibliotheque  fournissant  une  gestion  de
       fichiers  par  des  tampons  memoires  decoupes  en  pages. Les tampons
       peuvent etre partages entre les processus.

       La fonction mpool_open() initialise un  ensemble  de  tampons  memoire.
       L'argument  key  est  la  chaine  d'octets utilisee pour negocier entre
       plusieurs processus desireux de partager des tampons. Si les tampons de
       fichiers   sont  projetes  en  memoire  partagee,  tous  les  processus
       utilisant la meme cle partageront les tampons. Si la cle key vaut NULL,
       les  tampons  sont  projetes  en  memoire  privee. L'argument fd est un
       descripteur du fichier sous-jacent qui doit etre accessible directement
       en  n'importe  quel point. Si la cle key n'est pas NULL et correspond a
       un fichier deja projete, l'argument fd est ignore.

       Le fichier est decoupe en pages de  la  taille  pagesize  (en  octets).
       L'argument   maxcache  est  le  nombre  maximal  de  pages  du  fichier
       sous-jacent, residant dans le cache a un instant donne. Cette valeur ne
       depend  pas  du  nombre  de  processus qui partageront les tampons d'un
       fichier, mais la plus grande valeur de tous les processus partageant le
       fichier sera prise en compte.

       La  fonction mpool_filter() sert a rendre transparent le traitement des
       pages en entree et sortie. Si la fonction pgin est specifiee, elle sera
       appelee  a  chaque  fois  qu'un tampon est lu depuis le fichier vers la
       memoire. Si la fonction pgout est specifiee, elle sera appelee a chaque
       fois  qu'un  tampon  est ecrit dans le fichier. Ces deux fonctions sont
       appelees avec le pointeur pgcookie, le numero de page, et  un  pointeur
       sur la page lue ou ecrite.

       La  fonction  mpool_new()  prend  en  argument un pointeur MPOOL et une
       adresse. Si une nouvelle  page  peut  etre  allouee,  elle  renvoie  un
       pointeur sur cette page, et son numero est stocke a l'adresse pgnoaddr.
       Sinon elle renvoie NULL et remplit errno.

       La fonction mpool_get() prend en  argument  un  pointeur  MPOOL  et  un
       numero  de  page.  Si  la page existe, elle renvoie un pointeur dessus.
       Sinon, elle renvoie NULL et remplit errno. L'argument flags  n'est  pas
       utilise actuellement.

       La  fonction mpool_put() debloque la page referencee par pgaddr. Pgaddr
       doit etre une adresse que l'on a obtenue precedemment avec  mpool_get()
       ou  mpool_new().  La  valeur  d'attribut  flags est indiquee avec un OU
       binaire entre les valeurs suivantes :

       MPOOL_DIRTY
              La page a ete modifiee est doit etre reecrite dans le fichier.

       mpool_put() renvoie 0 en cas de succes et -1 si une erreur se produit.

       La fonction mpool_sync() ecrit toutes les pages modifiees  associee  au
       pointeur MPOOL dans le fichier. mpool_sync() renvoie 0 en cas de succes
       et -1 si une erreur se produit.

       La fonction mpool_close() libere toute memoire allouee pour  l'ensemble
       de tampons memoire correspondant au cookie. Les pages modifiees ne sont
       pas ecrites dans le fichier. mpool_close() renvoie 0 en cas  de  succes
       et -1 si une erreur se produit.

ERREURS

       La  fonction  mpool_open() peut echouer et remplir errno avec n'importe
       quel code d'erreur renvoye par la routine malloc(3).

       La fonction mpool_get() peut echouer et renvoyer  dans  errno  le  code
       suivant :

       EINVAL         L'enregistrement demande n'existe pas.

       Les  fonctions  mpool_new()  et  mpool_get() peuvent echouer et remplir
       errno avec n'importe  quel  code  d'erreur  renvoye  par  les  routines
       read(2), write(2) et malloc(3).

       La  fonction mpool_sync() peut echouer et renvoyer dans errno n'importe
       quel code d'erreur renvoye par la routine write(2).

       La fonction mpool_close() peut echouer et renvoyer dans errno n'importe
       quel code d'erreur renvoye par la routine free(3).

CONFORMIT'E

       Absent de POSIX.1-2001. Present sur les systemes BSD.

VOIR AUSSI

       btree(3), dbopen(3), hash(3), recno(3)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.27 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis 2010, cette traduction est maintenue a l'aide  de  l'outil  po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   de   traduction
       francophone       au       sein        du        projet        perkamon
       <URL:http://perkamon.alioth.debian.org/>.

       Christophe  Blaess  <URL:http://www.blaess.fr/christophe/> (1996-2003),
       Alain Portal <URL:http://manpagesfr.free.fr/>  (2003-2006).   Florentin
       Duneau et l'equipe francophone de traduction de Debian (2006-2009).

       Veuillez   signaler   toute   erreur   de   traduction  en  ecrivant  a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir acces a la version anglaise de ce document
       en utilisant la commande << man -L C <section> <page_de_man> >>.