Provided by: manpages-fr-dev_4.19.0-7_all bug

NOM

       mpool- Partage d'ensembles de tampons mémoires

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

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  jusqu'à  la  glibc 2.1.  Depuis la
       glibc 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).

STANDARDS

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

VOIR AUSSI

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

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.rafin@laposte.net>, Thierry
       Vignaud <tvignaud@mandriva.com>, François Micaux, Alain  Portal  <aportal@univ-montp2.fr>,
       Jean-Philippe    Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-
       luc.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier <barbier@debian.org> et David Prévot <david@tilapin.org>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.