MMAP(2) — NEWS-OS Programmer’s Manual
名称
mmap − メモリーページのマップ
形式
#include <sys/mman.h>
#include <sys/types.h>
mmap (addr, len, prot, share, fd, off)
caddr_t addr;
int len, prot, share, fd;
off_t off;
解説
このシステムコールは NEWS-OS 4.x では完全にはインプリメントされていません。 mmap は、 fd で参照されるオブジェクトの先頭番地 +off から len バイトを、 addr で始まる番地にマップします。 share は、マップされたページが共有可能かどうかを指定します。 prot は、マップされたページの保護属性を指定します。 addr および len、 fd の現在位置と off の和は、ページサイズの倍数でなければなりません。 ページサイズは getpagesize(2) により得ることができます。 close によって、マップされたページは自動的に解放されます。 128K バイト以上の領域がマップされた場合は カーネルはその領域に割り当てられていたスワップ領域を解放し、 munmap によりマップされた領域が解放された場合にはその領域は無効になります。 このため、 valloc または malloc を用いてマップされる領域を確保した場合は通常の free を行ってはなりません。
リターン値
正常終了の場合は 0 が、そうでない場合は −1 が返ります。
エラー
[EINVAL]
アドレスまたは長さが getpagesize(2) によって得られる ページサイズの倍数ではないか、長さが負である。
[EINVAL]
指定された領域がデータ領域内にない。
[EINVAL]
fd の示すファイルがマップをサポートしているキャラクタデバイスではない。
[EINVAL]
fd の示すファイルが読みだしアクセス要求に対して読み出し用に オープンされていない。 または、書き込み要求に対して書き込み用にオープンされていない。
[EINVAL]
共有モードが MAP_SHARED ではない。
[ENODEV]
mmap をサポートしているデバイスではない。
関連事項
getpagesize(2), munmap(2), close(2)
制限事項
128K バイト以上の領域が munmap された後で、不正な 長さ の mmap が呼ばれるとパニックによりシステムダウンする場合があります。
NEWS-OSRelease 4.2.1R