OSDN Git Service

(split) DP: release pages (catch up to 3.50).
[linuxjm/LDP_man-pages.git] / release / man2 / get_mempolicy.2
1 .\" Copyright 2003,2004 Andi Kleen, SuSE Labs.
2 .\" and Copyright 2007 Lee Schermerhorn, Hewlett Packard
3 .\"
4 .\" %%%LICENSE_START(VERBATIM_PROF)
5 .\" Permission is granted to make and distribute verbatim copies of this
6 .\" manual provided the copyright notice and this permission notice are
7 .\" preserved on all copies.
8 .\"
9 .\" Permission is granted to copy and distribute modified versions of this
10 .\" manual under the conditions for verbatim copying, provided that the
11 .\" entire resulting derived work is distributed under the terms of a
12 .\" permission notice identical to this one.
13 .\"
14 .\" Since the Linux kernel and libraries are constantly changing, this
15 .\" manual page may be incorrect or out-of-date.  The author(s) assume no
16 .\" responsibility for errors or omissions, or for damages resulting from
17 .\" the use of the information contained herein.
18 .\"
19 .\" Formatted or processed versions of this manual, if unaccompanied by
20 .\" the source, must acknowledge the copyright and authors of this work.
21 .\" %%%LICENSE_END
22 .\"
23 .\" 2006-02-03, mtk, substantial wording changes and other improvements
24 .\" 2007-08-27, Lee Schermerhorn <Lee.Schermerhorn@hp.com>
25 .\"     more precise specification of behavior.
26 .\"
27 .\"*******************************************************************
28 .\"
29 .\" This file was generated with po4a. Translate the source file.
30 .\"
31 .\"*******************************************************************
32 .TH GET_MEMPOLICY 2 2008\-08\-15 Linux "Linux Programmer's Manual"
33 .SH 名前
34 get_mempolicy \- retrieve NUMA memory policy for a process
35 .SH 書式
36 \fB#include <numaif.h>\fP
37 .nf
38 .sp
39 \fBint get_mempolicy(int *\fP\fImode\fP\fB, unsigned long *\fP\fInodemask\fP\fB,\fP
40 \fB                  unsigned long \fP\fImaxnode\fP\fB, unsigned long \fP\fIaddr\fP\fB,\fP
41 \fB                  unsigned long \fP\fIflags\fP\fB);\fP
42 .sp
43 \fI\-lnuma\fP でリンクする。
44 .fi
45 .SH 説明
46 \fBget_mempolicy\fP()  は、呼び出し元プロセスもしくは指定されたメモリアドレスの NUMA ポリシーを \fIflags\fP
47 の設定に従って取得する。
48
49 NUMA (非対称メモリアクセス) マシンでは、CPU により メモリコントローラが異なり、距離も異なっている。
50 メモリポリシーは、どのノードからメモリをそのプロセスに 割り当てるかを定めるものである。
51
52 \fIflags\fP に 0 が指定された場合、 (\fBset_mempolicy\fP(2)  で設定された)
53 呼び出し元プロセスのデフォルトポリシーに関する情報を返す。 返されたポリシー [\fImode\fP と \fInodemask\fP] を
54 \fBset_mempolicy\fP(2)  に渡すことで、そのプロセスのポリシーを \fBget_mempolicy\fP()
55 を呼び出した時点の状態に戻すことができる。
56
57 \fIflags\fP に \fBMPOL_F_MEMS_ALLOWED\fP (Linux 2.6.24 以降で利用可能) を指定すると、 \fImode\fP
58 引き数は無視され、 そのプロセスがその後の \fBmbind\fP(2)  や \fBset_mempolicy\fP(2)  で [\fIモードフラグ\fP
59 が指定されていない場合に ] 指定できるノード (メモリ) の集合が \fInodemask\fP に返される。 \fBMPOL_F_MEMS_ALLOWED\fP
60 を、 \fBMPOL_F_ADDR\fP や \fBMPOL_F_NODE\fP と同時に指定することはできない。
61
62 \fIflags\fP に \fBMPOL_F_ADDR\fP が指定された場合、 \fIaddr\fP
63 で指定されたメモリアドレスに適用されているポリシーに関する情報を返す。 \fBmbind\fP(2)  や \fBnuma\fP(3)
64 で説明されているヘルパー関数を使って、 \fIaddr\fP を含むメモリ領域に対するポリシーが設定されていた場合には、
65 返されるポリシーはプロセスのデフォルトポリシーと違うことがある。
66
67 \fImode\fP 引き数が NULL でない場合、 \fBget_mempolicy\fP()  は要求された NUMA ポリシーのモードと追加の
68 \fIモードフラグ\fP を \fImode\fP が指す場所に格納する。 \fInodemask\fP が NULL 以外の場合、そのポリシーに対応するノードマスクを
69 この引き数が指す場所に格納する。 \fImaxnode\fP には \fInodemask\fP に格納できるノード ID の数、つまり最大ノード ID に 1
70 を足した値を指定する。 \fImaxnode\fP で指定された値は常に \fIsizeof(unsigned long)\fP の倍数に切り上げられる。
71
72 \fIflags\fP で \fBMPOL_F_NODE\fP と \fBMPOL_F_ADDR\fP の両方が指定された場合、 \fBget_mempolicy\fP()
73 はアドレス \fIaddr\fP が割り当てられているノードのノード ID を \fImode\fP が指す場所に入れて返す。
74 指定されたアドレスにどのページもまだ割り当てられていない場合、 \fBget_mempolicy\fP()
75 は、あたかもそのプロセスがそのアドレスに対して読み込みアクセスを 実行したかのようにページの割り当てを行い、ページが割り当てられた ノードの ID
76 を返す。
77
78 .\" Note:  code returns next interleave node via 'mode' argument -Lee Schermerhorn
79 \fIflags\fP で \fBMPOL_F_NODE\fP は指定されたが、 \fBMPOL_F_ADDR\fP は指定されていない場合で、かつ
80 そのプロセスの現在のポリシーが \fBMPOL_INTERLEAVE\fP の場合、 \fBget_mempolicy\fP()
81 は、そのプロセスに対して割り当てられたカーネルの内部ページで 次にインターリーブ用に使用されるノードのノード ID を、 NULL でない
82 \fImode\fP 引き数が指す場所に入れて返す。 読み込みアクセス用として \fBMAP_PRIVATE\fP フラグ付きで \fBmmap\fP(2)
83 したプロセスメモリ領域や、 任意のアクセス用として \fBMAP_SHARED\fP フラグ付きで \fBmmap\fP(2)
84 したメモリ領域の、メモリマップされたファイルに対するページも 上記のプロセスに対して割り当てられたページに含まれる。
85
86 他のフラグは予約されている。
87
88 設定可能なポリシーの概要については \fBset_mempolicy\fP(2)  を参照。
89 .SH 返り値
90 成功すると、 \fBget_mempolicy\fP()  は 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。
91 .SH エラー
92 .TP 
93 \fBEFAULT\fP
94 \fInodemask\fP と \fImaxnode\fP で指定されたメモリ領域の一部または全部が、 呼び出し元がアクセス可能なアドレス空間外を指している。
95 .TP 
96 \fBEINVAL\fP
97 \fImaxnode\fP で指定された値がシステムがサポートするノード ID の数よりも少ない。 または、 \fIflags\fP に
98 \fBMPOL_F_NODE\fP でも \fBMPOL_F_ADDR\fP でもない値が指定された。 または、 \fIflags\fP に \fBMPOL_F_ADDR\fP
99 が指定されており、 \fIaddr\fP が NULL である。 または、 \fIflags\fP に \fBMPOL_F_ADDR\fP がされておらず、
100 \fIaddr\fP が NULL でない。 または、 \fIflags\fP に \fBMPOL_F_NODE\fP が指定されており、 \fBMPOL_F_ADDR\fP
101 が指定されておらず、 プロセスの現在のポリシーが \fBMPOL_INTERLEAVE\fP でない。 または、 \fIflags\fP に
102 \fBMPOL_F_MEMS_ALLOWED\fP が指定されており、さらに \fBMPOL_F_ADDR\fP か \fBMPOL_F_NODE\fP
103 のいずれかが指定されている。 (他にも \fBEINVAL\fP となる場合がある。)
104 .SH バージョン
105 \fBget_mempolicy\fP()  システムコールはバージョン 2.6.7 で Linux カーネルに追加された。
106 .SH 準拠
107 このシステムコールは Linux 固有である。
108 .SH 注意
109 ライブラリによるサポートについては \fBnuma\fP(7)  を参照。
110 .SH 関連項目
111 \fBgetcpu\fP(2), \fBmbind\fP(2), \fBmmap\fP(2), \fBset_mempolicy\fP(2), \fBnuma\fP(3),
112 \fBnuma\fP(7), \fBnumactl\fP(8)
113 .SH この文書について
114 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
115 である。プロジェクトの説明とバグ報告に関する情報は
116 http://www.kernel.org/doc/man\-pages/ に書かれている。