Viewing file: memp_register.html (4.38 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
Berkeley DB: DbEnv::memp_register
DbEnv::memp_register
|
 |
#include <db_cxx.h>
extern "C" {
typedef int (*pgin_fcn_type)(DB_ENV *dbenv,
db_pgno_t pgno, void *pgaddr, DBT *pgcookie);
typedef int (*pgout_fcn_type)(DB_ENV *dbenv,
db_pgno_t pgno, void *pgaddr, DBT *pgcookie);
};
int
DbEnv::memp_register(int ftype,
pgin_fcn_type pgin_fcn, pgout_fcn_type pgout_fcn);
Description: DbEnv::memp_register
The DbEnv::memp_register method registers page-in and page-out
functions for files of type ftype in the specified pool.
If the pgin_fcn function is non-NULL, it is called each time
a page is read into the memory pool from a file of type ftype, or
a page is created for a file of type ftype (see the
DB_MPOOL_CREATE flag for the DbMpoolFile::get method).
If the pgout_fcn function is non-NULL, it is called each time
a page is written to a file of type ftype.
The purpose of the DbEnv::memp_register function is to support processing
when pages are entered into, or flushed from, the pool. For example, this
functionality might be used to do byte-endian conversion as pages are read
from, or written to, the underlying file.
A file type must be specified to make it possible for unrelated threads
or processes that are sharing a pool, to evict each other's pages from
the pool. During initialization, applications should call
DbEnv::memp_register for each type of file requiring input or output
processing that will be sharing the underlying pool. (No registry is
necessary for the standard Berkeley DB access method types because
Db::open registers them separately.)
If a thread or process does not call DbEnv::memp_register for a file
type, it is impossible for it to evict pages for any file requiring input
or output processing from the pool. For this reason,
DbEnv::memp_register should always be called by each application sharing
a pool for each type of file included in the pool, regardless of whether
or not the application itself uses files of that type.
The DbEnv::memp_register method
either returns a non-zero error value
or throws an exception that encapsulates a non-zero error value on
failure, and returns 0 on success.
Parameters
- ftype
- The ftype parameter specifies the type of file for which the
page-in and page-out functions will be called.
The ftype value for a file must be a non-zero positive number
less than 128 (0 and negative numbers are reserved for internal use by
the Berkeley DB library).
- pgin_fcn
- pgout_fcn
Class
DbEnv, DbMpoolFile
See Also
Memory Pools and Related Methods
Copyright (c) 1996-2004 Sleepycat Software, Inc. - All rights reserved.
|