Provided by: manpages-fr-dev_4.27.0-1_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

       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>,    David    Prévot
       <david@tilapin.org>,   Thomas   Vincent    <tvincent@debian.org>    et    Jean-Pierre    Giraud    <jean-
       pierregiraud@neuf.fr>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General Public License
       version 3 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.

4.4 Berkeley Distribution                          2 mai 2024                                           mpool(3)