1<!--$Id: memp_register.so,v 10.38 2004/08/13 03:38:58 bostic Exp $--> 2<!--Copyright (c) 1997,2008 Oracle. All rights reserved.--> 3<!--See the file LICENSE for redistribution information.--> 4<html> 5<head> 6<title>Berkeley DB: DB_ENV->memp_register</title> 7<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit."> 8<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++"> 9</head> 10<body bgcolor=white> 11<table width="100%"><tr valign=top> 12<td> 13<b>DB_ENV->memp_register</b> 14</td> 15<td align=right> 16<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a> 17<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td> 18</tr></table> 19<hr size=1 noshade> 20<tt> 21<b><pre> 22#include <db.h> 23<p> 24int 25DB_ENV->memp_register(DB_ENV *env, int ftype, 26 int (*pgin_fcn)(DB_ENV *, db_pgno_t pgno, void *pgaddr, DBT *pgcookie), 27 int (*pgout_fcn)(DB_ENV *, db_pgno_t pgno, void *pgaddr, DBT *pgcookie)); 28</pre></b> 29<hr size=1 noshade> 30<b>Description: DB_ENV->memp_register</b> 31<p>The DB_ENV->memp_register method registers page-in and page-out 32functions for files of type <b>ftype</b> in the specified pool.</p> 33<p>If the <b>pgin_fcn</b> function is non-NULL, it is called each time 34a page is read into the memory pool from a file of type <b>ftype</b>, or 35a page is created for a file of type <b>ftype</b> (see the 36DB_MPOOL_CREATE flag for the <a href="../api_c/memp_fget.html">DB_MPOOLFILE->get</a> method).</p> 37<p>If the <b>pgout_fcn</b> function is non-NULL, it is called each time 38a page is written to a file of type <b>ftype</b>.</p> 39<p>The purpose of the DB_ENV->memp_register function is to support processing 40when pages are entered into, or flushed from, the pool. For example, this 41functionality might be used to do byte-endian conversion as pages are read 42from, or written to, the underlying file.</p> 43<p>A file type must be specified to make it possible for unrelated threads 44or processes that are sharing a pool, to evict each other's pages from 45the pool. During initialization, applications should call 46DB_ENV->memp_register for each type of file requiring input or output 47processing that will be sharing the underlying pool. (No registry is 48necessary for the standard Berkeley DB access method types because 49<a href="../api_c/db_open.html">DB->open</a> registers them separately.)</p> 50<p>If a thread or process does not call DB_ENV->memp_register for a file 51type, it is impossible for it to evict pages for any file requiring input 52or output processing from the pool. For this reason, 53DB_ENV->memp_register should always be called by each application sharing 54a pool for each type of file included in the pool, regardless of whether 55or not the application itself uses files of that type.</p> 56<p>The DB_ENV->memp_register method 57returns a non-zero error value on failure 58and 0 on success. 59</p> 60<b>Parameters</b> <br> 61 <b>ftype</b><ul compact><li>The <b>ftype</b> parameter specifies the type of file for which the 62page-in and page-out functions will be called. 63<p>The <b>ftype</b> value for a file must be a non-zero positive number 64less than 128 (0 and negative numbers are reserved for internal use by 65the Berkeley DB library).</p></ul> 66 <b>pgin_fcn, pgout_fcn</b><ul compact><li>The page-in and page-out functions. 67<p>The <b>pgin_fcn</b> and <b>pgout_fcn</b> functions are called with a 68reference to the current database environment, the page number being 69read or written, a pointer to the page being read or written, and any 70parameter <b>pgcookie</b> that was specified to the 71<a href="../api_c/memp_set_pgcookie.html">DB_MPOOLFILE->set_pgcookie</a> method.</p> 72<p>The <b>pgin_fcn</b> and <b>pgout_fcn</b> functions should return 0 on 73success, and a non-zero value on failure, in which case the shared Berkeley DB 74library function calling it will also fail, returning that non-zero 75value. The non-zero value should be selected from values outside of the 76Berkeley DB library namespace.</p></ul> 77<br> 78<hr size=1 noshade> 79<br><b>Class</b> 80<a href="../api_c/env_class.html">DB_ENV</a>, <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> 81<br><b>See Also</b> 82<a href="../api_c/memp_list.html">Memory Pools and Related Methods</a> 83</tt> 84<table width="100%"><tr><td><br></td><td align=right> 85<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a> 86</td></tr></table> 87<p><font size=1>Copyright (c) 1996,2008 Oracle. All rights reserved.</font> 88</body> 89</html> 90