MPOOL

Section: C Library Functions (3)
索引 jman

BSD mandoc
 

索引

名称

mpool - 共有メモリバッファプール  

索引

書式

In db.h In mpool.h Ft MPOOL * Fn mpool_open void *key int fd pgno_t pagesize pgno_t maxcache Ft void Fo mpool_filter Fa MPOOL *mp Fa void (*pgin)(void *, pgno_t, void *) Fa void (*pgout)(void *, pgno_t, void *) Fa void *pgcookie Fc Ft void * Fn mpool_new MPOOL *mp pgno_t *pgnoaddr Ft void * Fn mpool_get MPOOL *mp pgno_t pgno u_int flags Ft int Fn mpool_put MPOOL *mp void *pgaddr u_int flags Ft int Fn mpool_sync MPOOL *mp Ft int Fn mpool_close MPOOL *mp  

索引

解説

mpool は、ページを基準にした、ファイルのバッファ管理を行なう ライブラリインタフェースです。バッファはプロセス間で共有できます。

関数 Fn mpool_open はメモリプールを初期化します。引数 Fa key は、バッファ を共有する複数のプロセス間でネゴシエートするために使われる バイトストリングです。 ファイルバッファが共有メモリにマップされた場合は、同じキーを 使用しているすべてのプロセスがバッファを共有します。 Fa key が NULL である場合、バッファはプライベートメモリにマップされます。 引数 Fa fd は、基礎となる ファイルのファイル記述子で、検索可能になっている必要があります。 Fa key が NULL ではなく、すでにマップされているファイルと一致する場合、引数 Fa fd は無視されます。

引数 Fa pagesize は、ファイルを分割するページのサイズ (バイト単位) です。引数 Fa maxcache は、一度にキャッシュする、基礎となるファイルの最大ページ数です。 この値は、ファイルのバッファを共有するプロセス数とは 関係ありませんが、ファイルを共有するプロセスが指定した最大値になります。

関数 Fn mpool_filter は、ページの透過的入出力処理を行ないます。 Fa pgin 関数が指定されると、保存ファイルからメモリプールにバッファを 読み込むたびに呼び出されます。 Fa pgout 関数が指定されると、保存ファイルにバッファが書き込まれるたびに 呼び出されます。どちらの関数も、 Fa pgcookie ポインタ、ページ番号、読み書きを行なうページのポインタで呼び出されます。

関数 Fn mpool_new は、 Ft MPOOL ポインタとアドレスを引数として取ります。 新しいページを割り振ることができる場合は、ページのポインタが返され、 ページ番号が Fa pgnoaddr アドレスに保存されます。割り振ることができない場合は NULL が返され、 errno が設定されます。

関数 Fn mpool_get は、 Ft MPOOL ポインタとページ番号を引数として取ります。 ページが存在する場合は、ページのポインタが返されます。 ページが存在しない場合は NULL が返され、 errno がセットされます。 Fa flags パラメータは、今のところ使用されていません。

関数 Fn mpool_put は、 Fa pgaddr が参照するページを解放します。 Fa pgaddr は、あらかじめ Fn mpool_get または Fn mpool_new が返したアドレスでなければなりません。 Fa flags パラメータは以下の値の論理和 ( or ) によって指定されます。

MPOOL_DIRTY
ページが修正されており、保存ファイルに書き込む必要があります。

関数 Fn mpool_put は、正常終了時には 0 を返し、エラーのときは -1 を返します。

関数 Fn mpool_sync は、 Ft MPOOL ポインタに対して、変更されたすべてのページを 保存ファイルに書き込みます。 Fn mpool_sync は、正常終了時には 0 を返し、エラーのときは -1 を返します。

関数 Fn mpool_close は、メモリプールクッキーに対して割り振られたメモリを解放します。 修正されたページは、保存ファイルに書き込まれ ません 。 Fn mpool_close は、正常終了時には 0 を返し、エラーのときは -1 を返します。  

索引

エラー

関数 Fn mpool_open でエラーが発生すると、ライブラリルーチン malloc(3) で指定されたエラーの errno がセットされます。

関数 Fn mpool_get でエラーが発生すると、以下の errno がセットされます。

Bq Er EINVAL
要求されたレコードが存在しない。

関数 Fn mpool_new と Fn mpool_get でエラーが発生すると、ライブラリルーチン read(2), write(2), malloc(3) で指定されたエラーの errno がセットされます。

関数 Fn mpool_sync でエラーが発生すると、ライブラリルーチン write(2) で指定されたエラーの errno がセットされます。

関数 Fn mpool_close でエラーが発生すると、ライブラリルーチン free(3) で 指定したエラーの errno がセットされます。  

索引

関連項目

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


 

索引

Index

名称
書式
解説
エラー
関連項目

jman



Time: 07:07:00 GMT, January 12, 2009