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);
DESCRIPTION¶
NOTE: cette page décrit des interfaces founies par la glibc jusque
dans sa version 2.1. Depuis la version 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).
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.44 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¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Florentin Duneau et
l'équipe francophone de traduction de Debian (2006-2009).
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> ».