Loading

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

       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.23 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

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

       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> ».