Provided by: manpages-ja-dev_0.5.0.0.20110915-1_all bug

status 配列に格納されるページ状態
       status 配列の各要素として、以下の値が返される。

       0..MAX_NUMNODES
              そのページが配置されているノードを示す。

       -EACCES
              そのページは複数のプロセスによりマップされており、
              MPOL_MF_MOVE_ALL が指定された場合にのみ移動できる。

       -EBUSY そのページが現在ビジーであり、移動できない。後でもう一度試すこ
              と。 この状況は、ページが I/O の実行中であったり、カーネルの他の
              サブシステム がそのページへの参照を保持している場合に発生する。

       -EFAULT
              そのページが  zero page であるか、そのメモリ領域はそのプロセスに
              より マップされていない。

       -EIO   ページを書き戻す (write back)  ことができない。  ページが  dirty
              で、ファイルシステムが dirty なページを移動できるような 移動機能
              を提供していないため、そのページを移動するためにはページを  書き
              戻さなければならない。

       -EINVAL
              dirty なページを移動できない。 ファイルシステムが dirty なページ
              を移動するための機能を提供しておらず、  ページを書き戻す能力もな
              い。

       -ENOENT
              ページが存在しない。

       -ENOMEM
              移動先のノードでメモリを確保することができない。

返り値
       成功すると、 move_pages() は 0 を返す。 エラーの場合、-1 を返し、 errno
       にエラーを示す値を設定する。

エラー
       E2BIG  移動すべきページが多過ぎる。

       EACCES 移動先のノードのいずれかが現在の CPU 集合では許可されていない。

       EFAULT パラメータ配列にアクセスできなかった。

       EINVAL flagsMPOL_MF_MOVE でも MPOL_MF_MOVE_ALL でもない値が指定され
              たか、カーネルスレッドのページを移動させようとした。

       ENODEV 移動先のノードのいずれかがオンラインでない。

       ENOENT 移動が必要なページが全く見つからなかった。  指定された全てのペー
              ジが、すでに移動先のノードに存在するか、存在しないか、  無効なア
              ドレスであったか、複数のプロセスによってマップされていて移動でき
              なかったか、のいずれかであった。

       EPERM  呼び出し元は      MPOL_MF_MOVE_ALL      を指定したが、十分な特権
              (CAP_SYS_NICE) を持っていない。 または、呼び出し元が他のユーザに
              属するプロセスのページを移動しようとしたが、  それを行えるだけの
              特権 (CAP_SYS_NICE) を持っていなかった。

       ESRCH  プロセスが存在しない。

バージョン
       move_pages() は、バージョン 2.6.18 で初めて Linux に登場した。

準拠
       このシステムコールは Linux 固有である。

注意
       ライブラリによるサポートについては numa(7) を参照。

       現在の    CPU    集合で許可されているノードの集合を取得するには、フラグ
       MPOL_F_MEMS_ALLOWED を指定して get_mempolicy(2) を使用すればよい。 取得
       した情報は、CPU 集合の手動または自動での再構成により いつ何時変化してし
       まうか分からない。

       この関数を使用すると、ページの位置 (ノード) が 指定されたアドレスに対し
       て設定されたメモリポリシー (mbind(2) 参照) や指定されたプロセスに対して
       設定されたメモリポリシー (set_mempolicy(2) 参照) に違反してしまう可能性
       がある。 つまり、メモリポリシーは move_pages() で使われる移動先ノードを
       制限しないということである。

       ヘッダファイル <numaif.h> は glibc  には含まれておらず、  libnuma-devel
       か同様のパッケージをインストールする必要がある。

関連項目
       get_mempolicy(2),  mbind(2),  set_mempolicy(2),  numa(3), numa_maps(5),
       cpuset(7), numa(7), migratepages(8), numa_stat(8)