名前
get_mempolicy - プロセスの NUMA メモリのポリシーを取得する
書式
#include <numaif.h>
int get_mempolicy(int *policy, unsigned long *nodemask,
unsigned long maxnode, unsigned long addr,
unsigned long flags);
説明
get_mempolicy() は、呼び出し元プロセスもしくは指定されたメモリアドレスの NUMA ポリシーを flags の設定に従って取得する。
NUMA (非対称メモリアクセス) マシンでは、CPU により メモリコントローラが異なり、距離も異なっている。 メモリポリシーは、どのノードのメモリをそのプロセスに 割り当てられるかを定めるものである。
flags に 0 が指定された場合、 (set_mempolicy(2) で設定された) 呼び出し元プロセスのデフォルトポリシーに関する情報を返す。
flags に MPOL_F_ADDR が指定された場合、 addr で指定されたメモリアドレスに適用されているポリシーに関する情報を返す。 set_mempolicy(2) を使って addr を含むページに対してポリシーが設定されていた場合には、 返されるポリシーはプロセスのデフォルトポリシーと違うことがある。
policy が NULL 以外の場合、ポリシーを返すのに policy が使われる。 nodemask が NULL 以外の場合、そのポリシーに対応するノードマスクを返すのに nodemask が使われる。 maxnode は nodemask に格納できる最大ビット数に 1 を足した値を指定する。 ビット数は常に unsigned long の倍数に切り上げられる。
設定可能なポリシーの概要については set_mempolicy(2) を参照。
返り値
成功すると、 get_mempolicy() は 0 を返す。エラーの場合、-1 を返し、 errno にエラーを示す値を設定する。
準拠
このシステムコールは Linux 独自である。
注意
このマニュアルページは完全ではない。 ここには、 MPOL_F_NODE フラグの詳細について書かれていない。 MPOL_F_NODE フラグは get_mempolicy() の動作を変更するものである。 ここに書いていないのは意図的なものである: このフラグはアプリケーションによって使うことを意図したものではなく、 カーネルの将来のバージョンで、このフラグの動作は変更されるかもしれないし、 削除されるかもしれない。 このフラグを使用しないこと。
バージョンとライブラリでの対応
mbind(2) 参照。