.\" Copyright 2003,2004 Andi Kleen, SuSE Labs. .\" and Copyright 2007 Lee Schermerhorn, Hewlett Packard .\" .\" %%%LICENSE_START(VERBATIM_PROF) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" 2006-02-03, mtk, substantial wording changes and other improvements .\" 2007-08-27, Lee Schermerhorn .\" more precise specification of behavior. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI .\" all rights reserved. .\" Translated 2006-08-14, Akihiro MOTOKI , LDP v2.39 .\" Updated 2008-02-13, Akihiro MOTOKI, LDP v2.77 .\" Updated 2008-08-06, Akihiro MOTOKI, LDP v3.05 .\" Updated 2008-08-21, Akihiro MOTOKI, LDP v3.07 .\" Updated 2008-11-19, Akihiro MOTOKI, LDP v3.13 .\" .TH GET_MEMPOLICY 2 2008\-08\-15 Linux "Linux Programmer's Manual" .SH 名前 get_mempolicy \- プロセスの NUMA メモリーのポリシーを取得する .SH 書式 \fB#include \fP .nf .sp \fBint get_mempolicy(int *\fP\fImode\fP\fB, unsigned long *\fP\fInodemask\fP\fB,\fP \fB unsigned long \fP\fImaxnode\fP\fB, unsigned long \fP\fIaddr\fP\fB,\fP \fB unsigned long \fP\fIflags\fP\fB);\fP .sp \fI\-lnuma\fP でリンクする。 .fi .SH 説明 \fBget_mempolicy\fP() は、呼び出し元プロセスもしくは指定されたメモリーアドレスの NUMA ポリシーを \fIflags\fP の設定に従って取得する。 NUMA (非対称メモリーアクセス) マシンでは、CPU により メモリーコントローラーが異なり、距離も異なっている。 メモリーポリシーは、どのノードからメモリーをそのプロセスに 割り当てるかを定めるものである。 \fIflags\fP に 0 が指定された場合、 (\fBset_mempolicy\fP(2) で設定された) 呼び出し元プロセスのデフォルトポリシーに関する情報を返す。 返されたポリシー [\fImode\fP と \fInodemask\fP] を \fBset_mempolicy\fP(2) に渡すことで、そのプロセスのポリシーを \fBget_mempolicy\fP() を呼び出した時点の状態に戻すことができる。 \fIflags\fP に \fBMPOL_F_MEMS_ALLOWED\fP (Linux 2.6.24 以降で利用可能) を指定すると、 \fImode\fP 引き数は無視され、 そのプロセスがその後の \fBmbind\fP(2) や \fBset_mempolicy\fP(2) で [\fIモードフラグ\fP が指定されていない場合に ] 指定できるノード (メモリー) の集合が \fInodemask\fP に返される。 \fBMPOL_F_MEMS_ALLOWED\fP を、 \fBMPOL_F_ADDR\fP や \fBMPOL_F_NODE\fP と同時に指定することはできない。 \fIflags\fP に \fBMPOL_F_ADDR\fP が指定された場合、 \fIaddr\fP で指定されたメモリーアドレスに適用されているポリシーに関する情報を返す。 \fBmbind\fP(2) や \fBnuma\fP(3) で説明されているヘルパー関数を使って、 \fIaddr\fP を含むメモリー領域に対するポリシーが設定されていた場合には、 返されるポリシーはプロセスのデフォルトポリシーと違うことがある。 \fImode\fP 引き数が NULL でない場合、 \fBget_mempolicy\fP() は要求された NUMA ポリシーのモードと追加の \fIモードフラグ\fP を \fImode\fP が指す場所に格納する。 \fInodemask\fP が NULL 以外の場合、そのポリシーに対応するノードマスクを この引き数が指す場所に格納する。 \fImaxnode\fP には \fInodemask\fP に格納できるノード ID の数、つまり最大ノード ID に 1 を足した値を指定する。 \fImaxnode\fP で指定された値は常に \fIsizeof(unsigned long)\fP の倍数に切り上げられる。 \fIflags\fP で \fBMPOL_F_NODE\fP と \fBMPOL_F_ADDR\fP の両方が指定された場合、 \fBget_mempolicy\fP() はアドレス \fIaddr\fP が割り当てられているノードのノード ID を \fImode\fP が指す場所に入れて返す。 指定されたアドレスにどのページもまだ割り当てられていない場合、 \fBget_mempolicy\fP() は、あたかもそのプロセスがそのアドレスに対して読み込みアクセスを 実行したかのようにページの割り当てを行い、ページが割り当てられた ノードの ID を返す。 .\" Note: code returns next interleave node via 'mode' argument -Lee Schermerhorn \fIflags\fP で \fBMPOL_F_NODE\fP は指定されたが、 \fBMPOL_F_ADDR\fP は指定されていない場合で、かつ そのプロセスの現在のポリシーが \fBMPOL_INTERLEAVE\fP の場合、 \fBget_mempolicy\fP() は、そのプロセスに対して割り当てられたカーネルの内部ページで 次にインターリーブ用に使用されるノードのノード ID を、 NULL でない \fImode\fP 引き数が指す場所に入れて返す。 読み込みアクセス用として \fBMAP_PRIVATE\fP フラグ付きで \fBmmap\fP(2) したプロセスメモリー領域や、 任意のアクセス用として \fBMAP_SHARED\fP フラグ付きで \fBmmap\fP(2) したメモリー領域の、メモリーマップされたファイルに対するページも 上記のプロセスに対して割り当てられたページに含まれる。 他のフラグは予約されている。 設定可能なポリシーの概要については \fBset_mempolicy\fP(2) を参照。 .SH 返り値 成功すると、 \fBget_mempolicy\fP() は 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 .SH エラー .TP \fBEFAULT\fP \fInodemask\fP と \fImaxnode\fP で指定されたメモリー領域の一部または全部が、 呼び出し元がアクセス可能なアドレス空間外を指している。 .TP \fBEINVAL\fP \fImaxnode\fP で指定された値がシステムがサポートするノード ID の数よりも少ない。 または、 \fIflags\fP に \fBMPOL_F_NODE\fP でも \fBMPOL_F_ADDR\fP でもない値が指定された。 または、 \fIflags\fP に \fBMPOL_F_ADDR\fP が指定されており、 \fIaddr\fP が NULL である。 または、 \fIflags\fP に \fBMPOL_F_ADDR\fP がされておらず、 \fIaddr\fP が NULL でない。 または、 \fIflags\fP に \fBMPOL_F_NODE\fP が指定されており、 \fBMPOL_F_ADDR\fP が指定されておらず、 プロセスの現在のポリシーが \fBMPOL_INTERLEAVE\fP でない。 または、 \fIflags\fP に \fBMPOL_F_MEMS_ALLOWED\fP が指定されており、さらに \fBMPOL_F_ADDR\fP か \fBMPOL_F_NODE\fP のいずれかが指定されている。 (他にも \fBEINVAL\fP となる場合がある。) .SH バージョン \fBget_mempolicy\fP() システムコールはバージョン 2.6.7 で Linux カーネルに追加された。 .SH 準拠 このシステムコールは Linux 固有である。 .SH 注意 ライブラリによるサポートについては \fBnuma\fP(7) を参照。 .SH 関連項目 \fBgetcpu\fP(2), \fBmbind\fP(2), \fBmmap\fP(2), \fBset_mempolicy\fP(2), \fBnuma\fP(3), \fBnuma\fP(7), \fBnumactl\fP(8) .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man\-pages/ に書かれている。