OSDN Git Service

(split) Convert release and draft pages to UTF-8.
[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 .\" Permission is granted to make and distribute verbatim copies of this
5 .\" manual provided the copyright notice and this permission notice are
6 .\" preserved on all copies.
7 .\"
8 .\" Permission is granted to copy and distribute modified versions of this
9 .\" manual under the conditions for verbatim copying, provided that the
10 .\" entire resulting derived work is distributed under the terms of a
11 .\" permission notice identical to this one.
12 .\"
13 .\" Since the Linux kernel and libraries are constantly changing, this
14 .\" manual page may be incorrect or out-of-date.  The author(s) assume no
15 .\" responsibility for errors or omissions, or for damages resulting from
16 .\" the use of the information contained herein.
17 .\"
18 .\" Formatted or processed versions of this manual, if unaccompanied by
19 .\" the source, must acknowledge the copyright and authors of this work.
20 .\"
21 .\" 2006-02-03, mtk, substantial wording changes and other improvements
22 .\" 2007-08-27, Lee Schermerhorn <Lee.Schermerhorn@hp.com>
23 .\"     more precise specification of behavior.
24 .\"
25 .\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI
26 .\"         all rights reserved.
27 .\" Translated 2006-08-14, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.39
28 .\" Updated 2008-02-13, Akihiro MOTOKI, LDP v2.77
29 .\" Updated 2008-08-06, Akihiro MOTOKI, LDP v3.05
30 .\" Updated 2008-08-21, Akihiro MOTOKI, LDP v3.07
31 .\" Updated 2008-11-19, Akihiro MOTOKI, LDP v3.13
32 .\"
33 .TH GET_MEMPOLICY 2 2008-08-15 Linux "Linux Programmer's Manual"
34 .SH 名前
35 get_mempolicy \- プロセスの NUMA メモリのポリシーを取得する
36 .SH 書式
37 .nf
38 .B "#include <numaif.h>"
39 .sp
40 .BI "int get_mempolicy(int *" mode ", unsigned long *" nodemask ,
41 .BI "                  unsigned long " maxnode ", unsigned long " addr ,
42 .BI "                  unsigned long " flags );
43 .sp
44 \fI\-lnuma\fP でリンクする。
45 .fi
46 .SH 説明
47 .BR get_mempolicy ()
48 は、呼び出し元プロセスもしくは指定されたメモリアドレスの
49 NUMA ポリシーを
50 .I flags
51 の設定に従って取得する。
52
53 NUMA (非対称メモリアクセス) マシンでは、CPU により
54 メモリコントローラが異なり、距離も異なっている。
55 メモリポリシーは、どのノードからメモリをそのプロセスに
56 割り当てるかを定めるものである。
57
58 .I flags
59 に 0 が指定された場合、
60 .RB ( set_mempolicy (2)
61 で設定された)
62 呼び出し元プロセスのデフォルトポリシーに関する情報を返す。
63 返されたポリシー
64 .RI [ mode
65
66 .IR nodemask ]
67
68 .BR set_mempolicy (2)
69 に渡すことで、そのプロセスのポリシーを
70 .BR get_mempolicy ()
71 を呼び出した時点の状態に戻すことができる。
72
73 .I flags
74
75 .B MPOL_F_MEMS_ALLOWED
76 (Linux 2.6.24 以降で利用可能) を指定すると、
77 .I mode
78 引き数は無視され、
79 そのプロセスがその後の
80 .BR mbind (2)
81
82 .BR set_mempolicy (2)
83
84 .RI [ "モードフラグ"
85 が指定されていない場合に ] 指定できるノード (メモリ) の集合が
86 .I nodemask
87 に返される。
88 .B MPOL_F_MEMS_ALLOWED
89 を、
90 .B MPOL_F_ADDR
91
92 .B MPOL_F_NODE
93 と同時に指定することはできない。
94
95 .I flags
96
97 .B MPOL_F_ADDR
98 が指定された場合、
99 .I addr
100 で指定されたメモリアドレスに適用されているポリシーに関する情報を返す。
101 .BR mbind (2)
102
103 .BR numa (3)
104 で説明されているヘルパー関数を使って、
105 .I addr
106 を含むメモリ領域に対するポリシーが設定されていた場合には、
107 返されるポリシーはプロセスのデフォルトポリシーと違うことがある。
108
109 .I mode
110 引き数が NULL でない場合、
111 .BR get_mempolicy ()
112 は要求された NUMA ポリシーのモードと追加の
113 .I "モードフラグ"
114
115 .I mode
116 が指す場所に格納する。
117 .I nodemask
118 が NULL 以外の場合、そのポリシーに対応するノードマスクを
119 この引き数が指す場所に格納する。
120 .I maxnode
121 には
122 .I nodemask
123 に格納できるノード ID の数、つまり最大ノード ID に 1 を足した値を指定する。
124 .I maxnode
125 で指定された値は常に
126 .I sizeof(unsigned long)
127 の倍数に切り上げられる。
128
129 .I flags
130
131 .B MPOL_F_NODE
132
133 .B MPOL_F_ADDR
134 の両方が指定された場合、
135 .BR get_mempolicy ()
136 はアドレス
137 .I addr
138 が割り当てられているノードのノード ID を
139 .I mode
140 が指す場所に入れて返す。
141 指定されたアドレスにどのページもまだ割り当てられていない場合、
142 .BR get_mempolicy ()
143 は、あたかもそのプロセスがそのアドレスに対して読み込みアクセスを
144 実行したかのようにページの割り当てを行い、ページが割り当てられた
145 ノードの ID を返す。
146
147 .I flags
148
149 .B MPOL_F_NODE
150 は指定されたが、
151 .B MPOL_F_ADDR
152 は指定されていない場合で、かつ
153 そのプロセスの現在のポリシーが
154 .B MPOL_INTERLEAVE
155 の場合、
156 .BR get_mempolicy ()
157 は、そのプロセスに対して割り当てられたカーネルの内部ページで
158 次にインターリーブ用に使用されるノードのノード ID を、
159 NULL でない
160 .I mode
161 引き数が指す場所に入れて返す。
162 .\" Note:  code returns next interleave node via 'mode' argument -Lee Schermerhorn
163 読み込みアクセス用として
164 .B MAP_PRIVATE
165 フラグ付きで
166 .BR mmap (2)
167 したプロセスメモリ領域や、
168 任意のアクセス用として
169 .B MAP_SHARED
170 フラグ付きで
171 .BR mmap (2)
172 したメモリ領域の、メモリマップされたファイルに対するページも
173 上記のプロセスに対して割り当てられたページに含まれる。
174
175 他のフラグは予約されている。
176
177 設定可能なポリシーの概要については
178 .BR set_mempolicy (2)
179 を参照。
180 .SH 返り値
181 成功すると、
182 .BR get_mempolicy ()
183 は 0 を返す。エラーの場合、\-1 を返し、
184 .I errno
185 にエラーを示す値を設定する。
186 .SH エラー
187 .TP
188 .B EFAULT
189 .\"motoki: Part of all of the memory は Part or all .. の間違い?
190 .I nodemask
191
192 .I maxnode
193 で指定されたメモリ領域の一部または全部が、
194 呼び出し元がアクセス可能なアドレス空間外を指している。
195 .TP
196 .B EINVAL
197 .I maxnode
198 で指定された値がシステムがサポートするノード ID の数よりも少ない。
199 または、
200 .I flags
201
202 .B MPOL_F_NODE
203 でも
204 .B MPOL_F_ADDR
205 でもない値が指定された。
206 または、
207 .I flags
208
209 .B MPOL_F_ADDR
210 が指定されており、
211 .I addr
212 が NULL である。
213 または、
214 .I flags
215
216 .B MPOL_F_ADDR
217 がされておらず、
218 .I addr
219 が NULL でない。
220 または、
221 .I flags
222
223 .B MPOL_F_NODE
224 が指定されており、
225 .B MPOL_F_ADDR
226 が指定されておらず、
227 プロセスの現在のポリシーが
228 .B MPOL_INTERLEAVE
229 でない。
230 または、
231 .I flags
232
233 .B MPOL_F_MEMS_ALLOWED
234 が指定されており、さらに
235 .B MPOL_F_ADDR
236
237 .B MPOL_F_NODE
238 のいずれかが指定されている。
239 (他にも
240 .B EINVAL
241 となる場合がある。)
242 .SH バージョン
243 .BR get_mempolicy ()
244 システムコールはバージョン 2.6.7 で Linux カーネルに追加された。
245 .SH 準拠
246 このシステムコールは Linux 固有である。
247 .SH 注意
248 ライブラリによるサポートについては
249 .BR numa (7)
250 を参照。
251 .SH 関連項目
252 .BR getcpu (2),
253 .BR mbind (2),
254 .BR mmap (2),
255 .BR set_mempolicy (2),
256 .BR numa (3),
257 .BR numa (7),
258 .BR numactl (8)