名 前
mmap2 − フ ァ イ ル や デ バ イ ス を メ モ リ ー に マ ッ プ す る
書 式
#include <sys/mman.h>
void
*mmap2(void *addr, size_t
length, int prot,
int flags, int fd, off_t
pgoffset);
説 明
こ れ は お そ ら く あ な た が 興 味 の あ る シ ス テ ム コ ー ル で は な い だ ろ う 。 代 わ り に mmap(2) を 見 る と よ い 。 そ の ペ ー ジ に は こ の シ ス テ ム コ ー ル を 起 動 す る glibc の ラ ッ パ ー 関 数 に つ い て の 説 明 が あ る 。
mmap2() シ ス テ ム コ ー ル は mmap(2) と 同 じ イ ン タ ー フ ェ ー ス を 提 供 す る 。 た だ し 、 最 後 の 引 き 数 に は 、 フ ァ イ ル の オ フ セ ッ ト を (mmap(2) が 行 っ て い る 、 バ イ ト 単 位 で は な く ) 4096 バ イ ト を 単 位 と し て 指 定 す る 。 こ れ に よ り 、 32 ビ ッ ト の off_t を 使 う ア プ リ ケ ー シ ョ ン で (2^44 バ イ ト ま で の ) 大 き な フ ァ イ ル を マ ッ プ で き る よ う に な る 。
返 り 値
成 功 し た 場 合 、 mmap2() は マ ッ プ さ れ た 領 域 へ の ポ イ ン タ ー を 返 す 。 エ ラ ー の 場 合 は −1 が 返 さ れ て 、 errno が 適 切 に 設 定 さ れ る 。
エ ラ ー
EFAULT ユ ー ザ ー 空 間 か ら デ ー タ を 取 得 す る と き に 問 題 が あ っ た 。 | |
EINVAL |
(ペ ー ジ サ イ ズ が 4096 バ イ ト で な い プ ラ ッ ト フ ォ ー ム に お い て ) offset * 4096 が シ ス テ ム の ペ ー ジ サ イ ズ の 倍 数 で は な い 。
mmap2() は mmap(2) に 載 っ て い る エ ラ ー を 返 す こ と も あ る 。
バ ー ジ ョ ン
mmap2() は 、 Linux 2.3.31 以 降 で 使 用 可 能 で あ る 。
準 拠
こ の シ ス テ ム コ ー ル は Linux 独 自 で あ る 。
注 意
こ の シ ス テ ム コ ー ル が 存 在 す る ア ー キ テ ク チ ャ ー で は 、 glibc の mmap() の ラ ッ パ ー 関 数 は 、 mmap(2) シ ス テ ム コ ー ル で は な く 、 こ の シ ス テ ム コ ー ル (mmap2(2)) を 起 動 す る 。 こ の シ ス テ ム コ ー ル は x86−64 に は 存 在 し な い 。
ia64 で は 、 offset の 単 位 は 、 実 際 に は シ ス テ ム の ペ ー ジ サ イ ズ で あ り 、 4096 バ イ ト で は な い 。
関 連 項 目
getpagesize(2), mmap(2), mremap(2), msync(2), shm_open(3)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。