Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section3 - Sous-fonctions]
MPOOL
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- ERREURS
- CONFORMITÉ À
- VOIR AUSSI
- TRADUCTION
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 *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 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 clé 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é est 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é 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éficié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éficié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. 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é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
dbopen(3), btree(3), hash(3), recno(3)
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.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».
|