Provided by:
manpages-es_1.55-10_all 
NOMBRE
mpool - deposito de buffers de memoria compartida
SINOPSIS
#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, u_int flags);
int
mpool_put (MPOOL *mp, void *pgaddr, u_int flags);
int
mpool_sync (MPOOL *mp);
int
mpool_close (MPOOL *mp);
DESCRIPCI'ON
Mpool es la interfaz de biblioteca destinada a proporcionar un manejo
de buffers de fichero orientado a paginas. Los buffers pueden ser
compartidos entre procesos.
La funcion mpool_open inicializa un deposito de memoria. El argumento
key es la cadena de bytes usada para negociar entre varios procesos que
desean compartir buffers. Si los buffers de fichero se asocian a
memoria compartida, todos los procesos que usen la misma clave
compartiran los buffers. Si key es NULL, los buffers se asocian a una
memoria privada. El argumento fd es un descriptor de fichero para el
fichero subyacente, que debe soportar el posicionamiento del puntero de
lectura/escritura (es decir, las busquedas). Si key no es NULL y
coincide con un fichero que ya esta asociado, el argumento fd se
ignorara.
El argumento pagesize es el tamano, en bytes, de las paginas en las que
se descompone el fichero. El argumento maxcache es el numero maximo de
paginas del fichero subyacente a colocar en cache en todo momento.
Esta valor no es relativo al numero de procesos que comparten los
buffers de un fichero, pero sera el mayor valor especificado por
cualquiera de los procesos que compartan el fichero.
La funcion mpool_filter esta destinada a hacer transparente el
procesamiento de la entrada y la salida de las posibles paginas. Si se
especifica la funcion pgin, se llamara cada vez que se lea un buffer al
deposito de memoria procedente del fichero de respaldo. Si se
especifica la funcion pgout, se llamara cada vez que un buffer se
escriba en el fichero de respaldo. Ambas funciones se llaman con el
puntero pgcookie, el numero de pagina y un puntero a la pagina a leer o
escribir.
La funcion mpool_new toma un puntero MPOOL y una direccion como
argumentos. Si se puede asignar una nueva pagina, se devolvera un
puntero a la pagina y el numero de pagina se almacenara en la direccion
pgnoaddr. En caso contrario, se devolvera NULL y se asignara un valor
a errno.
La funcion mpool_get toma un puntero MPOOL y un numero de pagina como
argumentos. Si la pagina existe, devolvera un puntero a la pagina. En
caso contrario, devolvera NULL y se asignara un valor a errno. El
parametro de opcion no se usa actualmente.
La funcion mpool_put desprende la pagina referenciada por pgaddr.
Pgaddr debe ser una direccion devuelta previamente por mpool_get o
mpool_new. El valor de opcion se especifica haciendo una operacion O-
logica con cualquiera de los siguientes valores:
MPOOL_DIRTY
La pagina ha sido modificada y necesita ser escrita en el
fichero de respaldo.
Mpool_put devuelve 0 en caso de exito y -1 si se produce un error.
La funcion mpool_sync escribe en el fichero de respaldo todas las
paginas modificadas asociadas con el puntero MPOOL. Mpool_sync
devuelve 0 en caso de exito y -1 si se produce un error.
La funcion mpool_close libera cualquier memoria reservada asociada con
el deposito de memoria. Las paginas modificadas no se escribiran en el
fichero de respaldo. Mpool_close devuelve 0 en caso de exito y -1 si
se produce un error.
ERRORES
La funcion mpool_open puede fallar y asignar a errno cualquiera de los
errores especificados para la rutina de biblioteca malloc(3).
La funcion mpool_get puede fallar y asignar a errno uno de los
siguiente valores:
[EINVAL] El registro solicitado no exite.
Las funciones mpool_new y mpool_get pueden fallar y asignar a errno
cualquiera de los errores especificados para las rutinas de biblioteca
read(2), write(2) y malloc(3).
La funcion mpool_sync puede fallar y asignar a errno cualquiera de los
errores especificados para la rutina de biblioteca write(2).
La funcion mpool_close puede fallar y asignar a errno cualquiera de los
errores especificados para la rutina de biblioteca free(3).
V'EASE TAMBI'EN
dbopen(3), btree(3), hash(3), recno(3)