mpoolのヘルプ・マニュアル
日本語 英語
mpool --help
man mpool
MPOOL(3) Linux Programmer’s Manual MPOOL(3)
名前
mpool - 共有メモリバッファプール
書式
#include
#include
MPOOL *mpool_open(DBT *key, int fd, pgno_t pagesize, pgno_t maxcache);
void mpool_filter(MPOOL *mp, void (*pgin)(void *, pgno_t, void *),
void (*pgout)(void *, pgno_t, void *),
void *pgcookie);
void *mpool_new(MPOOL *mp, pgno_t *pgnoaddr);
void *mpool_get(MPOOL *mp, pgno_t pgno, unsigned int flags);
int mpool_put(MPOOL *mp, void *pgaddr, unsigned int flags);
int mpool_sync(MPOOL *mp);
int mpool_close(MPOOL *mp);
説明
mpool は、ファイルに対するページ指向のバッファ管理を実装したライブラリ
インターフェイスである。
関数 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() が返したアドレスでなければならない。 flag の
値は以下の値のいずれかか、これらの論理和である。
MPOOL_DIRTY
ページは変更されており、ファイルに書き出す必要がある。
mpool_put() は成功すると 0 を、エラーがあると -1 を返す。
関数 mpool_sync() は MPOOL ポインタの示すページのうち、変更されたものを
全てファイルに書き出す。 mpool_sync() は成功すると 0 を、エラーがあると
-1 を返す。
関数 mpool_close() はメモリプールクッキーの示す割り当て済みのメモリを解
放 する。変更されたページはファイルに書き出されない。 mpool_close () は
成功すると 0 を、エラーがあると -1 を返す。
エラー
関数 mpool_open() は失敗するとライブラリルーチン malloc(3) で指定されて
いるエラーに応じた errno をセットする。
関数 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 をセットする。
準拠
POSIX.1-2001 にはない。 BSD 系に存在する。
関連項目
btree(3), dbopen(3), hash(3), recno(3)
4.4 Berkeley Distribution 1993-06-04 MPOOL(3)