plucky (3) mpool.3.gz

Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

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

書式

       #include <db.h>
       #include <mpool.h>

       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);

説明

       大事な注意:  このページは、バージョン  2.1  までの  glibc  が提供するインターフェースに  ついて説明してい
       る。バージョン 2.2 以降の glibc  では、もはやこれらの  インターフェースは提供されていない。おそらく、この
       ページではなく、 libdb ライブラリが提供する API をお探しなのだろう。

       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 にはない。 BSD 系に存在する。

関連項目

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

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 5.10  の一部である。プロジェクトの説明とバグ報告
       に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。