Provided by:
manpages-fr_1.67.0-1_all 
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.