1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
<!--$Id: memp_fget.so,v 10.23 2000/12/04 18:05:39 bostic Exp $-->
<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
<!--All rights reserved.-->
<html>
<head>
<title>Berkeley DB: memp_fget</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
</head>
<body bgcolor=white>
<a name="2"><!--meow--></a>
<table><tr valign=top>
<td>
<h1>memp_fget</h1>
</td>
<td width="1%">
<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
<hr size=1 noshade>
<tt>
<h3><pre>
#include <db.h>
<p>
int
memp_fget(DB_MPOOLFILE *mpf,
db_pgno_t *pgnoaddr, u_int32_t flags, void **pagep);
</pre></h3>
<h1>Description</h1>
<p>The memp_fget function copies a pointer to the page with the page
number specified by <b>pgnoaddr</b>, from the source file in the
DB_MPOOLFILE, into the memory location referenced by <b>pagep</b>.
If the page does not exist or cannot be retrieved, memp_fget will
fail.
<p><b>Page numbers begin at 0, i.e., the first page in the file is page number
0, not page number 1.</b>
<p>The returned page is <b>size_t</b> type aligned.
<p>The <b>flags</b> value must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one or more
of the following values.
<p><dl compact>
<p><dt><a name="DB_MPOOL_CREATE">DB_MPOOL_CREATE</a><dd>If the specified page does not exist, create it. In this case, the
<a href="memp_register.html#pgin">pgin</a> function, if specified, is
called.
<p><dt><a name="DB_MPOOL_LAST">DB_MPOOL_LAST</a><dd>Return the last page of the source file and copy its page number
to the location referenced by <b>pgnoaddr</b>.
<p><dt><a name="DB_MPOOL_NEW">DB_MPOOL_NEW</a><dd>Create a new page in the file and copy its page number to the location
referenced by <b>pgnoaddr</b>. In this case, the
<a href="memp_register.html#pgin">pgin</a> function, if specified, is
<b>not</b> called.
</dl>
<p>The DB_MPOOL_CREATE, DB_MPOOL_LAST and
DB_MPOOL_NEW flags are mutually exclusive.
<p>Created pages have all their bytes set to 0, unless otherwise specified
when the file was opened.
<p>All pages returned by memp_fget will be retained (i.e.
<i>pinned</i>), in the pool until a subsequent call to
<a href="../api_c/memp_fput.html">memp_fput</a>.
<p>The memp_fget function returns a non-zero error value on failure and 0 on success.
<h1>Errors</h1>
<p>The memp_fget function may fail and return a non-zero error for the following conditions:
<p><dl compact>
<p><dt>EAGAIN<dd>The page reference count has overflowed. (This should never happen unless
there's a bug in the application.)
</dl>
<p><dl compact>
<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
<p>The DB_MPOOL_NEW flag was set and the source file was not opened for writing.
<p>More than one of DB_MPOOL_CREATE, DB_MPOOL_LAST and DB_MPOOL_NEW was set.
</dl>
<p><dl compact>
<p><dt>EIO<dd>The requested page does not exist and DB_MPOOL_CREATE was not set.
</dl>
<p><dl compact>
<p><dt>ENOMEM<dd>The cache is full and no more pages will fit in the pool.
</dl>
<p>The memp_fget function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions.
If a catastrophic error has occurred, the memp_fget function may fail and return
<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
in the same way.
<h1>See Also</h1>
<a href="../api_c/env_set_mp_mmapsize.html">DBENV->set_mp_mmapsize</a>,
<a href="../api_c/memp_fclose.html">memp_fclose</a>,
<a href="../api_c/memp_fget.html">memp_fget</a>,
<a href="../api_c/memp_fopen.html">memp_fopen</a>,
<a href="../api_c/memp_fput.html">memp_fput</a>,
<a href="../api_c/memp_fset.html">memp_fset</a>,
<a href="../api_c/memp_fsync.html">memp_fsync</a>,
<a href="../api_c/memp_register.html">memp_register</a>,
<a href="../api_c/memp_stat.html">memp_stat</a>,
<a href="../api_c/memp_sync.html">memp_sync</a>
and
<a href="../api_c/memp_trickle.html">memp_trickle</a>.
</tt>
<table><tr><td><br></td><td width="1%">
<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
</body>
</html>
|