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