総合手引 | セクション 3 | English | オプション |
#include <db.h>
#include <mpool.h>
関数 mpool_open() はメモリプールを初期化します。引数 key は、バッファ を共有する複数のプロセス間でネゴシエートするために使われる バイトストリングです。 ファイルバッファが共有メモリにマップされた場合は、同じキーを 使用しているすべてのプロセスがバッファを共有します。 key が NULL である場合、バッファはプライベートメモリにマップされます。 引数 fd は、基礎となる ファイルのファイル記述子で、検索可能になっている必要があります。 key が NULL ではなく、すでにマップされているファイルと一致する場合、引数 fd は無視されます。
引数 pagesize は、ファイルを分割するページのサイズ (バイト単位) です。引数 maxcache は、一度にキャッシュする、基礎となるファイルの最大ページ数です。 この値は、ファイルのバッファを共有するプロセス数とは 関係ありませんが、ファイルを共有するプロセスが指定した最大値になります。
関数 mpool_filter() は、ページの透過的入出力処理を行ないます。 pgin 関数が指定されると、保存ファイルからメモリプールにバッファを 読み込むたびに呼び出されます。 pgout 関数が指定されると、保存ファイルにバッファが書き込まれるたびに 呼び出されます。どちらの関数も、 pgcookie ポインタ、ページ番号、読み書きを行なうページのポインタで呼び出されます。
関数 mpool_new() は、 MPOOL ポインタとアドレスを引数として取ります。 新しいページを割り振ることができる場合は、ページのポインタが返され、 ページ番号が pgnoaddr アドレスに保存されます。割り振ることができない場合は NULL が返され、 errno が設定されます。
関数 mpool_get() は、 MPOOL ポインタとページ番号を引数として取ります。 ページが存在する場合は、ページのポインタが返されます。 ページが存在しない場合は NULL が返され、 errno がセットされます。 flags パラメータは、今のところ使用されていません。
関数 mpool_put() は、 pgaddr が参照するページを解放します。 pgaddr は、あらかじめ mpool_get() または mpool_new() が返したアドレスでなければなりません。 flags パラメータは以下の値の論理和 ( or ) によって指定されます。
MPOOL_DIRTY | |
ページが修正されており、保存ファイルに書き込む必要があります。 | |
関数 mpool_put() は、正常終了時には 0 を返し、エラーのときは -1 を返します。
関数 mpool_sync() は、 MPOOL ポインタに対して、変更されたすべてのページを 保存ファイルに書き込みます。 mpool_sync() は、正常終了時には 0 を返し、エラーのときは -1 を返します。
関数 mpool_close() は、メモリプールクッキーに対して割り振られたメモリを解放します。 修正されたページは、保存ファイルに書き込まれ ません 。 mpool_close() は、正常終了時には 0 を返し、エラーのときは -1 を返します。
関数 mpool_get() でエラーが発生すると、以下の errno がセットされます。
[EINVAL] | |
要求されたレコードが存在しない。 | |
関数 mpool_new() と mpool_get() でエラーが発生すると、ライブラリルーチン read(2), write(2), malloc(3) で指定されたエラーの errno がセットされます。
関数 mpool_sync() でエラーが発生すると、ライブラリルーチン write(2) で指定されたエラーの errno がセットされます。
関数 mpool_close() でエラーが発生すると、ライブラリルーチン free(3) で 指定したエラーの errno がセットされます。
MPOOL (3) | June 4, 1993 |
総合手引 | セクション 3 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | Like a classics radio station whose play list spans decades, Unix simultaneously exhibits its mixed and dated heritage. There's Clash-era graphics interfaces; Beatles-era two-letter command names; and systems programs (for example, ps) whose terse and obscure output was designed for slow teletypes; Bing Crosby-era command editing (# and @ are still the default line editing commands), and Scott Joplin-era core dumps. | ” |
— The Unix Haters' handbook |