Provided by: manpages-es_1.55-10_all bug

NOMBRE

       mpool - depósito 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ÓN

       Mpool  es  la  interfaz  de  biblioteca  destinada  a proporcionar un manejo de buffers de
       fichero orientado a páginas.  Los buffers pueden ser compartidos entre procesos.

       La función mpool_open inicializa un depósito 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  compartirán  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 búsquedas).
       Si key no es NULL y coincide con un fichero que ya  está  asociado,  el  argumento  fd  se
       ignorará.

       El  argumento  pagesize es el tamaño, en bytes, de las páginas en las que se descompone el
       fichero.  El argumento maxcache es el número máximo de páginas del  fichero  subyacente  a
       colocar  en  cache  en  todo momento.  Esta valor no es relativo al número de procesos que
       comparten los buffers de un fichero, pero será el mayor valor especificado por  cualquiera
       de los procesos que compartan el fichero.

       La función mpool_filter está destinada a hacer transparente el procesamiento de la entrada
       y la salida de las posibles páginas.  Si se especifica la función pgin,  se  llamará  cada
       vez que se lea un buffer al depósito de memoria procedente del fichero de respaldo.  Si se
       especifica la función pgout, se llamará cada vez que un buffer se escriba en el fichero de
       respaldo.   Ambas  funciones  se  llaman con el puntero pgcookie, el número de página y un
       puntero a la página a leer o escribir.

       La función mpool_new toma un puntero MPOOL y una dirección como argumentos.  Si  se  puede
       asignar  una  nueva  página,  se devolverá un puntero a la página y el número de página se
       almacenará en la dirección pgnoaddr.  En caso contrario, se devolverá NULL y  se  asignará
       un valor a errno.

       La  función  mpool_get toma un puntero MPOOL y un número de página como argumentos.  Si la
       página existe, devolverá un puntero a la página.  En caso contrario, devolverá NULL  y  se
       asignará un valor a errno.  El parámetro de opción no se usa actualmente.

       La  función  mpool_put  desprende  la página referenciada por pgaddr.  Pgaddr debe ser una
       dirección devuelta  previamente  por  mpool_get  o  mpool_new.   El  valor  de  opción  se
       especifica haciendo una operación O-lógica con cualquiera de los siguientes valores:

       MPOOL_DIRTY
              La página ha sido modificada y necesita ser escrita en el fichero de respaldo.

       Mpool_put devuelve 0 en caso de éxito y -1 si se produce un error.

       La  función  mpool_sync  escribe  en  el fichero de respaldo todas las páginas modificadas
       asociadas con el puntero MPOOL.  Mpool_sync devuelve 0 en caso de éxito y -1 si se produce
       un error.

       La  función  mpool_close  libera  cualquier  memoria reservada asociada con el depósito de
       memoria.  Las páginas modificadas no se escribirán en el fichero de respaldo.  Mpool_close
       devuelve 0 en caso de éxito y -1 si se produce un error.

ERRORES

       La  función  mpool_open  puede  fallar  y  asignar  a  errno  cualquiera  de  los  errores
       especificados para la rutina de biblioteca malloc(3).

       La función 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  función  mpool_sync  puede  fallar  y  asignar  a  errno  cualquiera  de  los  errores
       especificados para la rutina de biblioteca write(2).

       La función  mpool_close  puede  fallar  y  asignar  a  errno  cualquiera  de  los  errores
       especificados para la rutina de biblioteca free(3).

VÉASE TAMBIÉN

       dbopen(3), btree(3), hash(3), recno(3)