1I)Berkeley DB: memp_register[P

memp_register





#include <db.h>

int&memp_register(DB_MPOOL *mp, int ftype,= int (*pgin)(db_pgno_t pgno, void *pgaddr, DBT *pgcookie),? int (*pgout)(db_pgno_t pgno, void *pgaddr, DBT *pgcookie));





Description



9The memp_register function registers page-in and page-out?functions for files of type ftype in the specified pool.

FIf the pgin function is non-NULL, it is called each time a pageHis read into the memory pool from a file of type ftype, or a pageHis created for a file of type ftype (see the DB_MPOOL_CREATE flagKfor the memp_fget function).

GIf the pgout function is non-NULL, it is called each time a page*is written to a file of type ftype.

HBoth the pgin and pgout functions are called with the pageEnumber, a pointer to the page being read or written, and any argumentmpgcookie that was specified to the memp_fopen functionEwhen the file was opened. The pgin and pgout functionsCshould return 0 on success, and an applicable non-zero errnoHvalue on failure, in which case the shared memory pool interface routineP(and, by extension, any Berkeley DB library function) calling it will also fail,"returning that errno value.

7The purpose of the memp_register function is to supportBprocessing when pages are entered into, or flushed from, the pool.GA file type must be specified to make it possible for unrelated threadsGor processes, that are sharing a pool, to evict each other's pages from9the pool. Applications should call memp_register, duringJinitialization, for each type of file requiring input or output processingHthat will be sharing the underlying pool. (No registry is necessary forjthe standard access method types, btree, hash and recno, as db_openregisters them separately.)

8If a thread or process does not call memp_register for aHfile type, it is impossible for it to evict pages for any file requiring;input or output processing from the pool. For this reason,9memp_register should always be called by each applicationHsharing a pool for each type of file included in the pool, regardless of>whether or not the application itself uses files of that type.

HThere are no standard values for ftype, pgin, pgoutGand pgcookie, except that the ftype value for a file mustLbe a non-zero positive number, as negative numbers are reserved for internalRuse by the Berkeley DB library. For this reason, applications sharing a pool must+coordinate their values amongst themselves.

The memp_registerHfunction returns the value of errno on failure, and 0 on success.



Errors

VIf a fatal error occurs in Berkeley DB, the memp_register function may fail and returnFDB_RUNRECOVERY, at which point all subsequent database calls will alsoreturn DB_RUNRECOVERY.

The memp_register)function may fail and return errnoKfor any of the errors specified for the following Berkeley DB and C library functions: abort(3), fcntl(3), fprintf(3), getpid(3), malloc(3),and memset(3).



See Also

8memp_close,=memp_fclose,9memp_fget,;memp_fopen,9memp_fput,9memp_fset,;memp_fsync,6memp_open,memp_register,6memp_stat,6memp_stat,6memp_sync,;memp_trickleand:memp_unlink.
ÿÿ