Manpages

名 前

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

関 連 項 目

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

こ の 文 書 に つ い て

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