Provided by: manpages-fr_1.67.0-1_all bug

NOM

       mpool,   mpool_open,  mpool_filter,  mpool_new,  mpool_get,  mpool_put,
       mpool_sync, mpool_close - Partage d’ensembles de buffers mémoires.

SYNOPSIS

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

       MPOOL *
       mpool_open (DBT *clé, 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, u_int flags);

       int
       mpool_put (MPOOL *mp, void *pgaddr, u_int flags);

       int
       mpool_sync (MPOOL *mp);

       int
       mpool_close (MPOOL *mp);

DESCRIPTION

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

       La fonction mpool_open  initialise  un  ensemble  de  buffers  mémoire.
       L’argument  cl  est  la  chaîne  d’octets utilisée pour négocier entre
       plusieurs processus désireux de partager des buffers.  Si  les  buffers
       de  fichiers  sont  projetés  en  mémoire  partagée, tous les processus
       utilisant la même clé partageront les buffers.  Si la cl est NULL, les
       buffers  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 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 buffers 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éficiée,  elle
       sera  appelée  à chaque fois qu’un buffer est lu depuis le fichier vers
       la mémoire.  Si la fonction pgout est spéficiée, elle  sera  appelée  à
       chaque fois qu’un buffer 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.   Le  paramètre  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édement 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
       buffers 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).

VOIR AUSSI

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

TRADUCTION

       Christophe Blaess, 1999-2003.