Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

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

書式

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

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

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

       mincore():
           glibc 2.19 以降:
               _DEFAULT_SOURCE
           Glibc 2.19 以前:
               _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_SIZE - addr)  より大きい。 (length に負の値が指定された場合、 その値が大きな符号な
              し整数として解釈されるために起こることがある。)    Linux  2.6.11  以前では、この条件の場合はエラー
              EINVAL が返されていた。

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

バージョン

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

準拠

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

バグ

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

関連項目

        fincore(1), madvise(2), mlock(2), mmap(2), posix_fadvise(2), posix_madvise(3)

この文書について

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