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/ に書かれている。