Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

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

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

       NOTE: cette page décrit des interfaces fournies par la glibc jusque dans  sa  version 2.1.
       Depuis la version 2.2, la glibc ne fournit plus ces interfaces. Veuillez consulter les API
       fournies par la bibliothèque libdb.

       mpool est l'interface de la bibliothèque fournissant  une  gestion  de  fichiers  par  des
       tampons mémoires découpés en pages. Les tampons peuvent être partagés entre les processus.

       La  fonction mpool_open() initialise un ensemble de tampons mémoire. L'argument key est la
       chaîne d'octets utilisée pour négocier entre plusieurs processus désireux de partager  des
       tampons.  Si les tampons de fichiers sont projetés en mémoire partagée, tous les processus
       utilisant la même clé partageront les tampons. Si la clé key vaut NULL, les  tampons  sont
       projetés  en  mémoire  privée. L'argument fd est un descripteur du fichier sous-jacent qui
       doit être accessible directement en n'importe quel point. Si la clé key n'est pas NULL  et
       correspond à un fichier déjà projeté, l'argument fd est ignoré.

       Le fichier est découpé en pages de la taille pagesize (en octets). L'argument maxcache est
       le nombre maximal de pages du fichier sous-jacent, résidant dans le  cache  à  un  instant
       donné.  Cette valeur ne dépend 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 à rendre transparent le traitement des pages en entrée et
       sortie. Si la fonction pgin est spécifiée, elle sera appelée à chaque  fois  qu'un  tampon
       est  lu  depuis  le fichier vers la mémoire. Si la fonction pgout est spécifiée, elle sera
       appelée à chaque fois qu'un tampon est écrit dans le  fichier.  Ces  deux  fonctions  sont
       appelées  avec  le pointeur pgcookie, le numéro de page, et un pointeur sur la page lue ou
       écrite.

       La fonction mpool_new() prend en argument  un  pointeur  MPOOL  et  une  adresse.  Si  une
       nouvelle  page  peut  être allouée, elle renvoie un pointeur sur cette page, et son numéro
       est stocké à l'adresse pgnoaddr. Sinon elle renvoie NULL et remplit errno.

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

       La fonction mpool_put() débloque la page référencée  par  pgaddr.  Pgaddr  doit  être  une
       adresse  que  l'on  a  obtenue  précédemment  avec  mpool_get()  ou mpool_new(). La valeur
       d'attribut flags est indiquée avec un OU binaire entre les valeurs suivantes :

       MPOOL_DIRTY
              La page a été modifiée est doit être réécrite dans le fichier.

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

       La fonction mpool_sync() écrit toutes les pages modifiées associée au pointeur MPOOL  dans
       le fichier. mpool_sync() renvoie 0 en cas de succès et -1 si une erreur se produit.

       La  fonction mpool_close() libère toute mémoire allouée pour l'ensemble de tampons mémoire
       correspondant au cookie. Les  pages  modifiées  ne  sont  pas  écrites  dans  le  fichier.
       mpool_close() renvoie 0 en cas de succès et -1 si une erreur se produit.

ERREURS

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

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

       EINVAL         L'enregistrement demandé n'existe pas.

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

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

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

CONFORMITÉ

       Absent de POSIX.1-2001. Présent sur les systèmes BSD.

VOIR AUSSI

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

COLOPHON

       Cette  page  fait partie de la publication 3.65 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

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

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

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

       Vous  pouvez  toujours  avoir  accès  à la version anglaise de ce document en utilisant la
       commande « man -L C <section> <page_de_man> ».