• R/O
  • HTTP
  • SSH
  • HTTPS

LDP_man-pages: Commit


Commit MetaInfo

Revisión1c59eb659aae3c3680711e5b7e9c75e2791464d8 (tree)
Tiempo2015-01-31 00:20:11
AutorAkihiro MOTOKI <amotoki@gmai...>
CommiterAkihiro MOTOKI

Log Message

Complete several pages

sprof.1
delete_module.2
init_module.2
getauxval.3
mallinfo.3

Cambiar Resumen

Diferencia incremental

--- /dev/null
+++ b/draft/man1/sprof.1
@@ -0,0 +1,264 @@
1+.\" Copyright (C) 2014 Michael Kerrisk <mtk.manpages@gmail.com>
2+.\"
3+.\" %%%LICENSE_START(VERBATIM)
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. The author(s) may not
17+.\" have taken the same level of care in the production of this manual,
18+.\" which is licensed free of charge, as they might when working
19+.\" professionally.
20+.\"
21+.\" Formatted or processed versions of this manual, if unaccompanied by
22+.\" the source, must acknowledge the copyright and authors of this work.
23+.\" %%%LICENSE_END
24+.\"
25+.\"*******************************************************************
26+.\"
27+.\" This file was generated with po4a. Translate the source file.
28+.\"
29+.\"*******************************************************************
30+.TH SPROF 1 2014\-06\-24 Linux "Linux User Manual"
31+.SH 名前
32+sprof \- 共有オブジェクトのプロファイルデータを読み出して表示する
33+.SH 書式
34+.nf
35+\fBsprof\fP [\fIoption\fP]... \fIshared\-object\-path\fP [\fIprofile\-data\-path\fP]
36+.fi
37+.SH 説明
38+\fBsprof\fP コマンドは、 最初のコマンドライン引き数で指定された共有オブジェクトのプロファイルの概要を表示する。 2 番目のコマンドライン引き数
39+(省略可能) で指定された生成済みのプロファイルデータを使って、 プロファイルの概要が生成される。 プロファイルデータのパス名が省略された場合、
40+\fBsprof\fP は、 共有オブジェクトの soname を使ってパス名を元に、 カレントディレクトリに
41+\fI<soname>.profile\fP という名前のファイルを探して、 プロファイルデータを特定しようとする。
42+.SH オプション
43+以下のコマンドラインオプションは生成されるプロファイリング出力を指定する。
44+.TP
45+\fB\-c\fP, \fB\-\-call\-pairs\fP
46+共有オブジェクトで公開されているインターフェースに対して呼び出し経路のペアのリストを表示する。 各経路が使用された回数も表示される。
47+.TP
48+\fB\-p\fP, \fB\-\-flat\-profile\fP
49+監視対象のオブジェクトの全関数の、 回数と tick が入った flat profile を生成する。
50+.TP
51+\fB\-q\fP, \fB\-\-graph\fP
52+コールグラフを生成する。
53+.PP
54+上記のオプションがどれも指定されなかった場合のデフォルトの動作は、 flat profile とコールグラフが表示される。
55+.PP
56+以下のコマンドラインオプションも使用できる。
57+.TP
58+\fB\-?\fP, \fB\-\-help\fP
59+コマンドラインオプションと引き数の概要を表示し終了する。
60+.TP
61+\fB\-\-usage\fP
62+使用方法の簡潔な概要を表示し終了する。
63+.TP
64+\fB\-V\fP, \fB\-\-version\fP
65+プログラムのバージョンを表示し終了する。
66+.SH 準拠
67+\fBsprof\fP コマンドは GNU 拡張であり、 POSIX.1 には存在しない。
68+.SH 例
69+以下は \fBsprof\fP の使用例を示したものである。 この例では、メインプログラムで共有ライブラリ内の 2 つの関数を呼び出している。 最初に、
70+メインプログラムのコードは以下の通りである。
71+
72+.in +4n
73+.nf
74+$ \fBcat prog.c\fP
75+#include <stdlib.h>
76+
77+void x1(void);
78+void x2(void);
79+
80+int
81+main(int argc, char *argv[])
82+{
83+ x1();
84+ x2();
85+ exit(EXIT_SUCCESS);
86+}
87+.fi
88+.in
89+.PP
90+関数 \fIx1()\fP と \fIx2()\fP は以下のソースファイルで定義されており、 このファイルから共有ライブラリが構成される。
91+
92+.in +4n
93+.nf
94+$ \fBcat libdemo.c\fP
95+#include <unistd.h>
96+
97+void
98+consumeCpu1(int lim)
99+{
100+ int j;
101+
102+ for (j = 0; j < lim; j++)
103+ getppid();
104+}
105+
106+void
107+x1(void) {
108+ int j;
109+
110+ for (j = 0; j < 100; j++)
111+ consumeCpu1(200000);
112+}
113+
114+void
115+consumeCpu2(int lim)
116+{
117+ int j;
118+
119+ for (j = 0; j < lim; j++)
120+ getppid();
121+}
122+
123+void
124+x2(void)
125+{
126+ int j;
127+
128+ for (j = 0; j < 1000; j++)
129+ consumeCpu2(10000);
130+}
131+.fi
132+.in
133+.PP
134+ここで、 実際の名前は \fIlibdemo.so.1.0.1\fP で soname は \fIlibdemo.so.1\fP で共有ライブラリを構成する。
135+
136+.in +4n
137+.nf
138+$ \fBcc \-g \-fPIC \-shared \-Wl,\-soname,libdemo.so.1 \e\fP
139+ \fB\-o libdemo.so.1.0.1 libdemo.c\fP
140+.fi
141+.in
142+.PP
143+次に、 ライブラリ soname とライブラリのリンカー名へのシンボリックリンクを作成する。
144+
145+.in +4n
146+.nf
147+$ \fBln \-sf libdemo.so.1.0.1 libdemo.so.1\fP
148+$ \fBln \-sf libdemo.so.1 libdemo.so\fP
149+.fi
150+.in
151+.PP
152+続けて、 共有ライブラリとリンクしてメインプログラムをコンパイルし、 プログラムが依存する共有ライブラリの一覧を表示する。
153+
154+.in +4n
155+.nf
156+$ \fBcc \-g \-o prog prog.c \-L. \-ldemo\fP
157+$ \fBldd prog\fP
158+ linux\-vdso.so.1 => (0x00007fff86d66000)
159+ libdemo.so.1 => not found
160+ libc.so.6 => /lib64/libc.so.6 (0x00007fd4dc138000)
161+ /lib64/ld\-linux\-x86\-64.so.2 (0x00007fd4dc51f000)
162+.fi
163+.in
164+.PP
165+共有ライブラリのプロファイル情報を取得するために、 環境変数 \fBLD_PROFILE\fP にこのライブラリの soname を設定する。
166+
167+.in +4n
168+.nf
169+$ \fBexport LD_PROFILE=libdemo.so.1\fP
170+.fi
171+.in
172+.PP
173+環境変数 \fBLD_PROFILE_OUTPUT\fP にプロファイル情報を出力するディレクトリのパス名を設定し、
174+このディレクトリが存在しない場合は作成する。
175+
176+.in +4n
177+.nf
178+$ \fBexport LD_PROFILE_OUTPUT=$(pwd)/prof_data\fP
179+$ \fBmkdir \-p $LD_PROFILE_OUTPUT\fP
180+.fi
181+.in
182+.PP
183+\fBLD_PROFILE\fP を設定すると、 プロファイルの出力は出力ファイルがすでに存在する場合は「追記」されるので、
184+既存のプロファイルデータが存在しないようにしておく。
185+
186+.in +4n
187+.nf
188+$ \fBrm \-f $LD_PROFILE_OUTPUT/$LD_PROFILE.profile\fP
189+.fi
190+.in
191+.PP
192+次にプログラムを実行し、 プロファイリング出力を生成させる。 プロファイリング出力は \fBLD_PROFILE_OUTPUT\fP
193+で指定されたディレクトリにファイルが書き込まれる。
194+
195+.in +4n
196+.nf
197+$ \fBLD_LIBRARY_PATH=. ./prog\fP
198+$ \fBls prof_data\fP
199+libdemo.so.1.profile
200+.fi
201+.in
202+.PP
203+\fBsprof \-p\fP オプションを使って、 呼び出し回数と tick 数が含まれる flat プロファイルを生成する。
204+
205+.in +4n
206+.nf
207+$ \fBsprof \-p libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile\fP
208+Flat profile:
209+
210+Each sample counts as 0.01 seconds.
211+ % cumulative self self total
212+ time seconds seconds calls us/call us/call name
213+ 60.00 0.06 0.06 100 600.00 consumeCpu1
214+ 40.00 0.10 0.04 1000 40.00 consumeCpu2
215+ 0.00 0.10 0.00 1 0.00 x1
216+ 0.00 0.10 0.00 1 0.00 x2
217+.fi
218+.in
219+.PP
220+\fBsprof \-q\fP オプションを使うと、 コールグラフが生成される。
221+
222+.in +4n
223+.nf
224+$ \fBsprof \-q libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile\fP
225+
226+index % time self children called name
227+
228+ 0.00 0.00 100/100 x1 [1]
229+[0] 100.0 0.00 0.00 100 consumeCpu1 [0]
230+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
231+ 0.00 0.00 1/1 <UNKNOWN>
232+[1] 0.0 0.00 0.00 1 x1 [1]
233+ 0.00 0.00 100/100 consumeCpu1 [0]
234+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
235+ 0.00 0.00 1000/1000 x2 [3]
236+[2] 0.0 0.00 0.00 1000 consumeCpu2 [2]
237+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
238+ 0.00 0.00 1/1 <UNKNOWN>
239+[3] 0.0 0.00 0.00 1 x2 [3]
240+ 0.00 0.00 1000/1000 consumeCpu2 [2]
241+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
242+.fi
243+.in
244+.PP
245+上記や以下の例で、 "<UNKNOWN>" の文字列は、 識別子がプロファイルされたオブジェクトの外部にあることを表している
246+(この例では "<UNKNOWN>" になっているのは \fImain()\fP 内のオブジェクトである)。
247+.PP
248+\fBsprof \-c\fP オプションを使うと、 呼び出しの組とその発生回数のリストが生成される。
249+
250+.in +4n
251+.nf
252+$ \fBsprof \-c libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile\fP
253+<UNKNOWN> x1 1
254+x1 consumeCpu1 100
255+<UNKNOWN> x2 1
256+x2 consumeCpu2 1000
257+.fi
258+.in
259+.SH 関連項目
260+\fBgprof\fP(1), \fBldd\fP(1), \fBld.so\fP(8)
261+.SH この文書について
262+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
263+である。プロジェクトの説明とバグ報告に関する情報は
264+http://www.kernel.org/doc/man\-pages/ に書かれている。
--- /dev/null
+++ b/draft/man2/delete_module.2
@@ -0,0 +1,133 @@
1+.\" Copyright (C) 2012 Michael Kerrisk <mtk.manpages@gmail.com>
2+.\"
3+.\" %%%LICENSE_START(VERBATIM)
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. The author(s) may not
17+.\" have taken the same level of care in the production of this manual,
18+.\" which is licensed free of charge, as they might when working
19+.\" professionally.
20+.\"
21+.\" Formatted or processed versions of this manual, if unaccompanied by
22+.\" the source, must acknowledge the copyright and authors of this work.
23+.\" %%%LICENSE_END
24+.\"
25+.\"*******************************************************************
26+.\"
27+.\" This file was generated with po4a. Translate the source file.
28+.\"
29+.\"*******************************************************************
30+.\"
31+.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved.
32+.\" Translated 2006-07-29, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
33+.\"
34+.TH DELETE_MODULE 2 2014\-05\-10 Linux "Linux Programmer's Manual"
35+.SH 名前
36+delete_module \- カーネルモジュールをアンロードする
37+.SH 書式
38+.nf
39+\fBint delete_module(const char *\fP\fIname\fP\fB, int \fP\fIflags\fP\fB);\fP
40+.fi
41+
42+\fI注意\fP: この関数の宣言は glibc のヘッダーでは提供されていない。「注意」を参照。
43+.SH 説明
44+\fBdelete_module\fP() システムコールは、 \fIname\fP で特定される未使用のロード可能なモジュールのエントリーを削除しようとする。
45+モジュールに \fIexit\fP 関数がある場合、 モジュールをアンロードする前にこの関数が実行される。 \fIflags\fP
46+引き数は、以下で説明するようにシステムコールの動作を変更するのに使用される。 このシステムコールには特権が必要である。
47+
48+モジュールの削除は以下のルールにしたがって行われる。
49+.IP 1. 4
50+このモジュールに依存している (このモジュールで定義されているシンボルを参照している) モジュールがロードされている場合、 この呼び出しは失敗する。
51+.IP 2.
52+それ以外の場合で、 モジュールの参照カウント (このモジュールを現在使用しているプロセス数) が 0 であれば、 モジュールは直ちにアンロードされる。
53+.IP 3.
54+.\" O_TRUNC == KMOD_REMOVE_FORCE in kmod library
55+.\" O_NONBLOCK == KMOD_REMOVE_NOWAIT in kmod library
56+モジュールの参照カウントが 0 でない場合、 その動作は \fIflags\fP にセットされたビットによって決まる。 通常の使用時は (「注意」参照)、
57+\fBO_NONBLOCK\fP は常に指定され、 \fBO_TRUNC\fP フラグが追加で指定されることがある。
58+
59+\fIflags\fP の組み合わせが持つ効果は以下のとおりである。
60+.RS 4
61+.TP
62+\fBflags == O_NONBLOCK\fP
63+エラーの場合、 呼び出しは直ちに返る。
64+.TP
65+\fBflags == (O_NONBLOCK | O_TRUNC)\fP
66+参照カウントが 0 以外かどうかに関わらず、 直ちにモジュールをアンロードする。
67+.TP
68+\fB(flags & O_NONBLOCK) == 0\fP
69+\fIflags\fP に \fBO_NONBLOCK\fP が指定されなかった場合、 以下のステップで処理が行われる。
70+.RS
71+.IP * 3
72+新しい参照を許可しないように、 指定されたモジュールにマークを付ける。
73+.IP *
74+モジュールの参照カウントが 0 でない場合、 参照カウントが 0 になるまで、 呼び出し元は割り込み不可のスリープ状態
75+(\fBTASK_UNINTERRUPTIBLE\fP) に置かれる。 参照カウントが 0 になった時点で、 呼び出し元の停止が解除される。
76+.IP *
77+モジュールは通常通りの方法でアンロードされる。
78+.RE
79+.RE
80+.PP
81+\fBO_TRUNC\fP フラグには上記のルールに加えてもう一つの効果がある。 デフォルトでは、 モジュールに \fIinit\fP 関数があるが \fIexit\fP
82+関数がない場合、 そのモジュールを削除しようとすると失敗する。 しかし、 \fBO_TRUNC\fP が指定された場合、 この要件はスキップされる。
83+.PP
84+\fBO_TRUNC\fP フラグの使用は危険である! カーネルが \fBCONFIG_MODULE_FORCE_UNLOAD\fP で作成されていない場合、
85+このフラグは黙って無視される (通常は \fBCONFIG_MODULE_FORCE_UNLOAD\fP は有効になっている)。
86+このフラグを使うとカーネルにゴミが残ることになる (TAINT_FORCED_RMMOD)。
87+.SH 返り値
88+成功の場合 0 が返される。エラーの場合 \-1 が返され、 \fIerrno\fP に適切な値が設定される。
89+.SH エラー
90+.TP
91+\fBEBUSY\fP
92+モジュールは"live" ではない (モジュールがまだ初期化中か、 すでに削除のマークが付けられている)。 モジュールに \fIinit\fP 関数があるが
93+\fIexit\fP 関数がなく、 \fIflags\fP に \fBO_TRUNC\fP が指定されていなかった。
94+.TP
95+\fBEFAULT\fP
96+\fIname\fP がプロセスがアクセスできるアドレス空間外の場所を参照している。
97+.TP
98+\fBENOENT\fP
99+その名前のモジュールが存在しない。
100+.TP
101+\fBEPERM\fP
102+呼び出し元が特権 (\fBCAP_SYS_MODULE\fP ケーパビリティ) を持っていなかった。 または、 モジュールのアンロードが無効になっている
103+(\fBproc\fP(5) の \fI/proc/sys/kernel/modules_disabled\fP を参照)。
104+.TP
105+\fBEWOULDBLOCK\fP
106+他のモジュールがこのモジュールに依存している。または、 \fIflags\fP に \fBO_NONBLOCK\fP が指定されたが、
107+このモジュールの参照カウントが 0 以外で \fIflags\fP に \fBO_TRUNC\fP が指定されていなかった。
108+.SH 準拠
109+\fBdelete_module\fP() は Linux 固有である。
110+.SH 注意
111+\fBdelete_module\fP() システムコールは glibc ではサポートされていない。 glibc ヘッダーでは宣言は提供されていないが、
112+歴史の紆余曲折を経て glibc はこのシステムコールに対する ABI を公開していない。
113+したがって、このシステムコールを利用するには、自分のコードの中で手動でインターフェースを宣言すればよい。 \fBsyscall\fP(2)
114+を使ってシステムコールを起動できる。
115+
116+\fIflags\fP に \fBO_NONBLOCK\fP が指定されていない場合に起こる可能性がある割り込み不可のスリープは望ましくないと考えられている。
117+なぜなら、 スリープしているプロセスは kill できない状態 (unkillable state) のままになるからである。 Linux 3.7
118+時点では、 \fBO_NONBLOCK\fP の指定は省略可能だが、 将来のカーネルでは必須になるだろう。
119+.SS "Linux 2.4 以前"
120+Linux 2.4 以前では、 このシステムコールの引き数は 1 つだけであった。
121+
122+\fB int delete_module(const char *\fP\fIname\fP\fB);\fP
123+
124+\fIname\fP が NULL の場合、 auto\-clean のマークがついたすべての未使用のモジュールが削除される。
125+
126+Linux 2.4 以前の \fBdelete_module\fP() の動作のより詳細な違いは、 現在のところこのマニュアルページでは説明\fIしない\fP。
127+.SH 関連項目
128+\fBcreate_module\fP(2), \fBinit_module\fP(2), \fBquery_module\fP(2), \fBlsmod\fP(8),
129+\fBmodprobe\fP(8), \fBrmmod\fP(8)
130+.SH この文書について
131+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
132+である。プロジェクトの説明とバグ報告に関する情報は
133+http://www.kernel.org/doc/man\-pages/ に書かれている。
--- /dev/null
+++ b/draft/man2/init_module.2
@@ -0,0 +1,231 @@
1+.\" Copyright (C) 2012 Michael Kerrisk <mtk.manpages@gmail.com>
2+.\" A few fragments remain from a version
3+.\" Copyright (C) 1996 Free Software Foundation, Inc.
4+.\"
5+.\" %%%LICENSE_START(VERBATIM)
6+.\" Permission is granted to make and distribute verbatim copies of this
7+.\" manual provided the copyright notice and this permission notice are
8+.\" preserved on all copies.
9+.\"
10+.\" Permission is granted to copy and distribute modified versions of this
11+.\" manual under the conditions for verbatim copying, provided that the
12+.\" entire resulting derived work is distributed under the terms of a
13+.\" permission notice identical to this one.
14+.\"
15+.\" Since the Linux kernel and libraries are constantly changing, this
16+.\" manual page may be incorrect or out-of-date. The author(s) assume no
17+.\" responsibility for errors or omissions, or for damages resulting from
18+.\" the use of the information contained herein. The author(s) may not
19+.\" have taken the same level of care in the production of this manual,
20+.\" which is licensed free of charge, as they might when working
21+.\" professionally.
22+.\"
23+.\" Formatted or processed versions of this manual, if unaccompanied by
24+.\" the source, must acknowledge the copyright and authors of this work.
25+.\" %%%LICENSE_END
26+.\"
27+.\"*******************************************************************
28+.\"
29+.\" This file was generated with po4a. Translate the source file.
30+.\"
31+.\"*******************************************************************
32+.\"
33+.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved.
34+.\" Translated 2006-07-29, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
35+.\"
36+.TH INIT_MODULE 2 2014\-05\-10 Linux "Linux Programmer's Manual"
37+.SH 名前
38+init_module, finit_module \- カーネルモジュールをロードする
39+.SH 書式
40+.nf
41+\fBint init_module(void *\fP\fImodule_image\fP\fB, unsigned long \fP\fIlen\fP\fB,\fP
42+\fB const char *\fP\fIparam_values\fP\fB);\fP
43+
44+\fBint finit_module(int \fP\fIfd\fP\fB, const char *\fP\fIparam_values\fP\fB,\fP
45+\fB int \fP\fIflags\fP\fB);\fP
46+.fi
47+
48+\fI注意\fP: glibc では、 ヘッダーファイルでの \fBinit_module\fP() の宣言はなく、 \fBfinit_module\fP()
49+のラッパー関数も提供されていない。 「注意」の節を参照。
50+.SH 説明
51+\fBinit_module\fP() は ELF イメージをカーネル空間にロードし、 必要なシンボルの配置変更を行い、
52+モジュールパラメーターを呼び出し元から指定された値に初期化し、 最後にそのモジュールの \fIinit\fP 関数を実行する。
53+このシステムコールには特権が必要である。
54+
55+\fImodule_image\fP 引き数はロードするバイナリーイメージが入ったバッファーを指し、 \fIlen\fP はバッファーのサイズを指定する。
56+モジュールイメージは、 実行中のカーネル用に作成された有効な ELF イメージである必要がある。
57+
58+\fIparam_values\fP 引き数はモジュールパラメーター値を指定するスペース区切りの文字列である (モジュールパラメーターは
59+\fBmodule_param\fP() や \fBmodule_param_array\fP() を使ってモジュール内で定義される)。
60+カーネルはこの文字列を解釈し、指定されたパラメーターを初期化する。 各パラメーター指定は以下の形式である。
61+
62+\fIname\fP[\fB=\fP\fIvalue\fP[\fB,\fP\fIvalue\fP...]]
63+
64+パラメーター \fIname\fP はモジュール内で \fImodule_param\fP() を使って定義されているパラメーターのいずれか一つである (Linux
65+カーネルのソースファイル \fIinclude/linux/moduleparam.h\fP を参照)。 パラメーター \fIvalue\fP は \fIbool\fP
66+か \fIinvbool\fP パラメーターの場合は省略可能である。 配列パラメーターの値はカンマ区切りのリストで指定される。
67+.SS finit_module()
68+.\" commit 34e1169d996ab148490c01b65b4ee371cf8ffba2
69+.\" https://lwn.net/Articles/519010/
70+\fBfinit_module\fP() システムコールは \fBinit_module\fP() と同様だが、 ファイルディスクリプター \fIfd\fP
71+からモジュールをロードする。 カーネルモジュールの信頼性をファイルシステムにおける場所から判定できる場合、この方法は有効である。
72+この方法が利用できる場合、 モジュールの信頼性を判定するのに暗号で署名されたモジュールを使用することによるオーバーヘッドを避ける事ができる。
73+\fIparam_values\fP 引き数は \fBinit_module\fP() と同じである。
74+
75+.\" commit 2f3238aebedb243804f58d62d57244edec4149b2
76+\fIflags\fP 引き数で \fBfinit_module\fP() の動作を変更できる。 \fIflags\fP は以下のフラグの 0
77+個以上の論理和をとって作成したビットマスクである。
78+.TP
79+\fBMODULE_INIT_IGNORE_MODVERSIONS\fP
80+シンボルのバージョンハッシュを無視する。
81+.TP
82+\fBMODULE_INIT_IGNORE_VERMAGIC\fP
83+カーネルのバージョン magic を無視する。
84+.PP
85+.\" http://www.tldp.org/HOWTO/Module-HOWTO/basekerncompat.html
86+.\" is dated, but informative
87+そのモジュールがロードされるカーネルに合致することを保証するためのモジュールに組み込みの安全チェックがある。 これらのチェックは、
88+モジュールの作成時に記録され、 モジュールのロード時に検査される。 最初に、 モジュールはカーネルのバージョン番号と主要な機能 (CPU 種別など)
89+が入った "vermagic" 文字列を記録する。 次に、 モジュールが \fBCONFIG_MODVERSIONS\fP
90+設定オプションを有効にして作成されている場合、 バージョンハッシュがモジュールが使用するシンボルごとに記録される。
91+このハッシュはシンボルに対応する関数の引き数と返り値の型を基づいて計算される。 この場合、
92+シンボルのバージョンハッシュは十分に信頼できると考えられているため、 "vermagic" 文字列内のカーネルのバージョン番号は無視される。
93+
94+\fBMODULE_INIT_IGNORE_VERMAGIC\fP フラグは "vermagic" 文字列を無視することを意味し、
95+\fBMODULE_INIT_IGNORE_MODVERSIONS\fP フラグはシンボルのバージョンハッシュを無視することを意味する。
96+カーネルが強制ロードを許可するように作成されている場合 (\fBCONFIG_MODULE_FORCE_LOAD\fP が有効になっている場合)、
97+モジュールのロードは継続され、 そうでない場合は不正なモジュールに対して返るのと同じ \fBENOEXEC\fP で失敗する。
98+.SH 返り値
99+成功の場合、これらのシステムコールは 0 を返す。エラーの場合 \-1 が返され、 \fIerrno\fP に適切な値が設定される。
100+.SH エラー
101+.TP
102+\fBEBADMSG\fP (Linux 3.7 以降)
103+モジュールの署名が正しい形式ではない。
104+.TP
105+\fBEBUSY\fP
106+このモジュールがシンボル参照を解決する際にタイムアウトが起こった。
107+.TP
108+\fBEFAULT\fP
109+アドレス引き数が、プロセスがアクセスできるアドレス空間外の場所を参照していた。
110+.TP
111+\fBENOKEY\fP (Linux 3.7 以降)
112+.\" commit 48ba2462ace6072741fd8d0058207d630ce93bf1
113+.\" commit 1d0059f3a468825b5fc5405c636a2f6e02707ffa
114+.\" commit 106a4ee258d14818467829bf0e12aeae14c16cd7
115+モジュールの署名が無効であるか、 カーネルがこのモジュール用の鍵を持っていない。 このエラーが返されるのは、 カーネルが
116+\fBCONFIG_MODULE_SIG_FORCE\fP で作成されている場合のみである。 カーネルでこのオプションが有効になっていない場合、
117+無効なモジュールや署名されていないモジュールはカーネルのゴミになる。
118+.TP
119+\fBENOMEM\fP
120+メモリ不足。
121+.TP
122+\fBEPERM\fP
123+呼び出し元が特権 (\fBCAP_SYS_MODULE\fP ケーパビリティ) を持っていなかった。もしくはモジュールのロードが無効になっている
124+(\fBproc\fP(5) の \fI/proc/sys/kernel/modules_disabled\fP を参照)。
125+.PP
126+\fBinit_module\fP() では以下のエラーも発生する場合がある。
127+.TP
128+\fBEEXIST\fP
129+その名前のモジュールがすでにロードされている。
130+.TP
131+\fBEINVAL\fP
132+.\" .TP
133+.\" .BR EINVAL " (Linux 2.4 and earlier)"
134+.\" Some
135+.\" .I image
136+.\" slot is filled in incorrectly,
137+.\" .I image\->name
138+.\" does not correspond to the original module name, some
139+.\" .I image\->deps
140+.\" entry does not correspond to a loaded module,
141+.\" or some other similar inconsistency.
142+\fIparam_values\fP が無効、 または \fImodule_image\fP の ELF イメージの一部分に矛盾がある。
143+.TP
144+\fBENOEXEC\fP
145+\fImodule_image\fP で指定されたバイナリーイメージが ELF イメージではない、 もしくは無効な ELF イメージや別のアーキテクチャー用の
146+ELF イメージである。
147+.PP
148+\fBfinit_module\fP() では以下のエラーも発生する場合がある。
149+.TP
150+\fBEBADF\fP
151+\fIfd\fP が参照するファイルが読み出し用にオープンされていない。
152+.TP
153+\fBEFBIG\fP
154+\fIfd\fP が参照するファイルが大きすぎる。
155+.TP
156+\fBEINVAL\fP
157+\fIflags\fP が無効である。
158+.TP
159+\fBENOEXEC\fP
160+\fIfd\fP がオープンされたファイルを参照していない。
161+.PP
162+上記のエラーに加え、 モジュールの \fIinit\fP 関数が実行されてエラーが発生した場合には、 \fBinit_module\fP() や
163+\fBfinit_module\fP() は失敗し、 \fIerrno\fP に \fIinit\fP 関数が返した値が設定される。
164+.SH バージョン
165+\fBfinit_module\fP() は Linux 3.8 以降で利用可能である。
166+.SH 準拠
167+\fBinit_module\fP() と \fBfinit_module\fP() は Linux 固有である。
168+.SH 注意
169+\fBinit_module\fP() システムコールは glibc ではサポートされていない。 glibc ヘッダーでは宣言は提供されていないが、
170+歴史の紆余曲折を経て glibc はこのシステムコールに対する ABI を公開していない。
171+したがって、このシステムコールを利用するには、自分のコードの中で手動でインターフェースを宣言すればよい。 \fBsyscall\fP(2)
172+を使ってシステムコールを起動できる。
173+
174+glibc は \fBfinit_module\fP() に対するラッパー関数を提供していない。 \fBsyscall\fP(2) を使って呼び出すこと。
175+
176+現在ロードされているモジュールに関する情報は \fI/proc/modules\fP および \fI/sys/module\fP
177+以下のモジュール単位のサブディレクトリ内のファイルツリーで参照できる。
178+
179+Linux カーネルのソースファイル \fIinclude/linux/module.h\fP には背景に関する有用な情報がある。
180+.SS "Linux 2.4 以前"
181+.PP
182+Linux 2.4 以前では \fBinit_module\fP() システムコールはかなり違ったものであった。
183+
184+\fB#include <linux/module.h>\fP
185+
186+\fB int init_module(const char *\fP\fIname\fP\fB, struct module *\fP\fIimage\fP\fB);\fP
187+
188+(ユーザー空間アプリケーションは \fBquery_module\fP() を呼び出してどのバージョンの \fBinit_module\fP()
189+が利用可能かを検出できる。 \fBquery_module\fP() の呼び出しは Linux 2.6 以降ではエラー \fBENOSYS\fP で失敗する。)
190+
191+古いバージョンのシステムコールは、 \fIimage\fP が指す再配置されたモジュールイメージをカーネル空間にロードし、 モジュールの \fIinit\fP
192+関数を実行する。 呼び出し元には再配置されたイメージを提供する責任がある (Linux 2.6 以降では \fBinit_module\fP()
193+システムコールが再配置自体を行う)。
194+.PP
195+モジュールイメージは先頭部分に module 構造体があり、その後ろに 適切なコードとデータが続く。 Linux 2.2 以降では module
196+構造体は以下のように定義されている。
197+.PP
198+.in +4n
199+.nf
200+struct module {
201+ unsigned long size_of_struct;
202+ struct module *next;
203+ const char *name;
204+ unsigned long size;
205+ long usecount;
206+ unsigned long flags;
207+ unsigned int nsyms;
208+ unsigned int ndeps;
209+ struct module_symbol *syms;
210+ struct module_ref *deps;
211+ struct module_ref *refs;
212+ int (*init)(void);
213+ void (*cleanup)(void);
214+ const struct exception_table_entry *ex_table_start;
215+ const struct exception_table_entry *ex_table_end;
216+#ifdef __alpha__
217+ unsigned long gp;
218+#endif
219+};
220+.fi
221+.in
222+.PP
223+\fInext\fP と \fIrefs\fP 以外の全てのポインター要素はモジュール本体内部を指し、 カーネル空間での適切な値で初期化される
224+(つまり、モジュールの残りの 部分で再配置される) ことが期待される。
225+.SH 関連項目
226+\fBcreate_module\fP(2), \fBdelete_module\fP(2), \fBquery_module\fP(2), \fBlsmod\fP(8),
227+\fBmodprobe\fP(8)
228+.SH この文書について
229+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
230+である。プロジェクトの説明とバグ報告に関する情報は
231+http://www.kernel.org/doc/man\-pages/ に書かれている。
--- /dev/null
+++ b/draft/man3/getauxval.3
@@ -0,0 +1,175 @@
1+.\" Copyright 2012 Michael Kerrisk <mtk.manpages@gmail.com>
2+.\"
3+.\" %%%LICENSE_START(VERBATIM)
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. The author(s) may not
17+.\" have taken the same level of care in the production of this manual,
18+.\" which is licensed free of charge, as they might when working
19+.\" professionally.
20+.\"
21+.\" Formatted or processed versions of this manual, if unaccompanied by
22+.\" the source, must acknowledge the copyright and authors of this work.
23+.\" %%%LICENSE_END
24+.\"
25+.\" See also https://lwn.net/Articles/519085/
26+.\"
27+.\" FIXME glibc 2.18 added AT_HWCAP2, which needs to e documented
28+.\"
29+.\"*******************************************************************
30+.\"
31+.\" This file was generated with po4a. Translate the source file.
32+.\"
33+.\"*******************************************************************
34+.TH GETAUXVAL 3 2014\-08\-19 GNU "Linux Programmer's Manual"
35+.SH 名前
36+getauxval \- 補助ベクトルから値を取得する
37+.SH 書式
38+.nf
39+\fB#include <sys/auxv.h>\fP
40+.sp
41+\fBunsigned long getauxval(unsigned long \fP\fItype\fP\fB);\fP
42+.fi
43+.SH 説明
44+\fBgetauxval\fP() 関数は補助ベクトル (auxiliary vector) から値を取得する。 補助ベクトルは、
45+プログラムが実行される際に、 カーネルの ELF バイナリーローダーがユーザー空間にある種の情報を渡すのに使われる仕組みである。
46+
47+補助ベクトルの各エントリーは、 このエントリーを示すタイプとそのタイプの値のペアで構成される。 引き数 \fItype\fP が指定されると、
48+\fBgetauxval\fP() は対応する値を返す。
49+
50+それぞれの \fItype\fP に対して返される値の詳細を以下に示す。 すべてのアーキテクチャーですべて \fItype\fP 値が存在するわけではない。
51+.TP
52+\fBAT_BASE\fP
53+プログラムインタープリター (通常は動的ローダー) のベースアドレス。
54+.TP
55+\fBAT_BASE_PLATFORM\fP
56+実プラットフォームを示す文字列。 \fBAT_PLATFORM\fP と異なる値の場合がある。 (PowerPC のみ)
57+.TP
58+\fBAT_CLKTCK\fP
59+\fBtimes\fP(2) のカウントが行われる周波数。 この値は \fIsysconf(_SC_CLK_TCK)\fP でも取得できる。
60+.TP
61+\fBAT_DCACHEBSIZE\fP
62+データキャッシュのブロックサイズ。
63+.TP
64+\fBAT_EGID\fP
65+このスレッドの実効グループ ID。
66+.TP
67+\fBAT_ENTRY\fP
68+実行ファイルのエントリーアドレス。
69+.TP
70+\fBAT_EUID\fP
71+このスレッドの実効ユーザー ID。
72+.TP
73+\fBAT_EXECFD\fP
74+プログラムのファイルディスクリプター。
75+.TP
76+\fBAT_EXECFN\fP
77+実行プログラムに使用されたパス名。
78+.TP
79+\fBAT_FLAGS\fP
80+フラグ (未使用)。
81+.TP
82+\fBAT_FPUCW\fP
83+使用された FPU 制御ワード (SuperH アーキテクチャーのみ)。 カーネルが実行した FPU 初期化に関する情報を提供するためのものである。
84+.TP
85+\fBAT_GID\fP
86+このスレッドの実グループ ID。
87+.TP
88+\fBAT_HWCAP\fP
89+プロセッサーの詳細な機能 (capabilities) を示す複数バイトからなるビットマスクへのポインターである。
90+このビットマスクの内容はハードウェア依存である (例えば、 Intel x86 アーキテクチャーに関する詳細はカーネルのソースファイル
91+\fIarch/x86/include/asm/cpufeature.h\fP を参照)。 同じ情報を人が読みやすい形になっているのが
92+\fI/proc/cpuinfo\fP である。
93+.TP
94+\fBAT_ICACHEBSIZE\fP
95+.\" .TP
96+.\" .BR AT_IGNORE
97+.\" .TP
98+.\" .BR AT_IGNOREPPC
99+.\" .TP
100+.\" .BR AT_NOTELF
101+命令キャッシュのブロックサイズ。
102+.TP
103+\fBAT_PAGESZ\fP
104+システムページサイズ (\fIsysconf(_SC_PAGESIZE)\fP が返す値と同じ)。
105+.TP
106+\fBAT_PHDR\fP
107+実行プログラムのプログラムヘッダーのアドレス。
108+.TP
109+\fBAT_PHENT\fP
110+プログラムヘッダーエントリーのサイズ。
111+.TP
112+\fBAT_PHNUM\fP
113+プログラムヘッダー数。
114+.TP
115+\fBAT_PLATFORM\fP
116+このプログラムが実行されているハードウェアプラットフォームを特定する文字列へのポインター。 動的リンカーは \fIrpath\fP
117+値の解釈を行う際にこの値を使用する。
118+.TP
119+\fBAT_RANDOM\fP
120+ランダム値が入った 16 バイトがあるアドレス。
121+.TP
122+\fBAT_SECURE\fP
123+この実行ファイルを安全に扱う必要がある場合に 0 以外の値になる。 一番よくある場合としては、 0 以外の値になるのは、 そのプロセスが
124+set\-user\-ID か set\-group\-ID されたプログラムを実行している場合である。 他の場合としては、 Linux Security
125+Module が有効になっている場合にも 0 以外の値となる。 この値が 0 以外の場合、 動的リンカーは特定の環境変数の使用を無効化し
126+(\fBld\-linux.so\fP(8) 参照)、 glibc はそのプロセスの動作を別の観点で変更する (\fBsecure_getenv\fP(3) 参照)。
127+.TP
128+\fBAT_SYSINFO\fP
129+vDSO のシステムコール関数へのエントリーポイント。すべてのアーキテクチャーで存在するわけではなく、 また必要というわけでもない (例えば
130+x86\-64 には存在しない)。
131+.TP
132+\fBAT_SYSINFO_EHDR\fP
133+仮想動的共有オブジェクト (vDSO; virtual Dynamic Shared Object) が入ったページのアドレス。 vDSO は、
134+特定のシステムコールの高速な実装を提供するためにカーネルが作成する共有オブジェクトである。
135+.TP
136+\fBAT_UCACHEBSIZE\fP
137+ユニファイド (unified) キャッシュのブロックサイズ。
138+.TP
139+\fBAT_UID\fP
140+このスレッドの実ユーザー ID。
141+.SH 返り値
142+成功すると、 \fBgetauxval\fP() は \fItype\fP に対応する値を返す。 \fItype\fP が見つからない場合には 0 を返す。
143+.SH エラー
144+.TP
145+\fBENOENT\fP (glibc 2.19 以降)
146+.\" commit b9ab448f980e296eac21ac65f53783967cc6037b
147+\fItype\fP に対応するエントリーが補助ベクトルになかった。
148+.SH バージョン
149+\fBgetauxval\fP() 関数は glibc バージョン 2.16 で追加された。
150+.SH 属性
151+.SS "マルチスレッディング (pthreads(7) 参照)"
152+関数 \fBgetauxval\fP() はスレッドセーフである。
153+.SH 準拠
154+この関数は非標準で glibc による拡張である。
155+.SH 注意
156+補助ベクトルの情報を主に使用するのは、 動的ローダー \fBld\-linux.so\fP(8) である。 補助ベクトルは、
157+カーネルが動的リンカーが通常もしくは常に必要とするある意味標準的な情報を伝えるための便利で効率的なショートカットである。 いくつかの場合では、
158+同じ情報がシステムコール経由でも取得できるが、 補助ベクトルを使う方がコストがかからない。
159+
160+補助ベクトルには、 単に、 プロセスのアドレス空間の引き数リストと環境上に存在するだけである。 プログラム実行時に \fBLD_SHOW_AUXV\fP
161+環境変数を設定すると、 プログラムに渡された補助ベクトルを表示することができる。
162+
163+ $ LD_SHOW_AUXV=1 sleep 1
164+
165+任意のプロセスの補助ベクトルは (ファイルのアクセス許可があれば) \fI/proc/PID/auxv\fP 経由で取得できる。 詳細は \fBproc\fP(5)
166+を参照。
167+.SH バグ
168+glibc 2.19 で \fBENOENT\fP エラーが追加される前は、 \fItype\fP が見つからなかった場合と \fItype\fP に対応する値が 0
169+だった場合を明確に区別する方法がなかった。
170+.SH 関連項目
171+\fBsecure_getenv\fP(3), \fBvdso\fP(7), \fBld\-linux.so\fP(8)
172+.SH この文書について
173+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
174+である。プロジェクトの説明とバグ報告に関する情報は
175+http://www.kernel.org/doc/man\-pages/ に書かれている。
--- /dev/null
+++ b/draft/man3/mallinfo.3
@@ -0,0 +1,240 @@
1+.\" t
2+.\" Copyright (c) 2012 by Michael Kerrisk <mtk.manpages@gmail.com>
3+.\"
4+.\" %%%LICENSE_START(VERBATIM)
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. The author(s) may not
18+.\" have taken the same level of care in the production of this manual,
19+.\" which is licensed free of charge, as they might when working
20+.\" professionally.
21+.\"
22+.\" Formatted or processed versions of this manual, if unaccompanied by
23+.\" the source, must acknowledge the copyright and authors of this work.
24+.\" %%%LICENSE_END
25+.\"
26+.\"*******************************************************************
27+.\"
28+.\" This file was generated with po4a. Translate the source file.
29+.\"
30+.\"*******************************************************************
31+.TH MALLINFO 3 2012\-05\-06 Linux "Linux Programmer's Manual"
32+.SH 名前
33+mallinfo \- メモリー割り当て情報を取得する
34+.SH 書式
35+\fB#include <malloc.h>\fP
36+
37+\fBstruct mallinfo mallinfo(void);\fP
38+.SH 説明
39+\fBmallinfo\fP() 関数は、 \fBmalloc\fP(3) や一連の関数により実行されたメモリー
40+割り当てに関する情報を格納した構造体のコピーを返す。
41+この構造体は以下のように定義されている。
42+.PP
43+.in +4n
44+.nf
45+struct mallinfo {
46+ int arena; /* Non\-mmapped space allocated (bytes) */
47+ int ordblks; /* Number of free chunks */
48+ int smblks; /* Number of free fastbin blocks */
49+ int hblks; /* Number of mmapped regions */
50+ int hblkhd; /* Space allocated in mmapped regions (bytes) */
51+ int usmblks; /* Maximum total allocated space (bytes) */
52+ int fsmblks; /* Space in freed fastbin blocks (bytes) */
53+ int uordblks; /* Total allocated space (bytes) */
54+ int fordblks; /* Total free space (bytes) */
55+ int keepcost; /* Top\-most, releasable space (bytes) */
56+};
57+.fi
58+.in
59+.PP
60+\fImallinfo\fP 構造体の各フィールドには以下の情報が格納される。
61+.TP 10
62+\fIarena\fP
63+\fBmmap\fP(2) 以外の手段で割り当てられた総メモリー量 (例えばヒープに割り当てられたメモリー) 。
64+この数字には使用中のブロックやフリーリスト上のブロックも含まれる。
65+.TP
66+\fIordblks\fP
67+通常の (つまり fastbin ではない) 未使用ブロック数。
68+.TP
69+\fIsmblks\fP
70+fastbin 未使用ブロック数 (\fBmallopt\fP(3) 参照)。
71+.TP
72+\fIhblks\fP
73+\fBmmap\fP(2) を使って現在割り当てられているブロック数 (\fBmallopt\fP(3) の \fBM_MMAP_THRESHOLD\fP
74+の議論を参照)。
75+.TP
76+\fIhblkhd\fP
77+\fBmmap\fP(2) を使って現在割り当てられているブロックのバイト数。
78+.TP
79+\fIusmblks\fP
80+割り当てた空間の最高点 ("highwater mark")、 つまり、 これまでの中での最大の割り当て量。
81+このフィールドはスレッド化されていない環境でのみ収集される。
82+.TP
83+\fIfsmblks\fP
84+fastbin フリーブロックの総バイト数。
85+.TP
86+\fIuordblks\fP
87+使用中の割り当てメモリーで使われているバイト数。
88+.TP
89+\fIfordblks\fP
90+フリーブロックの総バイト数。
91+.TP
92+\fIkeepcost\fP
93+.\" .SH VERSIONS
94+.\" Available already in glibc 2.0, possibly earlier
95+ヒープの一番上にある解放可能な未使用の空間の大きさ。 この値は \fBmalloc_trim\fP(3) で理想的な場合に解放できる最大のバイト数である
96+(理想的というのは、 ページ境界の制限などを無視した場合である。
97+.SH 準拠
98+この関数は POSIX や C 標準では規定されていない。 多くの System V 由来のシステムに同様の関数が存在し、 SVID
99+では同様の関数が規定されていた。
100+.SH バグ
101+.\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=208
102+.\" See the 24 Aug 2011 mail by Paul Pluzhnikov:
103+.\" "[patch] Fix mallinfo() to accumulate results for all arenas"
104+.\" on libc-alpha@sourceware.org
105+\fBこれらの情報はメインのメモリー割り当て領域に対するもののみである。\fP 他の領域の割り当ては対象にならない。
106+他の領域の情報も取得できる別の手段については \fBmalloc_stats\fP(3) や \fBmalloc_info\fP(3) を参照。
107+
108+\fImallinfo\fP 構造体の各フィールドは \fIint\fP 型である。 しかし、 いくつかの内部管理用の値は \fIlong\fP 型の場合もあるので、
109+報告される値が一周してしまい、 不正確になる可能性がある。
110+.SH 例
111+以下のプログラムは \fBmallinfo\fP() を利用して、 メモリーブロックの割り当て、解放のそれぞれ前後でメモリー割り当ての統計情報を取得する。
112+統計情報は標準出力に表示される。
113+
114+最初の 2 つのコマンドライン引き数は \fBmalloc\fP(3) で割り当てるブロック数とサイズを指定する。
115+
116+残りの 3 つの引き数は、どの割り当てられたブロックを \fBfree\fP(3) で解放すべきかを指定する。 これらの 3 つの引き数の指定は任意で、
117+最初のものから順に以下の情報を指定する。 1 つ目の引き数は、 ブロックを解放するループで使用するステップサイズを指定する (デフォルト値は 1 で、
118+1 は指定した範囲のすべてのブロックを解放することを意味する)。 2 つ目の引き数は、 解放する先頭ブロックの場所番号を指定する (デフォルト値は 0
119+で、 0 は先頭の割り当て済みブロックを意味する)。 3 つ目の引き数は、 解放する最終ブロックの場所番号よりひとつ大きい値を指定する
120+(デフォルト値は最大ブロック番号よりもひとつ大きい値である)。 これらの 3 つの引き数が省略された場合、
121+デフォルトではすべての割り当てられたブロックが解放される。
122+
123+以下のプログラムの実行例では、 100 バイトの割り当てを 1000 回実行し、 割り当てたブロックの 2 つに 1 つを解放する。
124+.PP
125+.in +4n
126+.nf
127+$ \fB./a.out 1000 100 2\fP
128+============== Before allocating blocks ==============
129+Total non\-mmapped bytes (arena): 0
130+# of free chunks (ordblks): 1
131+# of free fastbin blocks (smblks): 0
132+# of mapped regions (hblks): 0
133+Bytes in mapped regions (hblkhd): 0
134+Max. total allocated space (usmblks): 0
135+Free bytes held in fastbins (fsmblks): 0
136+Total allocated space (uordblks): 0
137+Total free space (fordblks): 0
138+Topmost releasable block (keepcost): 0
139+
140+============== After allocating blocks ==============
141+Total non\-mmapped bytes (arena): 135168
142+# of free chunks (ordblks): 1
143+# of free fastbin blocks (smblks): 0
144+# of mapped regions (hblks): 0
145+Bytes in mapped regions (hblkhd): 0
146+Max. total allocated space (usmblks): 0
147+Free bytes held in fastbins (fsmblks): 0
148+Total allocated space (uordblks): 104000
149+Total free space (fordblks): 31168
150+Topmost releasable block (keepcost): 31168
151+
152+============== After freeing blocks ==============
153+Total non\-mmapped bytes (arena): 135168
154+# of free chunks (ordblks): 501
155+# of free fastbin blocks (smblks): 0
156+# of mapped regions (hblks): 0
157+Bytes in mapped regions (hblkhd): 0
158+Max. total allocated space (usmblks): 0
159+Free bytes held in fastbins (fsmblks): 0
160+Total allocated space (uordblks): 52000
161+Total free space (fordblks): 83168
162+Topmost releasable block (keepcost): 31168
163+.fi
164+.in
165+.SS プログラムのソース
166+\&
167+.nf
168+#include <malloc.h>
169+#include "tlpi_hdr.h"
170+
171+static void
172+display_mallinfo(void)
173+{
174+ struct mallinfo mi;
175+
176+ mi = mallinfo();
177+
178+ printf("Total non\-mmapped bytes (arena): %d\en", mi.arena);
179+ printf("# of free chunks (ordblks): %d\en", mi.ordblks);
180+ printf("# of free fastbin blocks (smblks): %d\en", mi.smblks);
181+ printf("# of mapped regions (hblks): %d\en", mi.hblks);
182+ printf("Bytes in mapped regions (hblkhd): %d\en", mi.hblkhd);
183+ printf("Max. total allocated space (usmblks): %d\en", mi.usmblks);
184+ printf("Free bytes held in fastbins (fsmblks): %d\en", mi.fsmblks);
185+ printf("Total allocated space (uordblks): %d\en", mi.uordblks);
186+ printf("Total free space (fordblks): %d\en", mi.fordblks);
187+ printf("Topmost releasable block (keepcost): %d\en", mi.keepcost);
188+}
189+
190+int
191+main(int argc, char *argv[])
192+{
193+#define MAX_ALLOCS 2000000
194+ char *alloc[MAX_ALLOCS];
195+ int numBlocks, j, freeBegin, freeEnd, freeStep;
196+ size_t blockSize;
197+
198+ if (argc < 3 || strcmp(argv[1], "\-\-help") == 0)
199+ usageErr("%s num\-blocks block\-size [free\-step [start\-free "
200+ "[end\-free]]]\en", argv[0]);
201+
202+ numBlocks = atoi(argv[1]);
203+ blockSize = atoi(argv[2]);
204+ freeStep = (argc > 3) ? atoi(argv[3]) : 1;
205+ freeBegin = (argc > 4) ? atoi(argv[4]) : 0;
206+ freeEnd = (argc > 5) ? atoi(argv[5]) : numBlocks;
207+
208+ printf("============== Before allocating blocks ==============\en");
209+ display_mallinfo();
210+
211+ for (j = 0; j < numBlocks; j++) {
212+ if (numBlocks >= MAX_ALLOCS)
213+ fatal("Too many allocations");
214+
215+ alloc[j] = malloc(blockSize);
216+ if (alloc[j] == NULL)
217+ errExit("malloc");
218+ }
219+
220+ printf("\en============== After allocating blocks ==============\en");
221+ display_mallinfo();
222+
223+ for (j = freeBegin; j < freeEnd; j += freeStep)
224+ free(alloc[j]);
225+
226+ printf("\en============== After freeing blocks ==============\en");
227+ display_mallinfo();
228+
229+ exit(EXIT_SUCCESS);
230+}
231+.fi
232+.SH 関連項目
233+.ad l
234+.nh
235+\fBmmap\fP(2), \fBmalloc\fP(3), \fBmalloc_info\fP(3), \fBmalloc_stats\fP(3),
236+\fBmalloc_trim\fP(3), \fBmallopt\fP(3)
237+.SH この文書について
238+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
239+である。プロジェクトの説明とバグ報告に関する情報は
240+http://www.kernel.org/doc/man\-pages/ に書かれている。
--- a/po4a/ld/po/ja.po
+++ b/po4a/ld/po/ja.po
@@ -7,7 +7,7 @@ msgid ""
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "POT-Creation-Date: 2015-01-23 22:24+0900\n"
10-"PO-Revision-Date: 2015-01-25 06:23+0900\n"
10+"PO-Revision-Date: 2015-01-30 17:19+0900\n"
1111 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1212 "Language-Team: LANGUAGE <LL@li.org>\n"
1313 "Language: \n"
@@ -8882,7 +8882,7 @@ msgstr "2014-06-24"
88828882 #. type: Plain text
88838883 #: build/C/man1/sprof.1:28
88848884 msgid "sprof - read and display shared object profiling data"
8885-msgstr ""
8885+msgstr "sprof - 共有オブジェクトのプロファイルデータを読み出して表示する"
88868886
88878887 #. type: Plain text
88888888 #: build/C/man1/sprof.1:32
@@ -8900,13 +8900,13 @@ msgid ""
89008900 "B<sprof> will attempt to deduce it using the soname of the shared object, "
89018901 "looking for a file with the name I<E<lt>sonameE<gt>.profile> in the current "
89028902 "directory."
8903-msgstr ""
8903+msgstr "B<sprof> コマンドは、 最初のコマンドライン引き数で指定された共有オブジェクトのプロファイルの概要を表示する。 2 番目のコマンドライン引き数 (省略可能) で指定された生成済みのプロファイルデータを使って、 プロファイルの概要が生成される。 プロファイルデータのパス名が省略された場合、 B<sprof> は、 共有オブジェクトの soname を使ってパス名を元に、 カレントディレクトリに I<E<lt>sonameE<gt>.profile> という名前のファイルを探して、 プロファイルデータを特定しようとする。"
89048904
89058905 #. type: Plain text
89068906 #: build/C/man1/sprof.1:49
89078907 msgid ""
89088908 "The following command-line options specify the profile output to be produced:"
8909-msgstr ""
8909+msgstr "以下のコマンドラインオプションは生成されるプロファイリング出力を指定する。"
89108910
89118911 #. type: TP
89128912 #: build/C/man1/sprof.1:49
@@ -8919,7 +8919,7 @@ msgstr "B<-c>, B<--call-pairs>"
89198919 msgid ""
89208920 "Print a list of pairs of call paths for the interfaces exported by the "
89218921 "shared object, along with the number of times each path is used."
8922-msgstr ""
8922+msgstr "共有オブジェクトで公開されているインターフェースに対して呼び出し経路のペアのリストを表示する。 各経路が使用された回数も表示される。"
89238923
89248924 #. type: TP
89258925 #: build/C/man1/sprof.1:54
@@ -8932,7 +8932,7 @@ msgstr "B<-p>, B<--flat-profile>"
89328932 msgid ""
89338933 "Generate a flat profile of all of the functions in the monitored object, "
89348934 "with counts and ticks."
8935-msgstr ""
8935+msgstr "監視対象のオブジェクトの全関数の、 回数と tick が入った flat profile を生成する。"
89368936
89378937 #. type: TP
89388938 #: build/C/man1/sprof.1:58
@@ -8943,39 +8943,39 @@ msgstr "B<-q>, B<--graph>"
89438943 #. type: Plain text
89448944 #: build/C/man1/sprof.1:61
89458945 msgid "Generate a call graph."
8946-msgstr ""
8946+msgstr "コールグラフを生成する。"
89478947
89488948 #. type: Plain text
89498949 #: build/C/man1/sprof.1:64
89508950 msgid ""
89518951 "If none of the above options is specified, then the default behavior is to "
89528952 "display a flat profile and a call graph."
8953-msgstr ""
8953+msgstr "上記のオプションがどれも指定されなかった場合のデフォルトの動作は、 flat profile とコールグラフが表示される。"
89548954
89558955 #. type: Plain text
89568956 #: build/C/man1/sprof.1:66
89578957 msgid "The following additional command-line options are available:"
8958-msgstr ""
8958+msgstr "以下のコマンドラインオプションも使用できる。"
89598959
89608960 #. type: Plain text
89618961 #: build/C/man1/sprof.1:69
89628962 msgid "Display a summary of command-line options and arguments and exit."
8963-msgstr ""
8963+msgstr "コマンドラインオプションと引き数の概要を表示し終了する。"
89648964
89658965 #. type: Plain text
89668966 #: build/C/man1/sprof.1:72
89678967 msgid "Display a short usage message and exit."
8968-msgstr ""
8968+msgstr "使用方法の簡潔な概要を表示し終了する。"
89698969
89708970 #. type: Plain text
89718971 #: build/C/man1/sprof.1:75
89728972 msgid "Display the program version and exit."
8973-msgstr ""
8973+msgstr "プログラムのバージョンを表示し終了する。"
89748974
89758975 #. type: Plain text
89768976 #: build/C/man1/sprof.1:79
89778977 msgid "The B<sprof> command is a GNU extension, not present in POSIX.1."
8978-msgstr ""
8978+msgstr "B<sprof> コマンドは GNU 拡張であり、 POSIX.1 には存在しない。"
89798979
89808980 #. type: Plain text
89818981 #: build/C/man1/sprof.1:85
@@ -8983,7 +8983,7 @@ msgid ""
89838983 "The following example demonstrates the use of B<sprof>. The example "
89848984 "consists of a main program that calls two functions in a shared library. "
89858985 "First, the code of the main program:"
8986-msgstr ""
8986+msgstr "以下は B<sprof> の使用例を示したものである。 この例では、メインプログラムで共有ライブラリ内の 2 つの関数を呼び出している。 最初に、 メインプログラムのコードは以下の通りである。"
89878987
89888988 #. type: Plain text
89898989 #: build/C/man1/sprof.1:90
@@ -9030,7 +9030,7 @@ msgstr ""
90309030 msgid ""
90319031 "The functions I<x1()> and I<x2()> are defined in the following source file "
90329032 "that is used to construct the shared library:"
9033-msgstr ""
9033+msgstr "関数 I<x1()> と I<x2()> は以下のソースファイルで定義されており、 このファイルから共有ライブラリが構成される。"
90349034
90359035 #. type: Plain text
90369036 #: build/C/man1/sprof.1:115
@@ -9137,7 +9137,7 @@ msgstr ""
91379137 msgid ""
91389138 "Now we construct the shared library with the real name I<libdemo.so.1.0.1>, "
91399139 "and the soname I<libdemo.so.1>:"
9140-msgstr ""
9140+msgstr "ここで、 実際の名前は I<libdemo.so.1.0.1> で soname は I<libdemo.so.1> で共有ライブラリを構成する。"
91419141
91429142 #. type: Plain text
91439143 #: build/C/man1/sprof.1:162
@@ -9154,7 +9154,7 @@ msgstr ""
91549154 msgid ""
91559155 "Then we construct symbolic links for the library soname and the library "
91569156 "linker name:"
9157-msgstr ""
9157+msgstr "次に、 ライブラリ soname とライブラリのリンカー名へのシンボリックリンクを作成する。"
91589158
91599159 #. type: Plain text
91609160 #: build/C/man1/sprof.1:172
@@ -9171,7 +9171,7 @@ msgstr ""
91719171 msgid ""
91729172 "Next, we compile the main program, linking it against the shared library, "
91739173 "and then list the dynamic dependencies of the program:"
9174-msgstr ""
9174+msgstr "続けて、 共有ライブラリとリンクしてメインプログラムをコンパイルし、 プログラムが依存する共有ライブラリの一覧を表示する。"
91759175
91769176 #. type: Plain text
91779177 #: build/C/man1/sprof.1:186
@@ -9196,7 +9196,7 @@ msgstr ""
91969196 msgid ""
91979197 "In order to get profiling information for the shared library, we define the "
91989198 "environment variable B<LD_PROFILE> with the soname of the library:"
9199-msgstr ""
9199+msgstr "共有ライブラリのプロファイル情報を取得するために、 環境変数 B<LD_PROFILE> にこのライブラリの soname を設定する。"
92009200
92019201 #. type: Plain text
92029202 #: build/C/man1/sprof.1:197
@@ -9210,7 +9210,7 @@ msgid ""
92109210 "We then define the environment variable B<LD_PROFILE_OUTPUT> with the "
92119211 "pathname of the directory where profile output should be written, and create "
92129212 "that directory if it does not exist already:"
9213-msgstr ""
9213+msgstr "環境変数 B<LD_PROFILE_OUTPUT> にプロファイル情報を出力するディレクトリのパス名を設定し、 このディレクトリが存在しない場合は作成する。"
92149214
92159215 #. type: Plain text
92169216 #: build/C/man1/sprof.1:209
@@ -9228,7 +9228,7 @@ msgid ""
92289228 "B<LD_PROFILE> causes profiling output to be I<appended> to the output file "
92299229 "if it already exists, so we ensure that there is no preexisting profiling "
92309230 "data:"
9231-msgstr ""
9231+msgstr "B<LD_PROFILE> を設定すると、 プロファイルの出力は出力ファイルがすでに存在する場合は「追記」されるので、 既存のプロファイルデータが存在しないようにしておく。"
92329232
92339233 #. type: Plain text
92349234 #: build/C/man1/sprof.1:221
@@ -9241,7 +9241,7 @@ msgstr "$ B<rm -f $LD_PROFILE_OUTPUT/$LD_PROFILE.profile>\n"
92419241 msgid ""
92429242 "We then run the program to produce the profiling output, which is written to "
92439243 "a file in the directory specified in B<LD_PROFILE_OUTPUT>:"
9244-msgstr ""
9244+msgstr "次にプログラムを実行し、 プロファイリング出力を生成させる。 プロファイリング出力は B<LD_PROFILE_OUTPUT> で指定されたディレクトリにファイルが書き込まれる。"
92459245
92469246 #. type: Plain text
92479247 #: build/C/man1/sprof.1:233
@@ -9260,7 +9260,7 @@ msgstr ""
92609260 msgid ""
92619261 "We then use the B<sprof -p> option to generate a flat profile with counts "
92629262 "and ticks:"
9263-msgstr ""
9263+msgstr "B<sprof -p> オプションを使って、 呼び出し回数と tick 数が含まれる flat プロファイルを生成する。"
92649264
92659265 #. type: Plain text
92669266 #: build/C/man1/sprof.1:244
@@ -9295,7 +9295,7 @@ msgstr ""
92959295 #. type: Plain text
92969296 #: build/C/man1/sprof.1:258
92979297 msgid "The B<sprof -q> option generates a call graph:"
9298-msgstr ""
9298+msgstr "B<sprof -q> オプションを使うと、 コールグラフが生成される。"
92999299
93009300 #. type: Plain text
93019301 #: build/C/man1/sprof.1:262
@@ -9349,14 +9349,14 @@ msgid ""
93499349 "Above and below, the \"E<lt>UNKNOWNE<gt>\" strings represent identifiers "
93509350 "that are outside of the profiled object (in this example, these are "
93519351 "instances of I<main()>)."
9352-msgstr ""
9352+msgstr "上記や以下の例で、 \"E<lt>UNKNOWNE<gt>\" の文字列は、 識別子がプロファイルされたオブジェクトの外部にあることを表している (この例では \"E<lt>UNKNOWNE<gt>\" になっているのは I<main()> 内のオブジェクトである)。"
93539353
93549354 #. type: Plain text
93559355 #: build/C/man1/sprof.1:289
93569356 msgid ""
93579357 "The B<sprof -c> option generates a list of call pairs and the number of "
93589358 "their occurrences:"
9359-msgstr ""
9359+msgstr "B<sprof -c> オプションを使うと、 呼び出しの組とその発生回数のリストが生成される。"
93609360
93619361 #. type: Plain text
93629362 #: build/C/man1/sprof.1:297
--- a/po4a/linux_module/po/ja.po
+++ b/po4a/linux_module/po/ja.po
@@ -7,7 +7,7 @@ msgid ""
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "POT-Creation-Date: 2015-01-23 22:24+0900\n"
10-"PO-Revision-Date: 2015-01-24 20:50+0900\n"
10+"PO-Revision-Date: 2015-01-31 00:03+0900\n"
1111 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1212 "Language-Team: LANGUAGE <LL@li.org>\n"
1313 "Language: \n"
@@ -334,12 +334,12 @@ msgid ""
334334 "then that function is executed before unloading the module. The I<flags> "
335335 "argument is used to modify the behavior of the system call, as described "
336336 "below. This system call requires privilege."
337-msgstr ""
337+msgstr "B<delete_module>() システムコールは、 I<name> で特定される未使用のロード可能なモジュールのエントリーを削除しようとする。 モジュールに I<exit> 関数がある場合、 モジュールをアンロードする前にこの関数が実行される。 I<flags> 引き数は、以下で説明するようにシステムコールの動作を変更するのに使用される。 このシステムコールには特権が必要である。"
338338
339339 #. type: Plain text
340340 #: build/C/man2/delete_module.2:51
341341 msgid "Module removal is attempted according to the following rules:"
342-msgstr ""
342+msgstr "モジュールの削除は以下のルールにしたがって行われる。"
343343
344344 #. type: IP
345345 #: build/C/man2/delete_module.2:51
@@ -352,7 +352,7 @@ msgstr "1."
352352 msgid ""
353353 "If there are other loaded modules that depend on (i.e., refer to symbols "
354354 "defined in) this module, then the call fails."
355-msgstr ""
355+msgstr "このモジュールに依存している (このモジュールで定義されているシンボルを参照している) モジュールがロードされている場合、 この呼び出しは失敗する。"
356356
357357 #. type: IP
358358 #: build/C/man2/delete_module.2:55
@@ -366,7 +366,7 @@ msgid ""
366366 "Otherwise, if the reference count for the module (i.e., the number of "
367367 "processes currently using the module) is zero, then the module is "
368368 "immediately unloaded."
369-msgstr ""
369+msgstr "それ以外の場合で、 モジュールの参照カウント (このモジュールを現在使用しているプロセス数) が 0 であれば、 モジュールは直ちにアンロードされる。"
370370
371371 #. type: IP
372372 #: build/C/man2/delete_module.2:59
@@ -382,12 +382,12 @@ msgid ""
382382 "If a module has a nonzero reference count, then the behavior depends on the "
383383 "bits set in I<flags>. In normal usage (see NOTES), the B<O_NONBLOCK> flag "
384384 "is always specified, and the B<O_TRUNC> flag may additionally be specified."
385-msgstr ""
385+msgstr "モジュールの参照カウントが 0 でない場合、 その動作は I<flags> にセットされたビットによって決まる。 通常の使用時は (「注意」参照)、 B<O_NONBLOCK> は常に指定され、 B<O_TRUNC> フラグが追加で指定されることがある。"
386386
387387 #. type: Plain text
388388 #: build/C/man2/delete_module.2:74
389389 msgid "The various combinations for I<flags> have the following effect:"
390-msgstr ""
390+msgstr "I<flags> の組み合わせが持つ効果は以下のとおりである。"
391391
392392 #. type: TP
393393 #: build/C/man2/delete_module.2:75
@@ -398,7 +398,7 @@ msgstr "B<flags == O_NONBLOCK>"
398398 #. type: Plain text
399399 #: build/C/man2/delete_module.2:78
400400 msgid "The call returns immediately, with an error."
401-msgstr ""
401+msgstr "エラーの場合、 呼び出しは直ちに返る。"
402402
403403 #. type: TP
404404 #: build/C/man2/delete_module.2:78
@@ -411,7 +411,7 @@ msgstr "B<flags == (O_NONBLOCK | O_TRUNC)>"
411411 msgid ""
412412 "The module is unloaded immediately, regardless of whether it has a nonzero "
413413 "reference count."
414-msgstr ""
414+msgstr "参照カウントが 0 以外かどうかに関わらず、 直ちにモジュールをアンロードする。"
415415
416416 #. type: TP
417417 #: build/C/man2/delete_module.2:82
@@ -422,7 +422,7 @@ msgstr "B<(flags & O_NONBLOCK) == 0>"
422422 #. type: Plain text
423423 #: build/C/man2/delete_module.2:89
424424 msgid "If I<flags> does not specify B<O_NONBLOCK>, the following steps occur:"
425-msgstr ""
425+msgstr "I<flags> に B<O_NONBLOCK> が指定されなかった場合、 以下のステップで処理が行われる。"
426426
427427 #. type: IP
428428 #: build/C/man2/delete_module.2:90 build/C/man2/delete_module.2:92
@@ -434,7 +434,7 @@ msgstr "*"
434434 #. type: Plain text
435435 #: build/C/man2/delete_module.2:92
436436 msgid "The module is marked so that no new references are permitted."
437-msgstr ""
437+msgstr "新しい参照を許可しないように、 指定されたモジュールにマークを付ける。"
438438
439439 #. type: Plain text
440440 #: build/C/man2/delete_module.2:97
@@ -442,12 +442,12 @@ msgid ""
442442 "If the module's reference count is nonzero, the caller is placed in an "
443443 "uninterruptible sleep state (B<TASK_UNINTERRUPTIBLE>) until the reference "
444444 "count is zero, at which point the call unblocks."
445-msgstr ""
445+msgstr "モジュールの参照カウントが 0 でない場合、 参照カウントが 0 になるまで、 呼び出し元は割り込み不可のスリープ状態 (B<TASK_UNINTERRUPTIBLE>) に置かれる。 参照カウントが 0 になった時点で、 呼び出し元の停止が解除される。"
446446
447447 #. type: Plain text
448448 #: build/C/man2/delete_module.2:99
449449 msgid "The module is unloaded in the usual way."
450-msgstr ""
450+msgstr "モジュールは通常通りの方法でアンロードされる。"
451451
452452 #. type: Plain text
453453 #: build/C/man2/delete_module.2:113
@@ -456,7 +456,7 @@ msgid ""
456456 "default, if a module has an I<init> function but no I<exit> function, then "
457457 "an attempt to remove the module will fail. However, if B<O_TRUNC> was "
458458 "specified, this requirement is bypassed."
459-msgstr ""
459+msgstr "B<O_TRUNC> フラグには上記のルールに加えてもう一つの効果がある。 デフォルトでは、 モジュールに I<init> 関数があるが I<exit> 関数がない場合、 そのモジュールを削除しようとすると失敗する。 しかし、 B<O_TRUNC> が指定された場合、 この要件はスキップされる。"
460460
461461 #. type: Plain text
462462 #: build/C/man2/delete_module.2:124
@@ -465,7 +465,7 @@ msgid ""
465465 "B<CONFIG_MODULE_FORCE_UNLOAD>, this flag is silently ignored. (Normally, "
466466 "B<CONFIG_MODULE_FORCE_UNLOAD> is enabled.) Using this flag taints the "
467467 "kernel (TAINT_FORCED_RMMOD)."
468-msgstr ""
468+msgstr "B<O_TRUNC> フラグの使用は危険である! カーネルが B<CONFIG_MODULE_FORCE_UNLOAD> で作成されていない場合、 このフラグは黙って無視される (通常は B<CONFIG_MODULE_FORCE_UNLOAD> は有効になっている)。 このフラグを使うとカーネルにゴミが残ることになる (TAINT_FORCED_RMMOD)。"
469469
470470 #. type: Plain text
471471 #: build/C/man2/delete_module.2:129 build/C/man2/query_module.2:134
@@ -488,7 +488,7 @@ msgid ""
488488 "The module is not \"live\" (i.e., it is still being initialized or is "
489489 "already marked for removal); or, the module has an I<init> function but has "
490490 "no I<exit> function, and B<O_TRUNC> was not specified in I<flags>."
491-msgstr ""
491+msgstr "モジュールは\"live\" ではない (モジュールがまだ初期化中か、 すでに削除のマークが付けられている)。 モジュールに I<init> 関数があるが I<exit> 関数がなく、 I<flags> に B<O_TRUNC> が指定されていなかった。"
492492
493493 #. type: Plain text
494494 #: build/C/man2/delete_module.2:147
@@ -513,10 +513,7 @@ msgid ""
513513 "The caller was not privileged (did not have the B<CAP_SYS_MODULE> "
514514 "capability), or module unloading is disabled (see I</proc/sys/kernel/"
515515 "modules_disabled> in B<proc>(5))."
516-msgstr ""
517-"呼び出し元が特権 (B<CAP_SYS_MODULE> ケーパビリティ) を持っていなかった。もし"
518-"くはモジュールのアンロードが無効になっている (B<proc>(5) の I</proc/sys/"
519-"kernel/modules_disabled> を参照)。"
516+msgstr "呼び出し元が特権 (B<CAP_SYS_MODULE> ケーパビリティ) を持っていなかった。 または、 モジュールのアンロードが無効になっている (B<proc>(5) の I</proc/sys/kernel/modules_disabled> を参照)。"
520517
521518 #. type: TP
522519 #: build/C/man2/delete_module.2:161
@@ -530,7 +527,7 @@ msgid ""
530527 "Other modules depend on this module; or, B<O_NONBLOCK> was specified in "
531528 "I<flags>, but the reference count of this module is nonzero and B<O_TRUNC> "
532529 "was not specified in I<flags>."
533-msgstr ""
530+msgstr "他のモジュールがこのモジュールに依存している。または、 I<flags> に B<O_NONBLOCK> が指定されたが、 このモジュールの参照カウントが 0 以外で I<flags> に B<O_TRUNC> が指定されていなかった。"
534531
535532 #. type: Plain text
536533 #: build/C/man2/delete_module.2:175
@@ -560,18 +557,18 @@ msgid ""
560557 "I<flags> is considered undesirable, because the sleeping process is left in "
561558 "an unkillable state. As at Linux 3.7, specifying B<O_NONBLOCK> is optional, "
562559 "but in future kernels it is likely to become mandatory."
563-msgstr ""
560+msgstr "I<flags> に B<O_NONBLOCK> が指定されていない場合に起こる可能性がある割り込み不可のスリープは望ましくないと考えられている。 なぜなら、 スリープしているプロセスは kill できない状態 (unkillable state) のままになるからである。 Linux 3.7 時点では、 B<O_NONBLOCK> の指定は省略可能だが、 将来のカーネルでは必須になるだろう。"
564561
565562 #. type: SS
566563 #: build/C/man2/delete_module.2:195 build/C/man2/init_module.2:288
567564 #, no-wrap
568565 msgid "Linux 2.4 and earlier"
569-msgstr ""
566+msgstr "Linux 2.4 以前"
570567
571568 #. type: Plain text
572569 #: build/C/man2/delete_module.2:197
573570 msgid "In Linux 2.4 and earlier, the system call took only one argument:"
574-msgstr ""
571+msgstr "Linux 2.4 以前では、 このシステムコールの引き数は 1 つだけであった。"
575572
576573 #. type: Plain text
577574 #: build/C/man2/delete_module.2:199
@@ -581,14 +578,14 @@ msgstr "B< int delete_module(const char *>I<name>B<);>"
581578 #. type: Plain text
582579 #: build/C/man2/delete_module.2:203
583580 msgid "If I<name> is NULL, all unused modules marked auto-clean are removed."
584-msgstr ""
581+msgstr "I<name> が NULL の場合、 auto-clean のマークがついたすべての未使用のモジュールが削除される。"
585582
586583 #. type: Plain text
587584 #: build/C/man2/delete_module.2:209
588585 msgid ""
589586 "Some further details of differences in the behavior of B<delete_module>() "
590587 "in Linux 2.4 and earlier are I<not> currently explained in this manual page."
591-msgstr ""
588+msgstr "Linux 2.4 以前の B<delete_module>() の動作のより詳細な違いは、 現在のところこのマニュアルページでは説明I<しない>。"
592589
593590 #. type: Plain text
594591 #: build/C/man2/delete_module.2:216
@@ -775,7 +772,7 @@ msgstr ""
775772 msgid ""
776773 "I<Note>: glibc provides no header file declaration of B<init_module>() and "
777774 "no wrapper function for B<finit_module>(); see NOTES."
778-msgstr ""
775+msgstr "I<注意>: glibc では、 ヘッダーファイルでの B<init_module>() の宣言はなく、 B<finit_module>() のラッパー関数も提供されていない。 「注意」の節を参照。"
779776
780777 #. type: Plain text
781778 #: build/C/man2/init_module.2:54
@@ -784,7 +781,7 @@ msgid ""
784781 "necessary symbol relocations, initializes module parameters to values "
785782 "provided by the caller, and then runs the module's I<init> function. This "
786783 "system call requires privilege."
787-msgstr ""
784+msgstr "B<init_module>() は ELF イメージをカーネル空間にロードし、 必要なシンボルの配置変更を行い、 モジュールパラメーターを呼び出し元から指定された値に初期化し、 最後にそのモジュールの I<init> 関数を実行する。 このシステムコールには特権が必要である。"
788785
789786 #. type: Plain text
790787 #: build/C/man2/init_module.2:62
@@ -792,7 +789,7 @@ msgid ""
792789 "The I<module_image> argument points to a buffer containing the binary image "
793790 "to be loaded; I<len> specifies the size of that buffer. The module image "
794791 "should be a valid ELF image, built for the running kernel."
795-msgstr ""
792+msgstr "I<module_image> 引き数はロードするバイナリーイメージが入ったバッファーを指し、 I<len> はバッファーのサイズを指定する。 モジュールイメージは、 実行中のカーネル用に作成された有効な ELF イメージである必要がある。"
796793
797794 #. type: Plain text
798795 #: build/C/man2/init_module.2:73
@@ -802,12 +799,12 @@ msgid ""
802799 "module using B<module_param>() and B<module_param_array>()). The kernel "
803800 "parses this string and initializes the specified parameters. Each of the "
804801 "parameter specifications has the form:"
805-msgstr ""
802+msgstr "I<param_values> 引き数はモジュールパラメーター値を指定するスペース区切りの文字列である (モジュールパラメーターは B<module_param>() や B<module_param_array>() を使ってモジュール内で定義される)。 カーネルはこの文字列を解釈し、指定されたパラメーターを初期化する。 各パラメーター指定は以下の形式である。"
806803
807804 #. type: Plain text
808805 #: build/C/man2/init_module.2:78
809806 msgid "I<name>[B<=>I<value>[B<,>I<value>...]]"
810-msgstr ""
807+msgstr "I<name>[B<=>I<value>[B<,>I<value>...]]"
811808
812809 #. type: Plain text
813810 #: build/C/man2/init_module.2:93
@@ -817,13 +814,13 @@ msgid ""
817814 "moduleparam.h>). The parameter I<value> is optional in the case of I<bool> "
818815 "and I<invbool> parameters. Values for array parameters are specified as a "
819816 "comma-separated list."
820-msgstr ""
817+msgstr "パラメーター I<name> はモジュール内で I<module_param>() を使って定義されているパラメーターのいずれか一つである (Linux カーネルのソースファイル I<include/linux/moduleparam.h> を参照)。 パラメーター I<value> は I<bool> か I<invbool> パラメーターの場合は省略可能である。 配列パラメーターの値はカンマ区切りのリストで指定される。"
821818
822819 #. type: SS
823820 #: build/C/man2/init_module.2:93
824821 #, no-wrap
825822 msgid "finit_module()"
826-msgstr ""
823+msgstr "finit_module()"
827824
828825 #. commit 34e1169d996ab148490c01b65b4ee371cf8ffba2
829826 #. https://lwn.net/Articles/519010/
@@ -836,7 +833,7 @@ msgid ""
836833 "filesystem; in cases where that is possible, the overhead of using "
837834 "cryptographically signed modules to determine the authenticity of a module "
838835 "can be avoided. The I<param_values> argument is as for B<init_module>()."
839-msgstr ""
836+msgstr "B<finit_module>() システムコールは B<init_module>() と同様だが、 ファイルディスクリプター I<fd> からモジュールをロードする。 カーネルモジュールの信頼性をファイルシステムにおける場所から判定できる場合、この方法は有効である。 この方法が利用できる場合、 モジュールの信頼性を判定するのに暗号で署名されたモジュールを使用することによるオーバーヘッドを避ける事ができる。 I<param_values> 引き数は B<init_module>() と同じである。"
840837
841838 #. commit 2f3238aebedb243804f58d62d57244edec4149b2
842839 #. type: Plain text
@@ -844,29 +841,29 @@ msgstr ""
844841 msgid ""
845842 "The I<flags> argument modifies the operation of B<finit_module>(). It is a "
846843 "bit mask value created by ORing together zero or more of the following flags:"
847-msgstr ""
844+msgstr "I<flags> 引き数で B<finit_module>() の動作を変更できる。 I<flags> は以下のフラグの 0 個以上の論理和をとって作成したビットマスクである。"
848845
849846 #. type: TP
850847 #: build/C/man2/init_module.2:119
851848 #, no-wrap
852849 msgid "B<MODULE_INIT_IGNORE_MODVERSIONS>"
853-msgstr ""
850+msgstr "B<MODULE_INIT_IGNORE_MODVERSIONS>"
854851
855852 #. type: Plain text
856853 #: build/C/man2/init_module.2:122
857854 msgid "Ignore symbol version hashes."
858-msgstr ""
855+msgstr "シンボルのバージョンハッシュを無視する。"
859856
860857 #. type: TP
861858 #: build/C/man2/init_module.2:122
862859 #, no-wrap
863860 msgid "B<MODULE_INIT_IGNORE_VERMAGIC>"
864-msgstr ""
861+msgstr "B<MODULE_INIT_IGNORE_VERMAGIC>"
865862
866863 #. type: Plain text
867864 #: build/C/man2/init_module.2:125
868865 msgid "Ignore kernel version magic."
869-msgstr ""
866+msgstr "カーネルのバージョン magic を無視する。"
870867
871868 #. http://www.tldp.org/HOWTO/Module-HOWTO/basekerncompat.html
872869 #. is dated, but informative
@@ -884,7 +881,7 @@ msgid ""
884881 "symbol. In this case, the kernel version number within the \"vermagic\" "
885882 "string is ignored, as the symbol version hashes are assumed to be "
886883 "sufficiently reliable."
887-msgstr ""
884+msgstr "そのモジュールがロードされるカーネルに合致することを保証するためのモジュールに組み込みの安全チェックがある。 これらのチェックは、 モジュールの作成時に記録され、 モジュールのロード時に検査される。 最初に、 モジュールはカーネルのバージョン番号と主要な機能 (CPU 種別など) が入った \"vermagic\" 文字列を記録する。 次に、 モジュールが B<CONFIG_MODVERSIONS> 設定オプションを有効にして作成されている場合、 バージョンハッシュがモジュールが使用するシンボルごとに記録される。 このハッシュはシンボルに対応する関数の引き数と返り値の型を基づいて計算される。 この場合、 シンボルのバージョンハッシュは十分に信頼できると考えられているため、 \"vermagic\" 文字列内のカーネルのバージョン番号は無視される。"
888885
889886 #. type: Plain text
890887 #: build/C/man2/init_module.2:154
@@ -895,7 +892,7 @@ msgid ""
895892 "is built to permit forced loading (i.e., configured with "
896893 "B<CONFIG_MODULE_FORCE_LOAD>), then loading will continue, otherwise it will "
897894 "fail with B<ENOEXEC> as expected for malformed modules."
898-msgstr ""
895+msgstr "B<MODULE_INIT_IGNORE_VERMAGIC> フラグは \"vermagic\" 文字列を無視することを意味し、 B<MODULE_INIT_IGNORE_MODVERSIONS> フラグはシンボルのバージョンハッシュを無視することを意味する。 カーネルが強制ロードを許可するように作成されている場合 (B<CONFIG_MODULE_FORCE_LOAD> が有効になっている場合)、 モジュールのロードは継続され、 そうでない場合は不正なモジュールに対して返るのと同じ B<ENOEXEC> で失敗する。"
899896
900897 #. type: Plain text
901898 #: build/C/man2/init_module.2:159
@@ -915,12 +912,12 @@ msgstr "B<EBADMSG> (Linux 3.7 以降)"
915912 #. type: Plain text
916913 #: build/C/man2/init_module.2:163
917914 msgid "Module signature is misformatted."
918-msgstr ""
915+msgstr "モジュールの署名が正しい形式ではない。"
919916
920917 #. type: Plain text
921918 #: build/C/man2/init_module.2:166
922919 msgid "Timeout while trying to resolve a symbol reference by this module."
923-msgstr ""
920+msgstr "このモジュールがシンボル参照を解決する際にタイムアウトが起こった。"
924921
925922 #. type: Plain text
926923 #: build/C/man2/init_module.2:170
@@ -947,12 +944,12 @@ msgid ""
947944 "module. This error is returned only if the kernel was configured with "
948945 "B<CONFIG_MODULE_SIG_FORCE>; if the kernel was not configured with this "
949946 "option, then an invalid or unsigned module simply taints the kernel."
950-msgstr ""
947+msgstr "モジュールの署名が無効であるか、 カーネルがこのモジュール用の鍵を持っていない。 このエラーが返されるのは、 カーネルが B<CONFIG_MODULE_SIG_FORCE> で作成されている場合のみである。 カーネルでこのオプションが有効になっていない場合、 無効なモジュールや署名されていないモジュールはカーネルのゴミになる。"
951948
952949 #. type: Plain text
953950 #: build/C/man2/init_module.2:184
954951 msgid "Out of memory."
955-msgstr ""
952+msgstr "メモリ不足。"
956953
957954 #. type: Plain text
958955 #: build/C/man2/init_module.2:195
@@ -968,7 +965,7 @@ msgstr ""
968965 #. type: Plain text
969966 #: build/C/man2/init_module.2:198
970967 msgid "The following errors may additionally occur for B<init_module>():"
971-msgstr ""
968+msgstr "B<init_module>() では以下のエラーも発生する場合がある。"
972969
973970 #. type: Plain text
974971 #: build/C/man2/init_module.2:201
@@ -990,7 +987,7 @@ msgstr "その名前のモジュールがすでにロードされている。"
990987 msgid ""
991988 "I<param_values> is invalid, or some part of the ELF image in I<module_image> "
992989 "contains inconsistencies."
993-msgstr ""
990+msgstr "I<param_values> が無効、 または I<module_image> の ELF イメージの一部分に矛盾がある。"
994991
995992 #. type: TP
996993 #: build/C/man2/init_module.2:217 build/C/man2/init_module.2:240
@@ -1003,12 +1000,12 @@ msgstr "B<ENOEXEC>"
10031000 msgid ""
10041001 "The binary image supplied in I<module_image> is not an ELF image, or is an "
10051002 "ELF image that is invalid or for a different architecture."
1006-msgstr ""
1003+msgstr "I<module_image> で指定されたバイナリーイメージが ELF イメージではない、 もしくは無効な ELF イメージや別のアーキテクチャー用の ELF イメージである。"
10071004
10081005 #. type: Plain text
10091006 #: build/C/man2/init_module.2:226
10101007 msgid "The following errors may additionally occur for B<finit_module>():"
1011-msgstr ""
1008+msgstr "B<finit_module>() では以下のエラーも発生する場合がある。"
10121009
10131010 #. type: TP
10141011 #: build/C/man2/init_module.2:226
@@ -1019,7 +1016,7 @@ msgstr "B<EBADF>"
10191016 #. type: Plain text
10201017 #: build/C/man2/init_module.2:231
10211018 msgid "The file referred to by I<fd> is not opened for reading."
1022-msgstr ""
1019+msgstr "I<fd> が参照するファイルが読み出し用にオープンされていない。"
10231020
10241021 #. type: TP
10251022 #: build/C/man2/init_module.2:231
@@ -1030,7 +1027,7 @@ msgstr "B<EFBIG>"
10301027 #. type: Plain text
10311028 #: build/C/man2/init_module.2:236
10321029 msgid "The file referred to by I<fd> is too large."
1033-msgstr ""
1030+msgstr "I<fd> が参照するファイルが大きすぎる。"
10341031
10351032 #. type: Plain text
10361033 #: build/C/man2/init_module.2:240
@@ -1048,7 +1045,7 @@ msgid ""
10481045 "In addition to the above errors, if the module's I<init> function is "
10491046 "executed and returns an error, then B<init_module>() or B<finit_module>() "
10501047 "fails and I<errno> is set to the value returned by the I<init> function."
1051-msgstr ""
1048+msgstr "上記のエラーに加え、 モジュールの I<init> 関数が実行されてエラーが発生した場合には、 B<init_module>() や B<finit_module>() は失敗し、 I<errno> に I<init> 関数が返した値が設定される。"
10521049
10531050 #. type: Plain text
10541051 #: build/C/man2/init_module.2:259
@@ -1090,21 +1087,21 @@ msgid ""
10901087 "Information about currently loaded modules can be found in I</proc/modules> "
10911088 "and in the file trees under the per-module subdirectories under I</sys/"
10921089 "module>."
1093-msgstr ""
1090+msgstr "現在ロードされているモジュールに関する情報は I</proc/modules> および I</sys/module> 以下のモジュール単位のサブディレクトリ内のファイルツリーで参照できる。"
10941091
10951092 #. type: Plain text
10961093 #: build/C/man2/init_module.2:288
10971094 msgid ""
10981095 "See the Linux kernel source file I<include/linux/module.h> for some useful "
10991096 "background information."
1100-msgstr ""
1097+msgstr "Linux カーネルのソースファイル I<include/linux/module.h> には背景に関する有用な情報がある。"
11011098
11021099 #. type: Plain text
11031100 #: build/C/man2/init_module.2:293
11041101 msgid ""
11051102 "In Linux 2.4 and earlier, the B<init_module>() system call was rather "
11061103 "different:"
1107-msgstr ""
1104+msgstr "Linux 2.4 以前では B<init_module>() システムコールはかなり違ったものであった。"
11081105
11091106 #. type: Plain text
11101107 #: build/C/man2/init_module.2:295
@@ -1124,7 +1121,7 @@ msgid ""
11241121 "(User-space applications can detect which version of B<init_module>() is "
11251122 "available by calling B<query_module>(); the latter call fails with the error "
11261123 "B<ENOSYS> on Linux 2.6 and later.)"
1127-msgstr ""
1124+msgstr "(ユーザー空間アプリケーションは B<query_module>() を呼び出してどのバージョンの B<init_module>() が利用可能かを検出できる。 B<query_module>() の呼び出しは Linux 2.6 以降ではエラー B<ENOSYS> で失敗する。)"
11281125
11291126 #. type: Plain text
11301127 #: build/C/man2/init_module.2:316
@@ -1133,7 +1130,7 @@ msgid ""
11331130 "pointed to by I<image> into kernel space and runs the module's I<init> "
11341131 "function. The caller is responsible for providing the relocated image "
11351132 "(since Linux 2.6, the B<init_module>() system call does the relocation)."
1136-msgstr ""
1133+msgstr "古いバージョンのシステムコールは、 I<image> が指す再配置されたモジュールイメージをカーネル空間にロードし、 モジュールの I<init> 関数を実行する。 呼び出し元には再配置されたイメージを提供する責任がある (Linux 2.6 以降では B<init_module>() システムコールが再配置自体を行う)。"
11371134
11381135 #. type: Plain text
11391136 #: build/C/man2/init_module.2:320
--- a/po4a/memory/po/ja.po
+++ b/po4a/memory/po/ja.po
@@ -7,7 +7,7 @@ msgid ""
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "POT-Creation-Date: 2015-01-23 22:24+0900\n"
10-"PO-Revision-Date: 2015-01-27 03:42+0900\n"
10+"PO-Revision-Date: 2015-01-28 15:24+0900\n"
1111 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1212 "Language-Team: LANGUAGE <LL@li.org>\n"
1313 "Language: \n"
@@ -2145,7 +2145,7 @@ msgid ""
21452145 "The total amount of memory allocated by means other than B<mmap>(2) (i.e., "
21462146 "memory allocated on the heap). This figure includes both in-use blocks and "
21472147 "blocks on the free list."
2148-msgstr ""
2148+msgstr "B<mmap>(2) 以外の手段で割り当てられた総メモリー量 (例えばヒープに割り当てられたメモリー) 。 この数字には使用中のブロックやフリーリスト上のブロックも含まれる。"
21492149
21502150 #. type: TP
21512151 #: build/C/man3/mallinfo.3:68
@@ -2156,7 +2156,7 @@ msgstr "I<ordblks>"
21562156 #. type: Plain text
21572157 #: build/C/man3/mallinfo.3:71
21582158 msgid "The number of ordinary (i.e., non-fastbin) free blocks."
2159-msgstr ""
2159+msgstr "通常の (つまり fastbin ではない) 未使用ブロック数。"
21602160
21612161 #. type: TP
21622162 #: build/C/man3/mallinfo.3:71
@@ -2167,7 +2167,7 @@ msgstr "I<smblks>"
21672167 #. type: Plain text
21682168 #: build/C/man3/mallinfo.3:75
21692169 msgid "The number of fastbin free blocks (see B<mallopt>(3))."
2170-msgstr ""
2170+msgstr "fastbin 未使用ブロック数 (B<mallopt>(3) 参照)。"
21712171
21722172 #. type: TP
21732173 #: build/C/man3/mallinfo.3:75
@@ -2180,7 +2180,7 @@ msgstr "I<hblks>"
21802180 msgid ""
21812181 "The number of blocks currently allocated using B<mmap>(2). (See the "
21822182 "discussion of B<M_MMAP_THRESHOLD> in B<mallopt>(3).)"
2183-msgstr ""
2183+msgstr "B<mmap>(2) を使って現在割り当てられているブロック数 (B<mallopt>(3) の B<M_MMAP_THRESHOLD> の議論を参照)。"
21842184
21852185 #. type: TP
21862186 #: build/C/man3/mallinfo.3:83
@@ -2191,7 +2191,7 @@ msgstr "I<hblkhd>"
21912191 #. type: Plain text
21922192 #: build/C/man3/mallinfo.3:87
21932193 msgid "The number of bytes in blocks currently allocated using B<mmap>(2)."
2194-msgstr ""
2194+msgstr "B<mmap>(2) を使って現在割り当てられているブロックのバイト数。"
21952195
21962196 #. type: TP
21972197 #: build/C/man3/mallinfo.3:87
@@ -2205,7 +2205,7 @@ msgid ""
22052205 "The \"highwater mark\" for allocated space\\(emthat is, the maximum amount "
22062206 "of space that was ever allocated. This field is maintained only in "
22072207 "nonthreading environments."
2208-msgstr ""
2208+msgstr "割り当てた空間の最高点 (\"highwater mark\")、 つまり、 これまでの中での最大の割り当て量。 このフィールドはスレッド化されていない環境でのみ収集される。"
22092209
22102210 #. type: TP
22112211 #: build/C/man3/mallinfo.3:92
@@ -2216,7 +2216,7 @@ msgstr "I<fsmblks>"
22162216 #. type: Plain text
22172217 #: build/C/man3/mallinfo.3:95
22182218 msgid "The total number of bytes in fastbin free blocks."
2219-msgstr ""
2219+msgstr "fastbin フリーブロックの総バイト数。"
22202220
22212221 #. type: TP
22222222 #: build/C/man3/mallinfo.3:95
@@ -2227,7 +2227,7 @@ msgstr "I<uordblks>"
22272227 #. type: Plain text
22282228 #: build/C/man3/mallinfo.3:98
22292229 msgid "The total number of bytes used by in-use allocations."
2230-msgstr ""
2230+msgstr "使用中の割り当てメモリーで使われているバイト数。"
22312231
22322232 #. type: TP
22332233 #: build/C/man3/mallinfo.3:98
@@ -2238,7 +2238,7 @@ msgstr "I<fordblks>"
22382238 #. type: Plain text
22392239 #: build/C/man3/mallinfo.3:101
22402240 msgid "The total number of bytes in free blocks."
2241-msgstr ""
2241+msgstr "フリーブロックの総バイト数。"
22422242
22432243 #. type: TP
22442244 #: build/C/man3/mallinfo.3:101
@@ -2254,14 +2254,14 @@ msgid ""
22542254 "The total amount of releasable free space at the top of the heap. This is "
22552255 "the maximum number of bytes that could ideally (i.e., ignoring page "
22562256 "alignment restrictions, and so on) be released by B<malloc_trim>(3)."
2257-msgstr ""
2257+msgstr "ヒープの一番上にある解放可能な未使用の空間の大きさ。 この値は B<malloc_trim>(3) で理想的な場合に解放できる最大のバイト数である (理想的というのは、 ページ境界の制限などを無視した場合である。"
22582258
22592259 #. type: Plain text
22602260 #: build/C/man3/mallinfo.3:114
22612261 msgid ""
22622262 "This function is not specified by POSIX or the C standards. A similar "
22632263 "function exists on many System V derivatives, and was specified in the SVID."
2264-msgstr ""
2264+msgstr "この関数は POSIX や C 標準では規定されていない。 多くの System V 由来のシステムに同様の関数が存在し、 SVID では同様の関数が規定されていた。 "
22652265
22662266 #. FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=208
22672267 #. See the 24 Aug 2011 mail by Paul Pluzhnikov:
@@ -2274,7 +2274,7 @@ msgid ""
22742274 "Allocations in other arenas are excluded. See B<malloc_stats>(3) and "
22752275 "B<malloc_info>(3) for alternatives that include information about other "
22762276 "arenas."
2277-msgstr ""
2277+msgstr "B<これらの情報はメインのメモリー割り当て領域に対するもののみである。> 他の領域の割り当ては対象にならない。 他の領域の情報も取得できる別の手段については B<malloc_stats>(3) や B<malloc_info>(3) を参照。"
22782278
22792279 #. type: Plain text
22802280 #: build/C/man3/mallinfo.3:134
@@ -2282,7 +2282,7 @@ msgid ""
22822282 "The fields of the I<mallinfo> structure are typed as I<int>. However, "
22832283 "because some internal bookkeeping values may be of type I<long>, the "
22842284 "reported values may wrap around zero and thus be inaccurate."
2285-msgstr ""
2285+msgstr "I<mallinfo> 構造体の各フィールドは I<int> 型である。 しかし、 いくつかの内部管理用の値は I<long> 型の場合もあるので、 報告される値が一周してしまい、 不正確になる可能性がある。"
22862286
22872287 #. type: SH
22882288 #: build/C/man3/mallinfo.3:134 build/C/man3/malloc_hook.3:89
@@ -2300,14 +2300,14 @@ msgid ""
23002300 "The program below employs B<mallinfo>() to retrieve memory allocation "
23012301 "statistics before and after allocating and freeing some blocks of memory. "
23022302 "The statistics are displayed on standard output."
2303-msgstr ""
2303+msgstr "以下のプログラムは B<mallinfo>() を利用して、 メモリーブロックの割り当て、解放のそれぞれ前後でメモリー割り当ての統計情報を取得する。 統計情報は標準出力に表示される。"
23042304
23052305 #. type: Plain text
23062306 #: build/C/man3/mallinfo.3:144
23072307 msgid ""
23082308 "The first two command-line arguments specify the number and size of blocks "
23092309 "to be allocated with B<malloc>(3)."
2310-msgstr ""
2310+msgstr "最初の 2 つのコマンドライン引き数は B<malloc>(3) で割り当てるブロック数とサイズを指定する。"
23112311
23122312 #. type: Plain text
23132313 #: build/C/man3/mallinfo.3:158
@@ -2321,14 +2321,14 @@ msgid ""
23212321 "freed (default is one greater than the maximum block number). If these "
23222322 "three arguments are omitted, then the defaults cause all allocated blocks to "
23232323 "be freed."
2324-msgstr ""
2324+msgstr "残りの 3 つの引き数は、どの割り当てられたブロックを B<free>(3) で解放すべきかを指定する。 これらの 3 つの引き数の指定は任意で、 最初のものから順に以下の情報を指定する。 1 つ目の引き数は、 ブロックを解放するループで使用するステップサイズを指定する (デフォルト値は 1 で、 1 は指定した範囲のすべてのブロックを解放することを意味する)。 2 つ目の引き数は、 解放する先頭ブロックの場所番号を指定する (デフォルト値は 0 で、 0 は先頭の割り当て済みブロックを意味する)。 3 つ目の引き数は、 解放する最終ブロックの場所番号よりひとつ大きい値を指定する (デフォルト値は最大ブロック番号よりもひとつ大きい値である)。 これらの 3 つの引き数が省略された場合、 デフォルトではすべての割り当てられたブロックが解放される。"
23252325
23262326 #. type: Plain text
23272327 #: build/C/man3/mallinfo.3:162
23282328 msgid ""
23292329 "In the following example run of the program, 1000 allocations of 100 bytes "
23302330 "are performed, and then every second allocated block is freed:"
2331-msgstr ""
2331+msgstr "以下のプログラムの実行例では、 100 バイトの割り当てを 1000 回実行し、 割り当てたブロックの 2 つに 1 つを解放する。"
23322332
23332333 #. type: Plain text
23342334 #: build/C/man3/mallinfo.3:177
--- a/po4a/stdlib/po/ja.po
+++ b/po4a/stdlib/po/ja.po
@@ -7,7 +7,7 @@ msgid ""
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "POT-Creation-Date: 2015-01-23 22:25+0900\n"
10-"PO-Revision-Date: 2015-01-25 07:29+0900\n"
10+"PO-Revision-Date: 2015-01-29 22:26+0900\n"
1111 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1212 "Language-Team: LANGUAGE <LL@li.org>\n"
1313 "Language: \n"
@@ -2498,7 +2498,7 @@ msgstr "GETAUXVAL"
24982498 #. type: Plain text
24992499 #: build/C/man3/getauxval.3:32
25002500 msgid "getauxval - retrieve a value from the auxiliary vector"
2501-msgstr ""
2501+msgstr "getauxval - 補助ベクトルから値を取得する"
25022502
25032503 #. type: Plain text
25042504 #: build/C/man3/getauxval.3:35
@@ -2518,7 +2518,7 @@ msgid ""
25182518 "The B<getauxval>() function retrieves values from the auxiliary vector, a "
25192519 "mechanism that the kernel's ELF binary loader uses to pass certain "
25202520 "information to user space when a program is executed."
2521-msgstr ""
2521+msgstr "B<getauxval>() 関数は補助ベクトル (auxiliary vector) から値を取得する。 補助ベクトルは、 プログラムが実行される際に、 カーネルの ELF バイナリーローダーがユーザー空間にある種の情報を渡すのに使われる仕組みである。"
25222522
25232523 #. type: Plain text
25242524 #: build/C/man3/getauxval.3:53
@@ -2526,14 +2526,14 @@ msgid ""
25262526 "Each entry in the auxiliary vector consists of a pair of values: a type that "
25272527 "identifies what this entry represents, and a value for that type. Given the "
25282528 "argument I<type>, B<getauxval>() returns the corresponding value."
2529-msgstr ""
2529+msgstr "補助ベクトルの各エントリーは、 このエントリーを示すタイプとそのタイプの値のペアで構成される。 引き数 I<type> が指定されると、 B<getauxval>() は対応する値を返す。"
25302530
25312531 #. type: Plain text
25322532 #: build/C/man3/getauxval.3:60
25332533 msgid ""
25342534 "The value returned for each I<type> is given in the following list. Not all "
25352535 "I<type> values are present on all architectures."
2536-msgstr ""
2536+msgstr "それぞれの I<type> に対して返される値の詳細を以下に示す。 すべてのアーキテクチャーですべて I<type> 値が存在するわけではない。"
25372537
25382538 #. type: TP
25392539 #: build/C/man3/getauxval.3:60
@@ -2545,7 +2545,7 @@ msgstr "B<AT_BASE>"
25452545 #: build/C/man3/getauxval.3:63
25462546 msgid ""
25472547 "The base address of the program interpreter (usually, the dynamic linker)."
2548-msgstr ""
2548+msgstr "プログラムインタープリター (通常は動的ローダー) のベースアドレス。"
25492549
25502550 #. type: TP
25512551 #: build/C/man3/getauxval.3:63
@@ -2558,7 +2558,7 @@ msgstr "B<AT_BASE_PLATFORM>"
25582558 msgid ""
25592559 "A string identifying the real platform; may differ from B<AT_PLATFORM> "
25602560 "(PowerPC only)."
2561-msgstr ""
2561+msgstr "実プラットフォームを示す文字列。 B<AT_PLATFORM> と異なる値の場合がある。 (PowerPC のみ)"
25622562
25632563 #. type: TP
25642564 #: build/C/man3/getauxval.3:68
@@ -2571,7 +2571,7 @@ msgstr "B<AT_CLKTCK>"
25712571 msgid ""
25722572 "The frequency with which B<times>(2) counts. This value can also be "
25732573 "obtained via I<sysconf(_SC_CLK_TCK)>."
2574-msgstr ""
2574+msgstr "B<times>(2) のカウントが行われる周波数。 この値は I<sysconf(_SC_CLK_TCK)> でも取得できる。"
25752575
25762576 #. type: TP
25772577 #: build/C/man3/getauxval.3:75
@@ -2582,7 +2582,7 @@ msgstr "B<AT_DCACHEBSIZE>"
25822582 #. type: Plain text
25832583 #: build/C/man3/getauxval.3:78
25842584 msgid "The data cache block size."
2585-msgstr ""
2585+msgstr "データキャッシュのブロックサイズ。"
25862586
25872587 #. type: TP
25882588 #: build/C/man3/getauxval.3:78
@@ -2593,7 +2593,7 @@ msgstr "B<AT_EGID>"
25932593 #. type: Plain text
25942594 #: build/C/man3/getauxval.3:81
25952595 msgid "The effective group ID of the thread."
2596-msgstr ""
2596+msgstr "このスレッドの実効グループ ID。"
25972597
25982598 #. type: TP
25992599 #: build/C/man3/getauxval.3:81
@@ -2604,7 +2604,7 @@ msgstr "B<AT_ENTRY>"
26042604 #. type: Plain text
26052605 #: build/C/man3/getauxval.3:84
26062606 msgid "The entry address of the executable."
2607-msgstr ""
2607+msgstr "実行ファイルのエントリーアドレス。"
26082608
26092609 #. type: TP
26102610 #: build/C/man3/getauxval.3:84
@@ -2615,7 +2615,7 @@ msgstr "B<AT_EUID>"
26152615 #. type: Plain text
26162616 #: build/C/man3/getauxval.3:87
26172617 msgid "The effective user ID of the thread."
2618-msgstr ""
2618+msgstr "このスレッドの実効ユーザー ID。"
26192619
26202620 #. type: TP
26212621 #: build/C/man3/getauxval.3:87
@@ -2626,7 +2626,7 @@ msgstr "B<AT_EXECFD>"
26262626 #. type: Plain text
26272627 #: build/C/man3/getauxval.3:90
26282628 msgid "File descriptor of program."
2629-msgstr ""
2629+msgstr "プログラムのファイルディスクリプター。"
26302630
26312631 #. type: TP
26322632 #: build/C/man3/getauxval.3:90
@@ -2637,7 +2637,7 @@ msgstr "B<AT_EXECFN>"
26372637 #. type: Plain text
26382638 #: build/C/man3/getauxval.3:93
26392639 msgid "Pathname used to execute program."
2640-msgstr ""
2640+msgstr "実行プログラムに使用されたパス名。"
26412641
26422642 #. type: TP
26432643 #: build/C/man3/getauxval.3:93
@@ -2648,7 +2648,7 @@ msgstr "B<AT_FLAGS>"
26482648 #. type: Plain text
26492649 #: build/C/man3/getauxval.3:96
26502650 msgid "Flags (unused)."
2651-msgstr ""
2651+msgstr "フラグ (未使用)。"
26522652
26532653 #. type: TP
26542654 #: build/C/man3/getauxval.3:96
@@ -2661,7 +2661,7 @@ msgstr "B<AT_FPUCW>"
26612661 msgid ""
26622662 "Used FPU control word (SuperH architecture only). This gives some "
26632663 "information about the FPU initialization performed by the kernel."
2664-msgstr ""
2664+msgstr "使用された FPU 制御ワード (SuperH アーキテクチャーのみ)。 カーネルが実行した FPU 初期化に関する情報を提供するためのものである。"
26652665
26662666 #. type: TP
26672667 #: build/C/man3/getauxval.3:101
@@ -2672,7 +2672,7 @@ msgstr "B<AT_GID>"
26722672 #. type: Plain text
26732673 #: build/C/man3/getauxval.3:104
26742674 msgid "The real group ID of the thread."
2675-msgstr ""
2675+msgstr "このスレッドの実グループ ID。"
26762676
26772677 #. type: TP
26782678 #: build/C/man3/getauxval.3:104
@@ -2688,7 +2688,7 @@ msgid ""
26882688 "(for example, see the kernel source file I<arch/x86/include/asm/cpufeature."
26892689 "h> for details relating to the Intel x86 architecture). A human-readable "
26902690 "version of the same information is available via I</proc/cpuinfo>."
2691-msgstr ""
2691+msgstr "プロセッサーの詳細な機能 (capabilities) を示す複数バイトからなるビットマスクへのポインターである。 このビットマスクの内容はハードウェア依存である (例えば、 Intel x86 アーキテクチャーに関する詳細はカーネルのソースファイル I<arch/x86/include/asm/cpufeature.h> を参照)。 同じ情報を人が読みやすい形になっているのが I</proc/cpuinfo> である。"
26922692
26932693 #. type: TP
26942694 #: build/C/man3/getauxval.3:114
@@ -2705,7 +2705,7 @@ msgstr "B<AT_ICACHEBSIZE>"
27052705 #. type: Plain text
27062706 #: build/C/man3/getauxval.3:123
27072707 msgid "The instruction cache block size."
2708-msgstr ""
2708+msgstr "命令キャッシュのブロックサイズ。"
27092709
27102710 #. type: TP
27112711 #: build/C/man3/getauxval.3:123
@@ -2717,7 +2717,7 @@ msgstr "B<AT_PAGESZ>"
27172717 #: build/C/man3/getauxval.3:127
27182718 msgid ""
27192719 "The system page size (the same value returned by I<sysconf(_SC_PAGESIZE)>)."
2720-msgstr ""
2720+msgstr "システムページサイズ (I<sysconf(_SC_PAGESIZE)> が返す値と同じ)。"
27212721
27222722 #. type: TP
27232723 #: build/C/man3/getauxval.3:127
@@ -2728,7 +2728,7 @@ msgstr "B<AT_PHDR>"
27282728 #. type: Plain text
27292729 #: build/C/man3/getauxval.3:130
27302730 msgid "The address of the program headers of the executable."
2731-msgstr ""
2731+msgstr "実行プログラムのプログラムヘッダーのアドレス。"
27322732
27332733 #. type: TP
27342734 #: build/C/man3/getauxval.3:130
@@ -2739,7 +2739,7 @@ msgstr "B<AT_PHENT>"
27392739 #. type: Plain text
27402740 #: build/C/man3/getauxval.3:133
27412741 msgid "The size of program header entry."
2742-msgstr ""
2742+msgstr "プログラムヘッダーエントリーのサイズ。"
27432743
27442744 #. type: TP
27452745 #: build/C/man3/getauxval.3:133
@@ -2750,7 +2750,7 @@ msgstr "B<AT_PHNUM>"
27502750 #. type: Plain text
27512751 #: build/C/man3/getauxval.3:136
27522752 msgid "The number of program headers."
2753-msgstr ""
2753+msgstr "プログラムヘッダー数。"
27542754
27552755 #. type: TP
27562756 #: build/C/man3/getauxval.3:136
@@ -2764,7 +2764,7 @@ msgid ""
27642764 "A pointer to a string that identifies the hardware platform that the program "
27652765 "is running on. The dynamic linker uses this in the interpretation of "
27662766 "I<rpath> values."
2767-msgstr ""
2767+msgstr "このプログラムが実行されているハードウェアプラットフォームを特定する文字列へのポインター。 動的リンカーは I<rpath> 値の解釈を行う際にこの値を使用する。"
27682768
27692769 #. type: TP
27702770 #: build/C/man3/getauxval.3:143
@@ -2775,7 +2775,7 @@ msgstr "B<AT_RANDOM>"
27752775 #. type: Plain text
27762776 #: build/C/man3/getauxval.3:146
27772777 msgid "The address of sixteen bytes containing a random value."
2778-msgstr ""
2778+msgstr "ランダム値が入った 16 バイトがあるアドレス。"
27792779
27802780 #. type: TP
27812781 #: build/C/man3/getauxval.3:146
@@ -2793,7 +2793,7 @@ msgid ""
27932793 "disables the use of certain environment variables (see B<ld-linux.so>(8)) "
27942794 "and glibc changes other aspects of its behavior. (See also "
27952795 "B<secure_getenv>(3).)"
2796-msgstr ""
2796+msgstr "この実行ファイルを安全に扱う必要がある場合に 0 以外の値になる。 一番よくある場合としては、 0 以外の値になるのは、 そのプロセスが set-user-ID か set-group-ID されたプログラムを実行している場合である。 他の場合としては、 Linux Security Module が有効になっている場合にも 0 以外の値となる。 この値が 0 以外の場合、 動的リンカーは特定の環境変数の使用を無効化し (B<ld-linux.so>(8) 参照)、 glibc はそのプロセスの動作を別の観点で変更する (B<secure_getenv>(3) 参照)。"
27972797
27982798 #. type: TP
27992799 #: build/C/man3/getauxval.3:158
@@ -2806,7 +2806,7 @@ msgstr "B<AT_SYSINFO>"
28062806 msgid ""
28072807 "The entry point to the system call function in the vDSO. Not present/needed "
28082808 "on all architectures (e.g., absent on x86-64)."
2809-msgstr ""
2809+msgstr "vDSO のシステムコール関数へのエントリーポイント。すべてのアーキテクチャーで存在するわけではなく、 また必要というわけでもない (例えば x86-64 には存在しない)。"
28102810
28112811 #. type: TP
28122812 #: build/C/man3/getauxval.3:162
@@ -2820,7 +2820,7 @@ msgid ""
28202820 "The address of a page containing the virtual Dynamic Shared Object (vDSO) "
28212821 "that the kernel creates in order to provide fast implementations of certain "
28222822 "system calls."
2823-msgstr ""
2823+msgstr "仮想動的共有オブジェクト (vDSO; virtual Dynamic Shared Object) が入ったページのアドレス。 vDSO は、 特定のシステムコールの高速な実装を提供するためにカーネルが作成する共有オブジェクトである。"
28242824
28252825 #. type: TP
28262826 #: build/C/man3/getauxval.3:167
@@ -2831,7 +2831,7 @@ msgstr "B<AT_UCACHEBSIZE>"
28312831 #. type: Plain text
28322832 #: build/C/man3/getauxval.3:170
28332833 msgid "The unified cache block size."
2834-msgstr ""
2834+msgstr "ユニファイド (unified) キャッシュのブロックサイズ。"
28352835
28362836 #. type: TP
28372837 #: build/C/man3/getauxval.3:170
@@ -2842,7 +2842,7 @@ msgstr "B<AT_UID>"
28422842 #. type: Plain text
28432843 #: build/C/man3/getauxval.3:173
28442844 msgid "The real user ID of the thread."
2845-msgstr ""
2845+msgstr "このスレッドの実ユーザー ID。"
28462846
28472847 #. type: Plain text
28482848 #: build/C/man3/getauxval.3:181
@@ -2864,7 +2864,7 @@ msgstr "B<ENOENT> (glibc 2.19 以降)"
28642864 #: build/C/man3/getauxval.3:188
28652865 msgid ""
28662866 "No entry corresponding to I<type> could be found in the auxiliary vector."
2867-msgstr ""
2867+msgstr "I<type> に対応するエントリーが補助ベクトルになかった。"
28682868
28692869 #. type: Plain text
28702870 #: build/C/man3/getauxval.3:192
@@ -2890,7 +2890,7 @@ msgid ""
28902890 "standard information that the dynamic linker usually or always needs. In "
28912891 "some cases, the same information could be obtained by system calls, but "
28922892 "using the auxiliary vector is cheaper."
2893-msgstr ""
2893+msgstr "補助ベクトルの情報を主に使用するのは、 動的ローダー B<ld-linux.so>(8) である。 補助ベクトルは、 カーネルが動的リンカーが通常もしくは常に必要とするある意味標準的な情報を伝えるための便利で効率的なショートカットである。 いくつかの場合では、 同じ情報がシステムコール経由でも取得できるが、 補助ベクトルを使う方がコストがかからない。"
28942894
28952895 #. type: Plain text
28962896 #: build/C/man3/getauxval.3:214
@@ -2899,7 +2899,7 @@ msgid ""
28992899 "the process address space. The auxiliary vector supplied to a program can "
29002900 "be viewed by setting the B<LD_SHOW_AUXV> environment variable when running a "
29012901 "program:"
2902-msgstr ""
2902+msgstr "補助ベクトルには、 単に、 プロセスのアドレス空間の引き数リストと環境上に存在するだけである。 プログラム実行時に B<LD_SHOW_AUXV> 環境変数を設定すると、 プログラムに渡された補助ベクトルを表示することができる。"
29032903
29042904 #. type: Plain text
29052905 #: build/C/man3/getauxval.3:216
@@ -2912,7 +2912,7 @@ msgstr " $ LD_SHOW_AUXV=1 sleep 1\n"
29122912 msgid ""
29132913 "The auxiliary vector of any process can (subject to file permissions) be "
29142914 "obtained via I</proc/PID/auxv>; see B<proc>(5) for more information."
2915-msgstr ""
2915+msgstr "任意のプロセスの補助ベクトルは (ファイルのアクセス許可があれば) I</proc/PID/auxv> 経由で取得できる。 詳細は B<proc>(5) を参照。"
29162916
29172917 #. type: SH
29182918 #: build/C/man3/getauxval.3:223 build/C/man3/mktemp.3:105
@@ -2928,7 +2928,7 @@ msgid ""
29282928 "Before the addition of the B<ENOENT> error in glibc 2.19, there was no way "
29292929 "to unambiguously distinguish the case where I<type> could not be found from "
29302930 "the case where the value corresponding to I<type> was zer0."
2931-msgstr ""
2931+msgstr "glibc 2.19 で B<ENOENT> エラーが追加される前は、 I<type> が見つからなかった場合と I<type> に対応する値が 0 だった場合を明確に区別する方法がなかった。"
29322932
29332933 #. type: Plain text
29342934 #: build/C/man3/getauxval.3:236
--- /dev/null
+++ b/release/man1/sprof.1
@@ -0,0 +1,264 @@
1+.\" Copyright (C) 2014 Michael Kerrisk <mtk.manpages@gmail.com>
2+.\"
3+.\" %%%LICENSE_START(VERBATIM)
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. The author(s) may not
17+.\" have taken the same level of care in the production of this manual,
18+.\" which is licensed free of charge, as they might when working
19+.\" professionally.
20+.\"
21+.\" Formatted or processed versions of this manual, if unaccompanied by
22+.\" the source, must acknowledge the copyright and authors of this work.
23+.\" %%%LICENSE_END
24+.\"
25+.\"*******************************************************************
26+.\"
27+.\" This file was generated with po4a. Translate the source file.
28+.\"
29+.\"*******************************************************************
30+.TH SPROF 1 2014\-06\-24 Linux "Linux User Manual"
31+.SH 名前
32+sprof \- 共有オブジェクトのプロファイルデータを読み出して表示する
33+.SH 書式
34+.nf
35+\fBsprof\fP [\fIoption\fP]... \fIshared\-object\-path\fP [\fIprofile\-data\-path\fP]
36+.fi
37+.SH 説明
38+\fBsprof\fP コマンドは、 最初のコマンドライン引き数で指定された共有オブジェクトのプロファイルの概要を表示する。 2 番目のコマンドライン引き数
39+(省略可能) で指定された生成済みのプロファイルデータを使って、 プロファイルの概要が生成される。 プロファイルデータのパス名が省略された場合、
40+\fBsprof\fP は、 共有オブジェクトの soname を使ってパス名を元に、 カレントディレクトリに
41+\fI<soname>.profile\fP という名前のファイルを探して、 プロファイルデータを特定しようとする。
42+.SH オプション
43+以下のコマンドラインオプションは生成されるプロファイリング出力を指定する。
44+.TP
45+\fB\-c\fP, \fB\-\-call\-pairs\fP
46+共有オブジェクトで公開されているインターフェースに対して呼び出し経路のペアのリストを表示する。 各経路が使用された回数も表示される。
47+.TP
48+\fB\-p\fP, \fB\-\-flat\-profile\fP
49+監視対象のオブジェクトの全関数の、 回数と tick が入った flat profile を生成する。
50+.TP
51+\fB\-q\fP, \fB\-\-graph\fP
52+コールグラフを生成する。
53+.PP
54+上記のオプションがどれも指定されなかった場合のデフォルトの動作は、 flat profile とコールグラフが表示される。
55+.PP
56+以下のコマンドラインオプションも使用できる。
57+.TP
58+\fB\-?\fP, \fB\-\-help\fP
59+コマンドラインオプションと引き数の概要を表示し終了する。
60+.TP
61+\fB\-\-usage\fP
62+使用方法の簡潔な概要を表示し終了する。
63+.TP
64+\fB\-V\fP, \fB\-\-version\fP
65+プログラムのバージョンを表示し終了する。
66+.SH 準拠
67+\fBsprof\fP コマンドは GNU 拡張であり、 POSIX.1 には存在しない。
68+.SH 例
69+以下は \fBsprof\fP の使用例を示したものである。 この例では、メインプログラムで共有ライブラリ内の 2 つの関数を呼び出している。 最初に、
70+メインプログラムのコードは以下の通りである。
71+
72+.in +4n
73+.nf
74+$ \fBcat prog.c\fP
75+#include <stdlib.h>
76+
77+void x1(void);
78+void x2(void);
79+
80+int
81+main(int argc, char *argv[])
82+{
83+ x1();
84+ x2();
85+ exit(EXIT_SUCCESS);
86+}
87+.fi
88+.in
89+.PP
90+関数 \fIx1()\fP と \fIx2()\fP は以下のソースファイルで定義されており、 このファイルから共有ライブラリが構成される。
91+
92+.in +4n
93+.nf
94+$ \fBcat libdemo.c\fP
95+#include <unistd.h>
96+
97+void
98+consumeCpu1(int lim)
99+{
100+ int j;
101+
102+ for (j = 0; j < lim; j++)
103+ getppid();
104+}
105+
106+void
107+x1(void) {
108+ int j;
109+
110+ for (j = 0; j < 100; j++)
111+ consumeCpu1(200000);
112+}
113+
114+void
115+consumeCpu2(int lim)
116+{
117+ int j;
118+
119+ for (j = 0; j < lim; j++)
120+ getppid();
121+}
122+
123+void
124+x2(void)
125+{
126+ int j;
127+
128+ for (j = 0; j < 1000; j++)
129+ consumeCpu2(10000);
130+}
131+.fi
132+.in
133+.PP
134+ここで、 実際の名前は \fIlibdemo.so.1.0.1\fP で soname は \fIlibdemo.so.1\fP で共有ライブラリを構成する。
135+
136+.in +4n
137+.nf
138+$ \fBcc \-g \-fPIC \-shared \-Wl,\-soname,libdemo.so.1 \e\fP
139+ \fB\-o libdemo.so.1.0.1 libdemo.c\fP
140+.fi
141+.in
142+.PP
143+次に、 ライブラリ soname とライブラリのリンカー名へのシンボリックリンクを作成する。
144+
145+.in +4n
146+.nf
147+$ \fBln \-sf libdemo.so.1.0.1 libdemo.so.1\fP
148+$ \fBln \-sf libdemo.so.1 libdemo.so\fP
149+.fi
150+.in
151+.PP
152+続けて、 共有ライブラリとリンクしてメインプログラムをコンパイルし、 プログラムが依存する共有ライブラリの一覧を表示する。
153+
154+.in +4n
155+.nf
156+$ \fBcc \-g \-o prog prog.c \-L. \-ldemo\fP
157+$ \fBldd prog\fP
158+ linux\-vdso.so.1 => (0x00007fff86d66000)
159+ libdemo.so.1 => not found
160+ libc.so.6 => /lib64/libc.so.6 (0x00007fd4dc138000)
161+ /lib64/ld\-linux\-x86\-64.so.2 (0x00007fd4dc51f000)
162+.fi
163+.in
164+.PP
165+共有ライブラリのプロファイル情報を取得するために、 環境変数 \fBLD_PROFILE\fP にこのライブラリの soname を設定する。
166+
167+.in +4n
168+.nf
169+$ \fBexport LD_PROFILE=libdemo.so.1\fP
170+.fi
171+.in
172+.PP
173+環境変数 \fBLD_PROFILE_OUTPUT\fP にプロファイル情報を出力するディレクトリのパス名を設定し、
174+このディレクトリが存在しない場合は作成する。
175+
176+.in +4n
177+.nf
178+$ \fBexport LD_PROFILE_OUTPUT=$(pwd)/prof_data\fP
179+$ \fBmkdir \-p $LD_PROFILE_OUTPUT\fP
180+.fi
181+.in
182+.PP
183+\fBLD_PROFILE\fP を設定すると、 プロファイルの出力は出力ファイルがすでに存在する場合は「追記」されるので、
184+既存のプロファイルデータが存在しないようにしておく。
185+
186+.in +4n
187+.nf
188+$ \fBrm \-f $LD_PROFILE_OUTPUT/$LD_PROFILE.profile\fP
189+.fi
190+.in
191+.PP
192+次にプログラムを実行し、 プロファイリング出力を生成させる。 プロファイリング出力は \fBLD_PROFILE_OUTPUT\fP
193+で指定されたディレクトリにファイルが書き込まれる。
194+
195+.in +4n
196+.nf
197+$ \fBLD_LIBRARY_PATH=. ./prog\fP
198+$ \fBls prof_data\fP
199+libdemo.so.1.profile
200+.fi
201+.in
202+.PP
203+\fBsprof \-p\fP オプションを使って、 呼び出し回数と tick 数が含まれる flat プロファイルを生成する。
204+
205+.in +4n
206+.nf
207+$ \fBsprof \-p libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile\fP
208+Flat profile:
209+
210+Each sample counts as 0.01 seconds.
211+ % cumulative self self total
212+ time seconds seconds calls us/call us/call name
213+ 60.00 0.06 0.06 100 600.00 consumeCpu1
214+ 40.00 0.10 0.04 1000 40.00 consumeCpu2
215+ 0.00 0.10 0.00 1 0.00 x1
216+ 0.00 0.10 0.00 1 0.00 x2
217+.fi
218+.in
219+.PP
220+\fBsprof \-q\fP オプションを使うと、 コールグラフが生成される。
221+
222+.in +4n
223+.nf
224+$ \fBsprof \-q libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile\fP
225+
226+index % time self children called name
227+
228+ 0.00 0.00 100/100 x1 [1]
229+[0] 100.0 0.00 0.00 100 consumeCpu1 [0]
230+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
231+ 0.00 0.00 1/1 <UNKNOWN>
232+[1] 0.0 0.00 0.00 1 x1 [1]
233+ 0.00 0.00 100/100 consumeCpu1 [0]
234+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
235+ 0.00 0.00 1000/1000 x2 [3]
236+[2] 0.0 0.00 0.00 1000 consumeCpu2 [2]
237+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
238+ 0.00 0.00 1/1 <UNKNOWN>
239+[3] 0.0 0.00 0.00 1 x2 [3]
240+ 0.00 0.00 1000/1000 consumeCpu2 [2]
241+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
242+.fi
243+.in
244+.PP
245+上記や以下の例で、 "<UNKNOWN>" の文字列は、 識別子がプロファイルされたオブジェクトの外部にあることを表している
246+(この例では "<UNKNOWN>" になっているのは \fImain()\fP 内のオブジェクトである)。
247+.PP
248+\fBsprof \-c\fP オプションを使うと、 呼び出しの組とその発生回数のリストが生成される。
249+
250+.in +4n
251+.nf
252+$ \fBsprof \-c libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile\fP
253+<UNKNOWN> x1 1
254+x1 consumeCpu1 100
255+<UNKNOWN> x2 1
256+x2 consumeCpu2 1000
257+.fi
258+.in
259+.SH 関連項目
260+\fBgprof\fP(1), \fBldd\fP(1), \fBld.so\fP(8)
261+.SH この文書について
262+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
263+である。プロジェクトの説明とバグ報告に関する情報は
264+http://www.kernel.org/doc/man\-pages/ に書かれている。
--- a/release/man2/delete_module.2
+++ b/release/man2/delete_module.2
@@ -1,51 +1,133 @@
1-.\" Copyright (C) 1996 Free Software Foundation, Inc.
2-.\" This file is distributed according to the GNU General Public License.
3-.\" See the file COPYING in the top level source directory for details.
1+.\" Copyright (C) 2012 Michael Kerrisk <mtk.manpages@gmail.com>
42 .\"
5-.\" 2006-02-09, some reformatting by Luc Van Oostenryck; some
6-.\" reformatting and rewordings by mtk
3+.\" %%%LICENSE_START(VERBATIM)
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. The author(s) may not
17+.\" have taken the same level of care in the production of this manual,
18+.\" which is licensed free of charge, as they might when working
19+.\" professionally.
20+.\"
21+.\" Formatted or processed versions of this manual, if unaccompanied by
22+.\" the source, must acknowledge the copyright and authors of this work.
23+.\" %%%LICENSE_END
724 .\"
825 .\"*******************************************************************
926 .\"
1027 .\" This file was generated with po4a. Translate the source file.
1128 .\"
1229 .\"*******************************************************************
13-.TH DELETE_MODULE 2 2006\-02\-09 Linux "Linux Programmer's Manual"
30+.\"
31+.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved.
32+.\" Translated 2006-07-29, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
33+.\"
34+.TH DELETE_MODULE 2 2014\-05\-10 Linux "Linux Programmer's Manual"
1435 .SH 名前
15-delete_module \- ローダブルモジュールのエントリを削除する
36+delete_module \- カーネルモジュールをアンロードする
1637 .SH 書式
1738 .nf
18-\fB#include <linux/module.h>\fP
19-.sp
20-\fBint delete_module(const char *\fP\fIname\fP\fB);\fP
39+\fBint delete_module(const char *\fP\fIname\fP\fB, int \fP\fIflags\fP\fB);\fP
2140 .fi
41+
42+\fI注意\fP: この関数の宣言は glibc のヘッダーでは提供されていない。「注意」を参照。
2243 .SH 説明
23-\fBdelete_module\fP() は、未使用のローダブルモジュールのエントリを削除しようとする。 \fIname\fP が NULL
24-の場合、未使用のモジュールのうち「自動削除 (auto\-clean)」 マークがついたものを全て削除する。
25-このシステムコールを使うには特権が必要である。
44+\fBdelete_module\fP() システムコールは、 \fIname\fP で特定される未使用のロード可能なモジュールのエントリーを削除しようとする。
45+モジュールに \fIexit\fP 関数がある場合、 モジュールをアンロードする前にこの関数が実行される。 \fIflags\fP
46+引き数は、以下で説明するようにシステムコールの動作を変更するのに使用される。 このシステムコールには特権が必要である。
47+
48+モジュールの削除は以下のルールにしたがって行われる。
49+.IP 1. 4
50+このモジュールに依存している (このモジュールで定義されているシンボルを参照している) モジュールがロードされている場合、 この呼び出しは失敗する。
51+.IP 2.
52+それ以外の場合で、 モジュールの参照カウント (このモジュールを現在使用しているプロセス数) が 0 であれば、 モジュールは直ちにアンロードされる。
53+.IP 3.
54+.\" O_TRUNC == KMOD_REMOVE_FORCE in kmod library
55+.\" O_NONBLOCK == KMOD_REMOVE_NOWAIT in kmod library
56+モジュールの参照カウントが 0 でない場合、 その動作は \fIflags\fP にセットされたビットによって決まる。 通常の使用時は (「注意」参照)、
57+\fBO_NONBLOCK\fP は常に指定され、 \fBO_TRUNC\fP フラグが追加で指定されることがある。
58+
59+\fIflags\fP の組み合わせが持つ効果は以下のとおりである。
60+.RS 4
61+.TP
62+\fBflags == O_NONBLOCK\fP
63+エラーの場合、 呼び出しは直ちに返る。
64+.TP
65+\fBflags == (O_NONBLOCK | O_TRUNC)\fP
66+参照カウントが 0 以外かどうかに関わらず、 直ちにモジュールをアンロードする。
67+.TP
68+\fB(flags & O_NONBLOCK) == 0\fP
69+\fIflags\fP に \fBO_NONBLOCK\fP が指定されなかった場合、 以下のステップで処理が行われる。
70+.RS
71+.IP * 3
72+新しい参照を許可しないように、 指定されたモジュールにマークを付ける。
73+.IP *
74+モジュールの参照カウントが 0 でない場合、 参照カウントが 0 になるまで、 呼び出し元は割り込み不可のスリープ状態
75+(\fBTASK_UNINTERRUPTIBLE\fP) に置かれる。 参照カウントが 0 になった時点で、 呼び出し元の停止が解除される。
76+.IP *
77+モジュールは通常通りの方法でアンロードされる。
78+.RE
79+.RE
80+.PP
81+\fBO_TRUNC\fP フラグには上記のルールに加えてもう一つの効果がある。 デフォルトでは、 モジュールに \fIinit\fP 関数があるが \fIexit\fP
82+関数がない場合、 そのモジュールを削除しようとすると失敗する。 しかし、 \fBO_TRUNC\fP が指定された場合、 この要件はスキップされる。
83+.PP
84+\fBO_TRUNC\fP フラグの使用は危険である! カーネルが \fBCONFIG_MODULE_FORCE_UNLOAD\fP で作成されていない場合、
85+このフラグは黙って無視される (通常は \fBCONFIG_MODULE_FORCE_UNLOAD\fP は有効になっている)。
86+このフラグを使うとカーネルにゴミが残ることになる (TAINT_FORCED_RMMOD)。
2687 .SH 返り値
2788 成功の場合 0 が返される。エラーの場合 \-1 が返され、 \fIerrno\fP に適切な値が設定される。
2889 .SH エラー
2990 .TP
3091 \fBEBUSY\fP
31-そのモジュールは使用中である。
92+モジュールは"live" ではない (モジュールがまだ初期化中か、 すでに削除のマークが付けられている)。 モジュールに \fIinit\fP 関数があるが
93+\fIexit\fP 関数がなく、 \fIflags\fP に \fBO_TRUNC\fP が指定されていなかった。
3294 .TP
3395 \fBEFAULT\fP
34-\fIname\fP がプログラムがアクセスできるアドレス空間の外部にある。
35-.TP
36-\fBEINVAL\fP
37-\fIname\fP が空文字列である。
96+\fIname\fP がプロセスがアクセスできるアドレス空間外の場所を参照している。
3897 .TP
3998 \fBENOENT\fP
4099 その名前のモジュールが存在しない。
41100 .TP
42101 \fBEPERM\fP
43-呼び出し元が特権 (\fBCAP_SYS_MODULE\fP ケーパビリティ) を持っていなかった。
102+呼び出し元が特権 (\fBCAP_SYS_MODULE\fP ケーパビリティ) を持っていなかった。 または、 モジュールのアンロードが無効になっている
103+(\fBproc\fP(5) の \fI/proc/sys/kernel/modules_disabled\fP を参照)。
104+.TP
105+\fBEWOULDBLOCK\fP
106+他のモジュールがこのモジュールに依存している。または、 \fIflags\fP に \fBO_NONBLOCK\fP が指定されたが、
107+このモジュールの参照カウントが 0 以外で \fIflags\fP に \fBO_TRUNC\fP が指定されていなかった。
44108 .SH 準拠
45109 \fBdelete_module\fP() は Linux 固有である。
110+.SH 注意
111+\fBdelete_module\fP() システムコールは glibc ではサポートされていない。 glibc ヘッダーでは宣言は提供されていないが、
112+歴史の紆余曲折を経て glibc はこのシステムコールに対する ABI を公開していない。
113+したがって、このシステムコールを利用するには、自分のコードの中で手動でインターフェースを宣言すればよい。 \fBsyscall\fP(2)
114+を使ってシステムコールを起動できる。
115+
116+\fIflags\fP に \fBO_NONBLOCK\fP が指定されていない場合に起こる可能性がある割り込み不可のスリープは望ましくないと考えられている。
117+なぜなら、 スリープしているプロセスは kill できない状態 (unkillable state) のままになるからである。 Linux 3.7
118+時点では、 \fBO_NONBLOCK\fP の指定は省略可能だが、 将来のカーネルでは必須になるだろう。
119+.SS "Linux 2.4 以前"
120+Linux 2.4 以前では、 このシステムコールの引き数は 1 つだけであった。
121+
122+\fB int delete_module(const char *\fP\fIname\fP\fB);\fP
123+
124+\fIname\fP が NULL の場合、 auto\-clean のマークがついたすべての未使用のモジュールが削除される。
125+
126+Linux 2.4 以前の \fBdelete_module\fP() の動作のより詳細な違いは、 現在のところこのマニュアルページでは説明\fIしない\fP。
46127 .SH 関連項目
47-\fBcreate_module\fP(2), \fBinit_module\fP(2), \fBquery_module\fP(2)
128+\fBcreate_module\fP(2), \fBinit_module\fP(2), \fBquery_module\fP(2), \fBlsmod\fP(8),
129+\fBmodprobe\fP(8), \fBrmmod\fP(8)
48130 .SH この文書について
49-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.41 の一部
131+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
50132 である。プロジェクトの説明とバグ報告に関する情報は
51133 http://www.kernel.org/doc/man\-pages/ に書かれている。
--- a/release/man2/init_module.2
+++ b/release/man2/init_module.2
@@ -1,29 +1,199 @@
1+.\" Copyright (C) 2012 Michael Kerrisk <mtk.manpages@gmail.com>
2+.\" A few fragments remain from a version
13 .\" Copyright (C) 1996 Free Software Foundation, Inc.
2-.\" This file is distributed according to the GNU General Public License.
3-.\" See the file COPYING in the top level source directory for details.
44 .\"
5-.\" 2006-02-09, some reformatting by Luc Van Oostenryck; some
6-.\" reformatting and rewordings by mtk
5+.\" %%%LICENSE_START(VERBATIM)
6+.\" Permission is granted to make and distribute verbatim copies of this
7+.\" manual provided the copyright notice and this permission notice are
8+.\" preserved on all copies.
9+.\"
10+.\" Permission is granted to copy and distribute modified versions of this
11+.\" manual under the conditions for verbatim copying, provided that the
12+.\" entire resulting derived work is distributed under the terms of a
13+.\" permission notice identical to this one.
14+.\"
15+.\" Since the Linux kernel and libraries are constantly changing, this
16+.\" manual page may be incorrect or out-of-date. The author(s) assume no
17+.\" responsibility for errors or omissions, or for damages resulting from
18+.\" the use of the information contained herein. The author(s) may not
19+.\" have taken the same level of care in the production of this manual,
20+.\" which is licensed free of charge, as they might when working
21+.\" professionally.
22+.\"
23+.\" Formatted or processed versions of this manual, if unaccompanied by
24+.\" the source, must acknowledge the copyright and authors of this work.
25+.\" %%%LICENSE_END
726 .\"
827 .\"*******************************************************************
928 .\"
1029 .\" This file was generated with po4a. Translate the source file.
1130 .\"
1231 .\"*******************************************************************
13-.TH INIT_MODULE 2 2006\-02\-09 Linux "Linux Programmer's Manual"
32+.\"
33+.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved.
34+.\" Translated 2006-07-29, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
35+.\"
36+.TH INIT_MODULE 2 2014\-05\-10 Linux "Linux Programmer's Manual"
1437 .SH 名前
15-init_module \- ローダブルモジュールのエントリを初期化する
38+init_module, finit_module \- カーネルモジュールをロードする
1639 .SH 書式
1740 .nf
18-\fB#include <linux/module.h>\fP
19-.sp
20-\fBint init_module(const char *\fP\fIname\fP\fB, struct module *\fP\fIimage\fP\fB);\fP
41+\fBint init_module(void *\fP\fImodule_image\fP\fB, unsigned long \fP\fIlen\fP\fB,\fP
42+\fB const char *\fP\fIparam_values\fP\fB);\fP
43+
44+\fBint finit_module(int \fP\fIfd\fP\fB, const char *\fP\fIparam_values\fP\fB,\fP
45+\fB int \fP\fIflags\fP\fB);\fP
2146 .fi
47+
48+\fI注意\fP: glibc では、 ヘッダーファイルでの \fBinit_module\fP() の宣言はなく、 \fBfinit_module\fP()
49+のラッパー関数も提供されていない。 「注意」の節を参照。
2250 .SH 説明
23-\fBinit_module\fP() は再配置されたモジュールイメージをカーネル空間にロードし、 そのモジュールの \fIinit\fP 関数を実行する。
51+\fBinit_module\fP() は ELF イメージをカーネル空間にロードし、 必要なシンボルの配置変更を行い、
52+モジュールパラメーターを呼び出し元から指定された値に初期化し、 最後にそのモジュールの \fIinit\fP 関数を実行する。
53+このシステムコールには特権が必要である。
54+
55+\fImodule_image\fP 引き数はロードするバイナリーイメージが入ったバッファーを指し、 \fIlen\fP はバッファーのサイズを指定する。
56+モジュールイメージは、 実行中のカーネル用に作成された有効な ELF イメージである必要がある。
57+
58+\fIparam_values\fP 引き数はモジュールパラメーター値を指定するスペース区切りの文字列である (モジュールパラメーターは
59+\fBmodule_param\fP() や \fBmodule_param_array\fP() を使ってモジュール内で定義される)。
60+カーネルはこの文字列を解釈し、指定されたパラメーターを初期化する。 各パラメーター指定は以下の形式である。
61+
62+\fIname\fP[\fB=\fP\fIvalue\fP[\fB,\fP\fIvalue\fP...]]
63+
64+パラメーター \fIname\fP はモジュール内で \fImodule_param\fP() を使って定義されているパラメーターのいずれか一つである (Linux
65+カーネルのソースファイル \fIinclude/linux/moduleparam.h\fP を参照)。 パラメーター \fIvalue\fP は \fIbool\fP
66+か \fIinvbool\fP パラメーターの場合は省略可能である。 配列パラメーターの値はカンマ区切りのリストで指定される。
67+.SS finit_module()
68+.\" commit 34e1169d996ab148490c01b65b4ee371cf8ffba2
69+.\" https://lwn.net/Articles/519010/
70+\fBfinit_module\fP() システムコールは \fBinit_module\fP() と同様だが、 ファイルディスクリプター \fIfd\fP
71+からモジュールをロードする。 カーネルモジュールの信頼性をファイルシステムにおける場所から判定できる場合、この方法は有効である。
72+この方法が利用できる場合、 モジュールの信頼性を判定するのに暗号で署名されたモジュールを使用することによるオーバーヘッドを避ける事ができる。
73+\fIparam_values\fP 引き数は \fBinit_module\fP() と同じである。
74+
75+.\" commit 2f3238aebedb243804f58d62d57244edec4149b2
76+\fIflags\fP 引き数で \fBfinit_module\fP() の動作を変更できる。 \fIflags\fP は以下のフラグの 0
77+個以上の論理和をとって作成したビットマスクである。
78+.TP
79+\fBMODULE_INIT_IGNORE_MODVERSIONS\fP
80+シンボルのバージョンハッシュを無視する。
81+.TP
82+\fBMODULE_INIT_IGNORE_VERMAGIC\fP
83+カーネルのバージョン magic を無視する。
84+.PP
85+.\" http://www.tldp.org/HOWTO/Module-HOWTO/basekerncompat.html
86+.\" is dated, but informative
87+そのモジュールがロードされるカーネルに合致することを保証するためのモジュールに組み込みの安全チェックがある。 これらのチェックは、
88+モジュールの作成時に記録され、 モジュールのロード時に検査される。 最初に、 モジュールはカーネルのバージョン番号と主要な機能 (CPU 種別など)
89+が入った "vermagic" 文字列を記録する。 次に、 モジュールが \fBCONFIG_MODVERSIONS\fP
90+設定オプションを有効にして作成されている場合、 バージョンハッシュがモジュールが使用するシンボルごとに記録される。
91+このハッシュはシンボルに対応する関数の引き数と返り値の型を基づいて計算される。 この場合、
92+シンボルのバージョンハッシュは十分に信頼できると考えられているため、 "vermagic" 文字列内のカーネルのバージョン番号は無視される。
93+
94+\fBMODULE_INIT_IGNORE_VERMAGIC\fP フラグは "vermagic" 文字列を無視することを意味し、
95+\fBMODULE_INIT_IGNORE_MODVERSIONS\fP フラグはシンボルのバージョンハッシュを無視することを意味する。
96+カーネルが強制ロードを許可するように作成されている場合 (\fBCONFIG_MODULE_FORCE_LOAD\fP が有効になっている場合)、
97+モジュールのロードは継続され、 そうでない場合は不正なモジュールに対して返るのと同じ \fBENOEXEC\fP で失敗する。
98+.SH 返り値
99+成功の場合、これらのシステムコールは 0 を返す。エラーの場合 \-1 が返され、 \fIerrno\fP に適切な値が設定される。
100+.SH エラー
101+.TP
102+\fBEBADMSG\fP (Linux 3.7 以降)
103+モジュールの署名が正しい形式ではない。
104+.TP
105+\fBEBUSY\fP
106+このモジュールがシンボル参照を解決する際にタイムアウトが起こった。
107+.TP
108+\fBEFAULT\fP
109+アドレス引き数が、プロセスがアクセスできるアドレス空間外の場所を参照していた。
110+.TP
111+\fBENOKEY\fP (Linux 3.7 以降)
112+.\" commit 48ba2462ace6072741fd8d0058207d630ce93bf1
113+.\" commit 1d0059f3a468825b5fc5405c636a2f6e02707ffa
114+.\" commit 106a4ee258d14818467829bf0e12aeae14c16cd7
115+モジュールの署名が無効であるか、 カーネルがこのモジュール用の鍵を持っていない。 このエラーが返されるのは、 カーネルが
116+\fBCONFIG_MODULE_SIG_FORCE\fP で作成されている場合のみである。 カーネルでこのオプションが有効になっていない場合、
117+無効なモジュールや署名されていないモジュールはカーネルのゴミになる。
118+.TP
119+\fBENOMEM\fP
120+メモリ不足。
121+.TP
122+\fBEPERM\fP
123+呼び出し元が特権 (\fBCAP_SYS_MODULE\fP ケーパビリティ) を持っていなかった。もしくはモジュールのロードが無効になっている
124+(\fBproc\fP(5) の \fI/proc/sys/kernel/modules_disabled\fP を参照)。
125+.PP
126+\fBinit_module\fP() では以下のエラーも発生する場合がある。
127+.TP
128+\fBEEXIST\fP
129+その名前のモジュールがすでにロードされている。
130+.TP
131+\fBEINVAL\fP
132+.\" .TP
133+.\" .BR EINVAL " (Linux 2.4 and earlier)"
134+.\" Some
135+.\" .I image
136+.\" slot is filled in incorrectly,
137+.\" .I image\->name
138+.\" does not correspond to the original module name, some
139+.\" .I image\->deps
140+.\" entry does not correspond to a loaded module,
141+.\" or some other similar inconsistency.
142+\fIparam_values\fP が無効、 または \fImodule_image\fP の ELF イメージの一部分に矛盾がある。
143+.TP
144+\fBENOEXEC\fP
145+\fImodule_image\fP で指定されたバイナリーイメージが ELF イメージではない、 もしくは無効な ELF イメージや別のアーキテクチャー用の
146+ELF イメージである。
147+.PP
148+\fBfinit_module\fP() では以下のエラーも発生する場合がある。
149+.TP
150+\fBEBADF\fP
151+\fIfd\fP が参照するファイルが読み出し用にオープンされていない。
152+.TP
153+\fBEFBIG\fP
154+\fIfd\fP が参照するファイルが大きすぎる。
155+.TP
156+\fBEINVAL\fP
157+\fIflags\fP が無効である。
158+.TP
159+\fBENOEXEC\fP
160+\fIfd\fP がオープンされたファイルを参照していない。
161+.PP
162+上記のエラーに加え、 モジュールの \fIinit\fP 関数が実行されてエラーが発生した場合には、 \fBinit_module\fP() や
163+\fBfinit_module\fP() は失敗し、 \fIerrno\fP に \fIinit\fP 関数が返した値が設定される。
164+.SH バージョン
165+\fBfinit_module\fP() は Linux 3.8 以降で利用可能である。
166+.SH 準拠
167+\fBinit_module\fP() と \fBfinit_module\fP() は Linux 固有である。
168+.SH 注意
169+\fBinit_module\fP() システムコールは glibc ではサポートされていない。 glibc ヘッダーでは宣言は提供されていないが、
170+歴史の紆余曲折を経て glibc はこのシステムコールに対する ABI を公開していない。
171+したがって、このシステムコールを利用するには、自分のコードの中で手動でインターフェースを宣言すればよい。 \fBsyscall\fP(2)
172+を使ってシステムコールを起動できる。
173+
174+glibc は \fBfinit_module\fP() に対するラッパー関数を提供していない。 \fBsyscall\fP(2) を使って呼び出すこと。
175+
176+現在ロードされているモジュールに関する情報は \fI/proc/modules\fP および \fI/sys/module\fP
177+以下のモジュール単位のサブディレクトリ内のファイルツリーで参照できる。
178+
179+Linux カーネルのソースファイル \fIinclude/linux/module.h\fP には背景に関する有用な情報がある。
180+.SS "Linux 2.4 以前"
24181 .PP
25-モジュールイメージは先頭部分に module 構造体があり、その後ろに 適切なコードとデータが続く。 この module
26-構造体は以下のように定義されている:
182+Linux 2.4 以前では \fBinit_module\fP() システムコールはかなり違ったものであった。
183+
184+\fB#include <linux/module.h>\fP
185+
186+\fB int init_module(const char *\fP\fIname\fP\fB, struct module *\fP\fIimage\fP\fB);\fP
187+
188+(ユーザー空間アプリケーションは \fBquery_module\fP() を呼び出してどのバージョンの \fBinit_module\fP()
189+が利用可能かを検出できる。 \fBquery_module\fP() の呼び出しは Linux 2.6 以降ではエラー \fBENOSYS\fP で失敗する。)
190+
191+古いバージョンのシステムコールは、 \fIimage\fP が指す再配置されたモジュールイメージをカーネル空間にロードし、 モジュールの \fIinit\fP
192+関数を実行する。 呼び出し元には再配置されたイメージを提供する責任がある (Linux 2.6 以降では \fBinit_module\fP()
193+システムコールが再配置自体を行う)。
194+.PP
195+モジュールイメージは先頭部分に module 構造体があり、その後ろに 適切なコードとデータが続く。 Linux 2.2 以降では module
196+構造体は以下のように定義されている。
27197 .PP
28198 .in +4n
29199 .nf
@@ -50,35 +220,12 @@ struct module {
50220 .fi
51221 .in
52222 .PP
53-\fInext\fP と \fIrefs\fP 以外の全てのポインタ要素はモジュール本体内部を指し、 カーネル空間での適切な値で初期化される
223+\fInext\fP と \fIrefs\fP 以外の全てのポインター要素はモジュール本体内部を指し、 カーネル空間での適切な値で初期化される
54224 (つまり、モジュールの残りの 部分で再配置される) ことが期待される。
55-.PP
56-このシステムコールを使うには特権が必要である。
57-.SH 返り値
58-成功の場合 0 が返される。エラーの場合 \-1 が返され、 \fIerrno\fP に適切な値が設定される。
59-.SH エラー
60-.TP
61-\fBEBUSY\fP
62-モジュールの初期化ルーチンが失敗した。
63-.TP
64-\fBEFAULT\fP
65-\fIname\fP や \fIimage\fP がプログラムがアクセスできるアドレス空間の外部にある。
66-.TP
67-\fBEINVAL\fP
68-一部の \fIimage\fP スロットにおかしな値が入っている。または \fIimage\->name\fP
69-が元のモジュール名と一致していない。または、一部の \fIimage\->deps\fP エントリがロードされたモジュールに対応していない。
70-または、他に同様の矛盾が起こっている。
71-.TP
72-\fBENOENT\fP
73-その名前のモジュールが存在しない。
74-.TP
75-\fBEPERM\fP
76-呼び出し元が特権 (\fBCAP_SYS_MODULE\fP ケーパビリティ) を持っていなかった。
77-.SH 準拠
78-\fBinit_module\fP() は Linux 固有である。
79225 .SH 関連項目
80-\fBcreate_module\fP(2), \fBdelete_module\fP(2), \fBquery_module\fP(2)
226+\fBcreate_module\fP(2), \fBdelete_module\fP(2), \fBquery_module\fP(2), \fBlsmod\fP(8),
227+\fBmodprobe\fP(8)
81228 .SH この文書について
82-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.41 の一部
229+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
83230 である。プロジェクトの説明とバグ報告に関する情報は
84231 http://www.kernel.org/doc/man\-pages/ に書かれている。
--- /dev/null
+++ b/release/man3/getauxval.3
@@ -0,0 +1,175 @@
1+.\" Copyright 2012 Michael Kerrisk <mtk.manpages@gmail.com>
2+.\"
3+.\" %%%LICENSE_START(VERBATIM)
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. The author(s) may not
17+.\" have taken the same level of care in the production of this manual,
18+.\" which is licensed free of charge, as they might when working
19+.\" professionally.
20+.\"
21+.\" Formatted or processed versions of this manual, if unaccompanied by
22+.\" the source, must acknowledge the copyright and authors of this work.
23+.\" %%%LICENSE_END
24+.\"
25+.\" See also https://lwn.net/Articles/519085/
26+.\"
27+.\" FIXME glibc 2.18 added AT_HWCAP2, which needs to e documented
28+.\"
29+.\"*******************************************************************
30+.\"
31+.\" This file was generated with po4a. Translate the source file.
32+.\"
33+.\"*******************************************************************
34+.TH GETAUXVAL 3 2014\-08\-19 GNU "Linux Programmer's Manual"
35+.SH 名前
36+getauxval \- 補助ベクトルから値を取得する
37+.SH 書式
38+.nf
39+\fB#include <sys/auxv.h>\fP
40+.sp
41+\fBunsigned long getauxval(unsigned long \fP\fItype\fP\fB);\fP
42+.fi
43+.SH 説明
44+\fBgetauxval\fP() 関数は補助ベクトル (auxiliary vector) から値を取得する。 補助ベクトルは、
45+プログラムが実行される際に、 カーネルの ELF バイナリーローダーがユーザー空間にある種の情報を渡すのに使われる仕組みである。
46+
47+補助ベクトルの各エントリーは、 このエントリーを示すタイプとそのタイプの値のペアで構成される。 引き数 \fItype\fP が指定されると、
48+\fBgetauxval\fP() は対応する値を返す。
49+
50+それぞれの \fItype\fP に対して返される値の詳細を以下に示す。 すべてのアーキテクチャーですべて \fItype\fP 値が存在するわけではない。
51+.TP
52+\fBAT_BASE\fP
53+プログラムインタープリター (通常は動的ローダー) のベースアドレス。
54+.TP
55+\fBAT_BASE_PLATFORM\fP
56+実プラットフォームを示す文字列。 \fBAT_PLATFORM\fP と異なる値の場合がある。 (PowerPC のみ)
57+.TP
58+\fBAT_CLKTCK\fP
59+\fBtimes\fP(2) のカウントが行われる周波数。 この値は \fIsysconf(_SC_CLK_TCK)\fP でも取得できる。
60+.TP
61+\fBAT_DCACHEBSIZE\fP
62+データキャッシュのブロックサイズ。
63+.TP
64+\fBAT_EGID\fP
65+このスレッドの実効グループ ID。
66+.TP
67+\fBAT_ENTRY\fP
68+実行ファイルのエントリーアドレス。
69+.TP
70+\fBAT_EUID\fP
71+このスレッドの実効ユーザー ID。
72+.TP
73+\fBAT_EXECFD\fP
74+プログラムのファイルディスクリプター。
75+.TP
76+\fBAT_EXECFN\fP
77+実行プログラムに使用されたパス名。
78+.TP
79+\fBAT_FLAGS\fP
80+フラグ (未使用)。
81+.TP
82+\fBAT_FPUCW\fP
83+使用された FPU 制御ワード (SuperH アーキテクチャーのみ)。 カーネルが実行した FPU 初期化に関する情報を提供するためのものである。
84+.TP
85+\fBAT_GID\fP
86+このスレッドの実グループ ID。
87+.TP
88+\fBAT_HWCAP\fP
89+プロセッサーの詳細な機能 (capabilities) を示す複数バイトからなるビットマスクへのポインターである。
90+このビットマスクの内容はハードウェア依存である (例えば、 Intel x86 アーキテクチャーに関する詳細はカーネルのソースファイル
91+\fIarch/x86/include/asm/cpufeature.h\fP を参照)。 同じ情報を人が読みやすい形になっているのが
92+\fI/proc/cpuinfo\fP である。
93+.TP
94+\fBAT_ICACHEBSIZE\fP
95+.\" .TP
96+.\" .BR AT_IGNORE
97+.\" .TP
98+.\" .BR AT_IGNOREPPC
99+.\" .TP
100+.\" .BR AT_NOTELF
101+命令キャッシュのブロックサイズ。
102+.TP
103+\fBAT_PAGESZ\fP
104+システムページサイズ (\fIsysconf(_SC_PAGESIZE)\fP が返す値と同じ)。
105+.TP
106+\fBAT_PHDR\fP
107+実行プログラムのプログラムヘッダーのアドレス。
108+.TP
109+\fBAT_PHENT\fP
110+プログラムヘッダーエントリーのサイズ。
111+.TP
112+\fBAT_PHNUM\fP
113+プログラムヘッダー数。
114+.TP
115+\fBAT_PLATFORM\fP
116+このプログラムが実行されているハードウェアプラットフォームを特定する文字列へのポインター。 動的リンカーは \fIrpath\fP
117+値の解釈を行う際にこの値を使用する。
118+.TP
119+\fBAT_RANDOM\fP
120+ランダム値が入った 16 バイトがあるアドレス。
121+.TP
122+\fBAT_SECURE\fP
123+この実行ファイルを安全に扱う必要がある場合に 0 以外の値になる。 一番よくある場合としては、 0 以外の値になるのは、 そのプロセスが
124+set\-user\-ID か set\-group\-ID されたプログラムを実行している場合である。 他の場合としては、 Linux Security
125+Module が有効になっている場合にも 0 以外の値となる。 この値が 0 以外の場合、 動的リンカーは特定の環境変数の使用を無効化し
126+(\fBld\-linux.so\fP(8) 参照)、 glibc はそのプロセスの動作を別の観点で変更する (\fBsecure_getenv\fP(3) 参照)。
127+.TP
128+\fBAT_SYSINFO\fP
129+vDSO のシステムコール関数へのエントリーポイント。すべてのアーキテクチャーで存在するわけではなく、 また必要というわけでもない (例えば
130+x86\-64 には存在しない)。
131+.TP
132+\fBAT_SYSINFO_EHDR\fP
133+仮想動的共有オブジェクト (vDSO; virtual Dynamic Shared Object) が入ったページのアドレス。 vDSO は、
134+特定のシステムコールの高速な実装を提供するためにカーネルが作成する共有オブジェクトである。
135+.TP
136+\fBAT_UCACHEBSIZE\fP
137+ユニファイド (unified) キャッシュのブロックサイズ。
138+.TP
139+\fBAT_UID\fP
140+このスレッドの実ユーザー ID。
141+.SH 返り値
142+成功すると、 \fBgetauxval\fP() は \fItype\fP に対応する値を返す。 \fItype\fP が見つからない場合には 0 を返す。
143+.SH エラー
144+.TP
145+\fBENOENT\fP (glibc 2.19 以降)
146+.\" commit b9ab448f980e296eac21ac65f53783967cc6037b
147+\fItype\fP に対応するエントリーが補助ベクトルになかった。
148+.SH バージョン
149+\fBgetauxval\fP() 関数は glibc バージョン 2.16 で追加された。
150+.SH 属性
151+.SS "マルチスレッディング (pthreads(7) 参照)"
152+関数 \fBgetauxval\fP() はスレッドセーフである。
153+.SH 準拠
154+この関数は非標準で glibc による拡張である。
155+.SH 注意
156+補助ベクトルの情報を主に使用するのは、 動的ローダー \fBld\-linux.so\fP(8) である。 補助ベクトルは、
157+カーネルが動的リンカーが通常もしくは常に必要とするある意味標準的な情報を伝えるための便利で効率的なショートカットである。 いくつかの場合では、
158+同じ情報がシステムコール経由でも取得できるが、 補助ベクトルを使う方がコストがかからない。
159+
160+補助ベクトルには、 単に、 プロセスのアドレス空間の引き数リストと環境上に存在するだけである。 プログラム実行時に \fBLD_SHOW_AUXV\fP
161+環境変数を設定すると、 プログラムに渡された補助ベクトルを表示することができる。
162+
163+ $ LD_SHOW_AUXV=1 sleep 1
164+
165+任意のプロセスの補助ベクトルは (ファイルのアクセス許可があれば) \fI/proc/PID/auxv\fP 経由で取得できる。 詳細は \fBproc\fP(5)
166+を参照。
167+.SH バグ
168+glibc 2.19 で \fBENOENT\fP エラーが追加される前は、 \fItype\fP が見つからなかった場合と \fItype\fP に対応する値が 0
169+だった場合を明確に区別する方法がなかった。
170+.SH 関連項目
171+\fBsecure_getenv\fP(3), \fBvdso\fP(7), \fBld\-linux.so\fP(8)
172+.SH この文書について
173+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
174+である。プロジェクトの説明とバグ報告に関する情報は
175+http://www.kernel.org/doc/man\-pages/ に書かれている。
--- /dev/null
+++ b/release/man3/mallinfo.3
@@ -0,0 +1,240 @@
1+.\" t
2+.\" Copyright (c) 2012 by Michael Kerrisk <mtk.manpages@gmail.com>
3+.\"
4+.\" %%%LICENSE_START(VERBATIM)
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. The author(s) may not
18+.\" have taken the same level of care in the production of this manual,
19+.\" which is licensed free of charge, as they might when working
20+.\" professionally.
21+.\"
22+.\" Formatted or processed versions of this manual, if unaccompanied by
23+.\" the source, must acknowledge the copyright and authors of this work.
24+.\" %%%LICENSE_END
25+.\"
26+.\"*******************************************************************
27+.\"
28+.\" This file was generated with po4a. Translate the source file.
29+.\"
30+.\"*******************************************************************
31+.TH MALLINFO 3 2012\-05\-06 Linux "Linux Programmer's Manual"
32+.SH 名前
33+mallinfo \- メモリー割り当て情報を取得する
34+.SH 書式
35+\fB#include <malloc.h>\fP
36+
37+\fBstruct mallinfo mallinfo(void);\fP
38+.SH 説明
39+\fBmallinfo\fP() 関数は、 \fBmalloc\fP(3) や一連の関数により実行されたメモリー
40+割り当てに関する情報を格納した構造体のコピーを返す。
41+この構造体は以下のように定義されている。
42+.PP
43+.in +4n
44+.nf
45+struct mallinfo {
46+ int arena; /* Non\-mmapped space allocated (bytes) */
47+ int ordblks; /* Number of free chunks */
48+ int smblks; /* Number of free fastbin blocks */
49+ int hblks; /* Number of mmapped regions */
50+ int hblkhd; /* Space allocated in mmapped regions (bytes) */
51+ int usmblks; /* Maximum total allocated space (bytes) */
52+ int fsmblks; /* Space in freed fastbin blocks (bytes) */
53+ int uordblks; /* Total allocated space (bytes) */
54+ int fordblks; /* Total free space (bytes) */
55+ int keepcost; /* Top\-most, releasable space (bytes) */
56+};
57+.fi
58+.in
59+.PP
60+\fImallinfo\fP 構造体の各フィールドには以下の情報が格納される。
61+.TP 10
62+\fIarena\fP
63+\fBmmap\fP(2) 以外の手段で割り当てられた総メモリー量 (例えばヒープに割り当てられたメモリー) 。
64+この数字には使用中のブロックやフリーリスト上のブロックも含まれる。
65+.TP
66+\fIordblks\fP
67+通常の (つまり fastbin ではない) 未使用ブロック数。
68+.TP
69+\fIsmblks\fP
70+fastbin 未使用ブロック数 (\fBmallopt\fP(3) 参照)。
71+.TP
72+\fIhblks\fP
73+\fBmmap\fP(2) を使って現在割り当てられているブロック数 (\fBmallopt\fP(3) の \fBM_MMAP_THRESHOLD\fP
74+の議論を参照)。
75+.TP
76+\fIhblkhd\fP
77+\fBmmap\fP(2) を使って現在割り当てられているブロックのバイト数。
78+.TP
79+\fIusmblks\fP
80+割り当てた空間の最高点 ("highwater mark")、 つまり、 これまでの中での最大の割り当て量。
81+このフィールドはスレッド化されていない環境でのみ収集される。
82+.TP
83+\fIfsmblks\fP
84+fastbin フリーブロックの総バイト数。
85+.TP
86+\fIuordblks\fP
87+使用中の割り当てメモリーで使われているバイト数。
88+.TP
89+\fIfordblks\fP
90+フリーブロックの総バイト数。
91+.TP
92+\fIkeepcost\fP
93+.\" .SH VERSIONS
94+.\" Available already in glibc 2.0, possibly earlier
95+ヒープの一番上にある解放可能な未使用の空間の大きさ。 この値は \fBmalloc_trim\fP(3) で理想的な場合に解放できる最大のバイト数である
96+(理想的というのは、 ページ境界の制限などを無視した場合である。
97+.SH 準拠
98+この関数は POSIX や C 標準では規定されていない。 多くの System V 由来のシステムに同様の関数が存在し、 SVID
99+では同様の関数が規定されていた。
100+.SH バグ
101+.\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=208
102+.\" See the 24 Aug 2011 mail by Paul Pluzhnikov:
103+.\" "[patch] Fix mallinfo() to accumulate results for all arenas"
104+.\" on libc-alpha@sourceware.org
105+\fBこれらの情報はメインのメモリー割り当て領域に対するもののみである。\fP 他の領域の割り当ては対象にならない。
106+他の領域の情報も取得できる別の手段については \fBmalloc_stats\fP(3) や \fBmalloc_info\fP(3) を参照。
107+
108+\fImallinfo\fP 構造体の各フィールドは \fIint\fP 型である。 しかし、 いくつかの内部管理用の値は \fIlong\fP 型の場合もあるので、
109+報告される値が一周してしまい、 不正確になる可能性がある。
110+.SH 例
111+以下のプログラムは \fBmallinfo\fP() を利用して、 メモリーブロックの割り当て、解放のそれぞれ前後でメモリー割り当ての統計情報を取得する。
112+統計情報は標準出力に表示される。
113+
114+最初の 2 つのコマンドライン引き数は \fBmalloc\fP(3) で割り当てるブロック数とサイズを指定する。
115+
116+残りの 3 つの引き数は、どの割り当てられたブロックを \fBfree\fP(3) で解放すべきかを指定する。 これらの 3 つの引き数の指定は任意で、
117+最初のものから順に以下の情報を指定する。 1 つ目の引き数は、 ブロックを解放するループで使用するステップサイズを指定する (デフォルト値は 1 で、
118+1 は指定した範囲のすべてのブロックを解放することを意味する)。 2 つ目の引き数は、 解放する先頭ブロックの場所番号を指定する (デフォルト値は 0
119+で、 0 は先頭の割り当て済みブロックを意味する)。 3 つ目の引き数は、 解放する最終ブロックの場所番号よりひとつ大きい値を指定する
120+(デフォルト値は最大ブロック番号よりもひとつ大きい値である)。 これらの 3 つの引き数が省略された場合、
121+デフォルトではすべての割り当てられたブロックが解放される。
122+
123+以下のプログラムの実行例では、 100 バイトの割り当てを 1000 回実行し、 割り当てたブロックの 2 つに 1 つを解放する。
124+.PP
125+.in +4n
126+.nf
127+$ \fB./a.out 1000 100 2\fP
128+============== Before allocating blocks ==============
129+Total non\-mmapped bytes (arena): 0
130+# of free chunks (ordblks): 1
131+# of free fastbin blocks (smblks): 0
132+# of mapped regions (hblks): 0
133+Bytes in mapped regions (hblkhd): 0
134+Max. total allocated space (usmblks): 0
135+Free bytes held in fastbins (fsmblks): 0
136+Total allocated space (uordblks): 0
137+Total free space (fordblks): 0
138+Topmost releasable block (keepcost): 0
139+
140+============== After allocating blocks ==============
141+Total non\-mmapped bytes (arena): 135168
142+# of free chunks (ordblks): 1
143+# of free fastbin blocks (smblks): 0
144+# of mapped regions (hblks): 0
145+Bytes in mapped regions (hblkhd): 0
146+Max. total allocated space (usmblks): 0
147+Free bytes held in fastbins (fsmblks): 0
148+Total allocated space (uordblks): 104000
149+Total free space (fordblks): 31168
150+Topmost releasable block (keepcost): 31168
151+
152+============== After freeing blocks ==============
153+Total non\-mmapped bytes (arena): 135168
154+# of free chunks (ordblks): 501
155+# of free fastbin blocks (smblks): 0
156+# of mapped regions (hblks): 0
157+Bytes in mapped regions (hblkhd): 0
158+Max. total allocated space (usmblks): 0
159+Free bytes held in fastbins (fsmblks): 0
160+Total allocated space (uordblks): 52000
161+Total free space (fordblks): 83168
162+Topmost releasable block (keepcost): 31168
163+.fi
164+.in
165+.SS プログラムのソース
166+\&
167+.nf
168+#include <malloc.h>
169+#include "tlpi_hdr.h"
170+
171+static void
172+display_mallinfo(void)
173+{
174+ struct mallinfo mi;
175+
176+ mi = mallinfo();
177+
178+ printf("Total non\-mmapped bytes (arena): %d\en", mi.arena);
179+ printf("# of free chunks (ordblks): %d\en", mi.ordblks);
180+ printf("# of free fastbin blocks (smblks): %d\en", mi.smblks);
181+ printf("# of mapped regions (hblks): %d\en", mi.hblks);
182+ printf("Bytes in mapped regions (hblkhd): %d\en", mi.hblkhd);
183+ printf("Max. total allocated space (usmblks): %d\en", mi.usmblks);
184+ printf("Free bytes held in fastbins (fsmblks): %d\en", mi.fsmblks);
185+ printf("Total allocated space (uordblks): %d\en", mi.uordblks);
186+ printf("Total free space (fordblks): %d\en", mi.fordblks);
187+ printf("Topmost releasable block (keepcost): %d\en", mi.keepcost);
188+}
189+
190+int
191+main(int argc, char *argv[])
192+{
193+#define MAX_ALLOCS 2000000
194+ char *alloc[MAX_ALLOCS];
195+ int numBlocks, j, freeBegin, freeEnd, freeStep;
196+ size_t blockSize;
197+
198+ if (argc < 3 || strcmp(argv[1], "\-\-help") == 0)
199+ usageErr("%s num\-blocks block\-size [free\-step [start\-free "
200+ "[end\-free]]]\en", argv[0]);
201+
202+ numBlocks = atoi(argv[1]);
203+ blockSize = atoi(argv[2]);
204+ freeStep = (argc > 3) ? atoi(argv[3]) : 1;
205+ freeBegin = (argc > 4) ? atoi(argv[4]) : 0;
206+ freeEnd = (argc > 5) ? atoi(argv[5]) : numBlocks;
207+
208+ printf("============== Before allocating blocks ==============\en");
209+ display_mallinfo();
210+
211+ for (j = 0; j < numBlocks; j++) {
212+ if (numBlocks >= MAX_ALLOCS)
213+ fatal("Too many allocations");
214+
215+ alloc[j] = malloc(blockSize);
216+ if (alloc[j] == NULL)
217+ errExit("malloc");
218+ }
219+
220+ printf("\en============== After allocating blocks ==============\en");
221+ display_mallinfo();
222+
223+ for (j = freeBegin; j < freeEnd; j += freeStep)
224+ free(alloc[j]);
225+
226+ printf("\en============== After freeing blocks ==============\en");
227+ display_mallinfo();
228+
229+ exit(EXIT_SUCCESS);
230+}
231+.fi
232+.SH 関連項目
233+.ad l
234+.nh
235+\fBmmap\fP(2), \fBmalloc\fP(3), \fBmalloc_info\fP(3), \fBmalloc_stats\fP(3),
236+\fBmalloc_trim\fP(3), \fBmallopt\fP(3)
237+.SH この文書について
238+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
239+である。プロジェクトの説明とバグ報告に関する情報は
240+http://www.kernel.org/doc/man\-pages/ に書かれている。
--- a/stats/ld
+++ b/stats/ld
@@ -1,3 +1,2 @@
11 # pagename,#complete,#remaining,#all
22 rtld-audit.7,71,60,131
3-sprof.1,46,25,71
--- a/stats/linux_module
+++ b/stats/linux_module
@@ -1,3 +0,0 @@
1-# pagename,#complete,#remaining,#all
2-delete_module.2,39,21,60
3-init_module.2,47,32,79
--- a/stats/memory
+++ b/stats/memory
@@ -1,5 +1,4 @@
11 # pagename,#complete,#remaining,#all
2-mallinfo.3,48,17,65
32 mallopt.3,60,50,110
43 mcheck.3,29,25,54
54 mtrace.3,26,11,37
--- a/stats/stdlib
+++ b/stats/stdlib
@@ -1,3 +1,2 @@
11 # pagename,#complete,#remaining,#all
2-getauxval.3,52,34,86
32 vdso.7,176,8,184
--- a/translation_list
+++ b/translation_list
@@ -8,7 +8,7 @@
88 ○:LDP man-pages:3.78:2014/09/06:memusagestat:1:2015/01/24::amotoki@gmail.com:Akihiro Motoki:
99 ○:LDP man-pages:3.78:2014/09/01:mtrace:1:2015/01/24::amotoki@gmail.com:Akihiro Motoki:
1010 ○:LDP man-pages:3.78:2014/09/27:pldd:1:2015/01/24::amotoki@gmail.com:Akihiro Motoki:
11-×:LDP man-pages:3.78:2014/06/24:sprof:1:::::
11+○:LDP man-pages:3.78:2014/06/24:sprof:1:2015/01/31::amotoki@gmail.com:Akihiro Motoki:
1212 ○:LDP man-pages:3.78:2008/11/14:time:1:2015/01/24::amotoki@gmail.com:Akihiro Motoki:
1313 @:LDP man-pages:3.78:2015/01/22:_Exit:2:_exit:2:
1414 @:LDP man-pages:3.78:2014/09/21:__clone2:2:clone:2:
@@ -52,7 +52,7 @@
5252 ○:LDP man-pages:3.78:2014/09/06:connect:2:2015/01/24::amotoki@gmail.com:Akihiro Motoki:
5353 @:LDP man-pages:3.78:2015/01/22:creat:2:open:2:
5454 ○:LDP man-pages:3.78:2014/05/10:create_module:2:2015/01/24::amotoki@gmail.com:Akihiro Motoki:
55-×:LDP man-pages:3.78:2014/05/10:delete_module:2:::::
55+○:LDP man-pages:3.78:2014/05/10:delete_module:2:2015/01/31::amotoki@gmail.com:Akihiro Motoki:
5656 ○:LDP man-pages:3.78:2015/01/22:dup:2:2015/01/24::amotoki@gmail.com:Akihiro Motoki:
5757 @:LDP man-pages:3.78:2015/01/22:dup2:2:dup:2:
5858 @:LDP man-pages:3.78:2015/01/22:dup3:2:dup:2:
@@ -85,7 +85,7 @@
8585 @:LDP man-pages:3.78:2014/08/19:fdatasync:2:fsync:2:
8686 @:LDP man-pages:3.78:2013/02/12:fdetach:2:unimplemented:2:
8787 @:LDP man-pages:3.78:2014/04/06:fgetxattr:2:getxattr:2:
88-※:LDP man-pages:3.78:2014/05/10:finit_module:2:init_module:2:
88+@:LDP man-pages:3.78:2014/05/10:finit_module:2:init_module:2:
8989 @:LDP man-pages:3.78:2014/02/06:flistxattr:2:listxattr:2:
9090 ○:LDP man-pages:3.78:2014/09/21:flock:2:2015/01/24::amotoki@gmail.com:Akihiro Motoki:
9191 ○:LDP man-pages:3.78:2014/05/28:fork:2:2015/01/24::amotoki@gmail.com:Akihiro Motoki:
@@ -154,7 +154,7 @@
154154 ○:LDP man-pages:3.78:2012/12/31:idle:2:2015/01/24::argrath@yo.rim.or.jp:Kentaro Shirakata:
155155 @:LDP man-pages:3.78:2012/12/31:inb:2:outb:2:
156156 @:LDP man-pages:3.78:2012/12/31:inb_p:2:outb:2:
157-×:LDP man-pages:3.78:2014/05/10:init_module:2:::::
157+○:LDP man-pages:3.78:2014/05/10:init_module:2:2015/01/31::amotoki@gmail.com:Akihiro Motoki:
158158 @:LDP man-pages:3.78:2012/12/31:inl:2:outb:2:
159159 @:LDP man-pages:3.78:2012/12/31:inl_p:2:outb:2:
160160 ○:LDP man-pages:3.78:2014/07/08:inotify_add_watch:2:2015/01/24::amotoki@gmail.com:Akihiro Motoki:
@@ -1029,7 +1029,7 @@
10291029 @:LDP man-pages:3.78:2003/09/09:getaliasbyname_r:3:setaliasent:3:
10301030 @:LDP man-pages:3.78:2003/09/09:getaliasent:3:setaliasent:3:
10311031 @:LDP man-pages:3.78:2003/09/09:getaliasent_r:3:setaliasent:3:
1032-×:LDP man-pages:3.78:2014/08/19:getauxval:3:::::
1032+○:LDP man-pages:3.78:2014/08/19:getauxval:3:2015/01/31::amotoki@gmail.com:Akihiro Motoki:
10331033 @:LDP man-pages:3.78:2013/12/31:getc:3:fgetc:3:
10341034 @:LDP man-pages:3.78:2008/08/29:getc_unlocked:3:unlocked_stdio:3:
10351035 @:LDP man-pages:3.78:2013/12/31:getchar:3:fgetc:3:
@@ -1343,7 +1343,7 @@
13431343 @:LDP man-pages:3.78:2014/05/28:major:3:makedev:3:
13441344 ○:LDP man-pages:3.78:2014/05/28:makecontext:3:2015/01/24::amotoki@gmail.com:Akihiro Motoki:
13451345 ○:LDP man-pages:3.78:2014/05/28:makedev:3:2015/01/24::amotoki@gmail.com:Akihiro Motoki:
1346-×:LDP man-pages:3.78:2012/05/06:mallinfo:3:::::
1346+○:LDP man-pages:3.78:2012/05/06:mallinfo:3:2015/01/31::amotoki@gmail.com:Akihiro Motoki:
13471347 ○:LDP man-pages:3.78:2014/05/21:malloc:3:2015/01/24::amotoki@gmail.com:Akihiro Motoki:
13481348 ○:LDP man-pages:3.78:2014/06/13:malloc_get_state:3:2015/01/27::amotoki@gmail.com:Akihiro Motoki:
13491349 ○:LDP man-pages:3.78:2010/10/13:malloc_hook:3:2015/01/24::amotoki@gmail.com:Akihiro Motoki:
--- a/untrans.html
+++ b/untrans.html
@@ -22,10 +22,6 @@
2222 <TR><TD>request_key.2</TD><TD>24/53</TD><TD>54.72</TD></TR>
2323 <TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>ld</B></TD></TR>
2424 <TR><TD>rtld-audit.7</TD><TD>60/131</TD><TD>54.20</TD></TR>
25-<TR><TD>sprof.1</TD><TD>25/71</TD><TD>64.79</TD></TR>
26-<TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>linux_module</B></TD></TR>
27-<TR><TD>delete_module.2</TD><TD>21/60</TD><TD>65.00</TD></TR>
28-<TR><TD>init_module.2</TD><TD>32/79</TD><TD>59.49</TD></TR>
2925 <TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>locale</B></TD></TR>
3026 <TR><TD>localedef.1</TD><TD>49/125</TD><TD>60.80</TD></TR>
3127 <TR class="over70"><TD>newlocale.3</TD><TD>24/89</TD><TD>73.03</TD></TR>
@@ -36,7 +32,6 @@
3632 <TR><TD>ptrace.2</TD><TD>166/296</TD><TD>43.92</TD></TR>
3733 <TR><TD>quotactl.2</TD><TD>47/102</TD><TD>53.92</TD></TR>
3834 <TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>memory</B></TD></TR>
39-<TR class="over70"><TD>mallinfo.3</TD><TD>17/65</TD><TD>73.85</TD></TR>
4035 <TR><TD>mallopt.3</TD><TD>50/110</TD><TD>54.55</TD></TR>
4136 <TR><TD>mcheck.3</TD><TD>25/54</TD><TD>53.70</TD></TR>
4237 <TR class="over70"><TD>mtrace.3</TD><TD>11/37</TD><TD>70.27</TD></TR>
@@ -56,8 +51,7 @@
5651 <TR><TD>cpuid.4</TD><TD>13/24</TD><TD>45.83</TD></TR>
5752 <TR><TD>hpsa.4</TD><TD>23/57</TD><TD>59.65</TD></TR>
5853 <TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>stdlib</B></TD></TR>
59-<TR><TD>getauxval.3</TD><TD>34/86</TD><TD>60.47</TD></TR>
6054 <TR class="over80"><TD>vdso.7</TD><TD>8/184</TD><TD>95.65</TD></TR>
61-<TR><TD COLSPAN=3>Total 34 pages</TD></TR>
55+<TR><TD COLSPAN=3>Total 29 pages</TD></TR>
6256 </TABLE>
6357 </BODY></HTML>
Show on old repository browser