Manpages

名 前

mincore − ペ ー ジ が メ モ リ ー 内 に あ る か ど う か を 判 定 す る

書 式

#include <unistd.h>
#include <sys/mman.h>

int mincore(void *addr, size_t length, unsigned char *vec);

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):

mincore(): _BSD_SOURCE || _SVID_SOURCE

説 明

mincore() は 、 呼 び 出 し 元 プ ロ セ ス の 仮 想 メ モ リ ー の ペ ー ジ が コ ア (RAM) 内 に 存 在 し 、 ペ ー ジ 参 照 時 に デ ィ ス ク ア ク セ ス (ペ ー ジ フ ォ ー ル ト ) を 起 こ さ な い か ど う か を 示 す ベ ク ト ル を 返 す 。 カ ー ネ ル は 、 ア ド レ ス addr か ら 始 ま る length バ イ ト の 範 囲 の ペ ー ジ に 関 す る 存 在 情 報 を 返 す 。

addr 引 き 数 は シ ス テ ム の ペ ー ジ サ イ ズ の 倍 数 で な け れ ば な ら な い 。 length 引 き 数 は ペ ー ジ サ イ ズ の 倍 数 で あ る 必 要 は な い が 、 ペ ー ジ 全 体 に 関 す る 存 在 情 報 が 返 さ れ る の で 、 事 実 上 length は ペ ー ジ サ イ ズ の 倍 数 に 切 り 上 げ ら れ る こ と に な る 。 ペ ー ジ サ イ ズ (PAGE_SIZE) は sysconf(_SC_PAGESIZE) を 使 っ て 入 手 で き る 。

vec 引 き 数 は 、 少 な く と も (length+PAGE_SIZE−1) / PAGE_SIZE バ イ ト が 格 納 で き る 配 列 を 指 し て い な け れ ば な ら な い 。 こ の 呼 び 出 し が 返 る と き 、 各 バ イ ト の 最 下 位 ビ ッ ト は 、 対 応 す る ペ ー ジ が メ モ リ ー 内 に そ の と き 存 在 す れ ば セ ッ ト さ れ 、 そ う で な い 場 合 は ク リ ア さ れ る (各 バ イ ト の そ の 他 の ビ ッ ト は 未 定 義 で あ り 、 こ れ ら の ビ ッ ト は 将 来 の 使 用 に そ な え て 予 約 さ れ て い る )。 も ち ろ ん 、 vec で 返 さ れ た 情 報 は ス ナ ッ プ シ ョ ッ ト で し か な い 。 メ モ リ ー 内 に ロ ッ ク さ れ て い な い ペ ー ジ は 、 任 意 の 時 点 で メ モ リ ー 内 に 入 っ た り 出 た り で き 、 こ の 呼 び 出 し が 返 る と き に は vec の 内 容 は す で に 古 く な っ て い る か も し れ な い 。

返 り 値

成 功 し た 場 合 、 mincore() は 0 を 返 す 。 エ ラ ー の 場 合 は −1 を 返 し て 、 errno を 適 切 な 値 に 設 定 す る 。

エ ラ ー

EAGAIN カ ー ネ ル が 一 時 的 に リ ソ ー ス を 使 い 果 た し て い る 。

EFAULT

vec が 無 効 な ア ド レ ス を 指 し て い る 。

EINVAL

addr が ペ ー ジ サ イ ズ の 倍 数 で な い 。

ENOMEM

length が (TASK_SIZEaddr) よ り 大 き い 。 (length に 負 の 値 が 指 定 さ れ た 場 合 、 そ の 値 が 大 き な 符 号 な し 整 数 と し て 解 釈 さ れ る た め に 起 こ る こ と が あ る 。 ) Linux 2.6.11 以 前 で は 、 こ の 条 件 の 場 合 は エ ラ ー EINVAL が 返 さ れ て い た 。

ENOMEM

addr か ら addr + length の 間 に マ ッ プ さ れ て い な い メ モ リ ー が あ っ た 。

バ ー ジ ョ ン

Linux 2.3.99pre1 と glibc 2.2 か ら 利 用 可 能 で あ る 。

準 拠

mincore() は POSIX.1−2001 に 記 述 さ れ て お ら ず 、 全 て の UNIX 実 装 で 利 用 可 能 で あ る わ け で は な い 。

バ グ

カ ー ネ ル 2.6.21 よ り 前 は 、 mincore() は 、 MAP_PRIVATE マ ッ ピ ン グ や 非 線 形 マ ッ ピ ン グ (remap_file_pages(2) を 使 っ て 作 成 さ れ る ) に つ い て 正 し い 情 報 を 返 さ な か っ た 。

関 連 項 目

mlock(2), mmap(2)

こ の 文 書 に つ い て

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