--- /dev/null
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (C) Tom Bjorkholm, Markus Kuhn & David A. Wheeler 1996-1999
+.\" and Copyright (C) 2007 Carsten Emde <Carsten.Emde@osadl.org>
+.\" and Copyright (C) 2008 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" 1996-04-01 Tom Bjorkholm <tomb@mydata.se>
+.\" First version written
+.\" 1996-04-10 Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
+.\" revision
+.\" 1999-08-18 David A. Wheeler <dwheeler@ida.org> added Note.
+.\" Modified, 25 Jun 2002, Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Corrected description of queue placement by sched_setparam() and
+.\" sched_setscheduler()
+.\" A couple of grammar clean-ups
+.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" 2005-03-23, mtk, Added description of SCHED_BATCH.
+.\" 2007-07-10, Carsten Emde <Carsten.Emde@osadl.org>
+.\" Add text on real-time features that are currently being
+.\" added to the mainline kernel.
+.\" 2008-05-07, mtk; Rewrote and restructured various parts of the page to
+.\" improve readability.
+.\" 2010-06-19, mtk, documented SCHED_RESET_ON_FORK
+.\"
+.\" Worth looking at: http://rt.wiki.kernel.org/index.php
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SCHED_SETSCHEDULER 2 2011\-09\-19 Linux "Linux Programmer's Manual"
+.SH 名前
+sched_setscheduler, sched_getscheduler \- スケジューリング・ポリシーとパラメータを設定/取得する
+.SH 書式
+.nf
+\fB#include <sched.h>\fP
+.sp
+\fBint sched_setscheduler(pid_t \fP\fIpid\fP\fB, int \fP\fIpolicy\fP\fB,\fP
+.br
+\fB const struct sched_param *\fP\fIparam\fP\fB);\fP
+.sp
+\fBint sched_getscheduler(pid_t \fP\fIpid\fP\fB);\fP
+.sp
+\fBstruct sched_param {
+ ...
+ int \fP\fIsched_priority\fP\fB;
+ ...
+};\fP
+.fi
+.SH 説明
+\fBsched_setscheduler\fP() は \fIpid\fP で指定された ID を持つプロセスのスケジューリング・ポリシーや
+それに関連するパラメータを設定する。\fIpid\fP が 0 の場合は 呼び出したプロセスのスケジューリング・ポリシーとパラメータが設定される。 引き数
+\fIparam\fP の解釈は選択されたポリシーによる。 現在のところ、Linux では 以下に示す「通常」(リアルタイムでない)
+スケジューリング・ポリシーが サポートされている。
+.TP 14
+\fBSCHED_OTHER\fP
+.\" In the 2.6 kernel sources, SCHED_OTHER is actually called
+.\" SCHED_NORMAL.
+標準の、ラウンドロビンによる時分割型のスケジューリング・ポリシー。
+.TP
+\fBSCHED_BATCH\fP
+「バッチ」形式でのプロセスの実行用。
+.TP
+\fBSCHED_IDLE\fP
+「非常に」低い優先度で動作するバックグラウンド・ジョブ用。
+.PP
+どの実行可能プロセスを選択するかについて、より正確な制御を必要とする 時間の制約が厳しい特別なアプリケーション用として、
+以下の「リアルタイム」ポリシーもサポートされている。
+.TP 14
+\fBSCHED_FIFO\fP
+ファーストイン、ファーストアウト型のポリシー。
+.TP
+\fBSCHED_RR\fP
+ラウンドロビン型のポリシー。
+.PP
+これらのポリシーのそれぞれの動作については以下で説明する。
+
+.\"
+\fBsched_getscheduler\fP() は \fIpid\fP で識別されるプロセスに現在適用されている
+スケジューリング・ポリシーを尋ねる。\fIpid\fP が 0 ならば、呼び出した プロセス自身のスケジューリング・ポリシーが返される。
+.SS "スケジューリング・ポリシー (scheduling policy)"
+スケジューラ (scheduler) とはカーネルの構成要素で、 次に CPU で実行される実行可能なプロセスを決定するものである。
+各々のプロセスには、スケジューリング・ポリシーと 「静的」なスケジューリング優先度 \fIsched_priority\fP が対応付けられ、 これらの設定は
+\fBsched_setscheduler\fP() で変更できる。 スケジューラは、システム上の全プロセスのスケジューリング・ポリシーと
+静的優先度に関する知識に基づいて決定を行う。
+
+通常のスケジューリング・ポリシー (\fBSCHED_OTHER\fP, \fBSCHED_IDLE\fP, \fBSCHED_BATCH\fP)
+の下でスケジューリングされるプロセスでは、 \fIsched_priority\fP はスケジューリングの決定に使用されない
+(\fIsched_priority\fP には 0 を指定しなければならない)。
+
+リアルタイム・スケジューリング・ポリシー (\fBSCHED_FIFO\fP, \fBSCHED_RR\fP) の下でスケジューリングされるプロセスは、
+\fIsched_priority\fP の値は 1 (最低) から 99 (最高) の範囲となる
+(数字から分かるように、リアルタイム・プロセスは常に通常のプロセスよりも 高い優先度を持つ)。 ここで注意すべきなのは、POSIX.1\-2001
+が要求しているのは、 リアルタイム・ポリシーの実装において最低 32 種類の異なる優先度レベルが
+サポートされることだけであり、いくつかのシステムではこの最低限の数の 優先度しか提供されていない、ということである。 移植性が必要なプログラムでは、
+\fBsched_get_priority_min\fP(2) と \fBsched_get_priority_max\fP(2)
+を使って、あるポリシーがサポートする優先度の範囲を調べるべきである。
+
+概念としては、 スケジューラはその \fIsched_priority\fP の値それぞれに対して 実行可能なプロセスのリストを管理している。
+どのプロセスを次に実行するかを決定するために、 スケジューラは静的優先度の最も高い空でないリストを探して、 そのリストの先頭のプロセスを選択する。
+
+各プロセスのスケジューリング・ポリシーは、 そのプロセスが同じ静的優先度を持つプロセスのリストの中のどこに挿入され、
+このリストの中をどのように移動するかを決定する。
+
+全てのスケジューリングはプリエンプティブ (preemptive) である: より高い優先度のプロセスが実行可能になると、現在実行中のプロセスは実行権を
+取り上げられ (preempted)、そのプロセスの静的優先度レベルの待ちリストに 戻される。スケジューリング・ポリシーは同じ静的優先度を持つ実行可能な
+プロセスのリストの中で順番のみを決定する。
+.SS "SCHED_FIFO: ファーストイン・ファーストアウト・スケジューリング"
+\fBSCHED_FIFO\fP は 0 より大きな静的優先度でのみ使用できる。このポリシーでは、 \fBSCHED_FIFO\fP
+プロセスが実行可能になった場合、 そのポリシーが \fBSCHED_OTHER\fP、 \fBSCHED_BATCH\fP、 \fBSCHED_IDLE\fP の
+現在実行中のプロセスは直ちに実行権を取り上げられる。 \fBSCHED_FIFO\fP は時分割のない単純なスケジューリング・アルゴリズムである。
+\fBSCHED_FIFO\fP ポリシーでスケジューリングされているプロセスには以下の ルールが適用される:
+.IP * 3
+より高い優先度の他のプロセスによって取って代わられた \fBSCHED_FIFO\fP プロセスはその優先度のリストの先頭に留まり続け、
+より高い優先度のプロセス全てが停止 (block) した場合に実行を再開する。
+.IP *
+\fBSCHED_FIFO\fP プロセスが実行可能になった時、その優先度のリストの最後 に挿入される。
+.IP *
+.\" In 2.2.x and 2.4.x, the process is placed at the front of the queue
+.\" In 2.0.x, the Right Thing happened: the process went to the back -- MTK
+\fBsched_setscheduler\fP() や \fBsched_setparam\fP(2) は \fIpid\fP で指定された
+\fBSCHED_FIFO\fP (または \fBSCHED_RR\fP) プロセスが 実行可能な場合、リストの最初に置く。
+結果として、もし優先度が同じだった場合、 現在実行中のプロセスに先んじるかもしれない。 (POSIX.1\-2001
+ではプロセスはリストの最後に行くべきと規定されている。)
+.IP *
+\fBsched_yield\fP(2) を呼び出したプロセスはリストの最後に置かれる。
+.PP
+その他のイベントによって \fBSCHED_FIFO\fP ポリシーで スケジューリングされるプロセスが同じ優先度の実行可能な
+プロセスの待ちリストの中を移動することはない。
+
+\fBSCHED_FIFO\fP プロセスは I/O 要求によって停止するか、 より高い優先度のプロセスによって置きかえられるか、
+\fBsched_yield\fP(2) を呼び出すまで実行を続ける。
+.SS "SCHED_RR: ラウンドロビン (round robin) ・スケジューリング"
+.\" On Linux 2.4, the length of the RR interval is influenced
+.\" by the process nice value -- MTK
+.\"
+\fBSCHED_RR\fP は \fBSCHED_FIFO\fP の単純な拡張である。 上述された
+\fBSCHED_FIFO\fP に関する記述は全て \fBSCHED_RR\fP に 適用できる。異なるのは
+それぞれのプロセスは最大時間単位までしか実行できない ということである。
+\fBSCHED_RR\fP プロセスが時間単位と同じかそれより 長い時間実行されると、
+その優先度のリストの最後に置かれる。 より高い優先度のプロセスによって
+置きかえられ、その後実行を再開した \fBSCHED_RR\fP プロセスは、そのラウンド
+ロビン時間単位を完全に使い切る まで実行される。その時間単位の長さは
+\fBsched_rr_get_interval\fP(2) を使って取得できる。
+.SS "SCHED_OTHER: Linux のデフォルトの時分割スケジューリング"
+.\"
+\fBSCHED_OTHER\fP は静的優先度 0 でのみ使用できる。 \fBSCHED_OTHER\fP は Linux 標準の時分割スケジューラで、
+特別なリアルタイム機構を必要としていない全てのプロセスで使用される。 実行するプロセスは、静的優先度 0 のリストから、このリストの中だけで
+決定される「動的な」優先度 (dynamic priority) に基いて決定される。 動的な優先度は (\fBnice\fP(2) や
+\fBsetpriority\fP(2) により設定される) nice 値に基づいて決定されるもので、
+単位時間毎に、プロセスが実行可能だが、スケジューラにより実行が拒否された 場合にインクリメントされる。 これにより、全ての \fBSCHED_OTHER\fP
+プロセスでの公平性が保証される。
+.SS "SCHED_BATCH: バッチプロセスのスケジューリング"
+(Linux 2.6.16 以降) \fBSCHED_BATCH\fP は静的優先度 0 でのみ使用できる。 このポリシーは (nice 値に基づく)
+動的な優先度にしたがってプロセスの スケジューリングが行われるという点で、\fBSCHED_OTHER\fP に似ている。
+異なるのは、このポリシーでは、プロセスが常に CPU に負荷のかかる (CPU\-intensive) 処理を行うと、スケジューラが仮定する点である。
+スケジューラはプロセスを呼び起こす毎にそのプロセスにスケジューリング上の ペナルティを少し課し、その結果、このプロセスはスケジューリングの決定で
+若干冷遇されるようになる。
+
+.\" The following paragraph is drawn largely from the text that
+.\" accompanied Ingo Molnar's patch for the implementation of
+.\" SCHED_BATCH.
+.\"
+このポリシーは、非対話的な処理だがその nice 値を下げたくない処理や、 (処理のタスク間で) 余計なタスクの置き換えの原因とある対話的な処理なしで
+確定的な (deterministic) スケジューリング・ポリシーを適用したい処理に 対して有効である。
+.SS "SCHED_IDLE: 非常に優先度の低いジョブのスケジューリング"
+(Linux 2.6.23 以降) \fBSCHED_IDLE\fP は静的優先度 0 でのみ使用できる。 このポリシーではプロセスの nice
+値はスケジューリングに影響を与えない。
+
+.\"
+非常に低い優先度でのジョブの実行を目的としたものである (非常に低い優先度とは、ポリシー \fBSCHED_OTHER\fP か \fBSCHED_BATCH\fP
+での nice 値 +19 よりさらに低い優先度である)。
+.SS 子プロセスでのスケジューリング・ポリシーのリセット
+Linux 2.6.32 以降では、 \fBsched_setscheduler\fP() を呼び出す際に \fIpolicy\fP に
+\fBSCHED_RESET_ON_FORK\fP フラグを OR で指定できる。このフラグが指定されると、 \fBfork\fP(2)
+で作成された子プロセスは特権が必要なスケジューリング・ポリシーを継承しない。この機能はメディア再生を行うアプリケーションを想定して作られ、この機能を使うことで、アプリケーションが複数の子プロセスを作成することで
+\fBRLIMIT_RTTIME\fP リソース上限 (\fBgetrlimit\fP(2) 参照) を回避するのを防ぐことができる。
+
+より正確には、 \fBSCHED_RESET_ON_FORK\fP フラグが指定された場合、それ以降に作成される子プロセスに以下のルールが適用される。
+.IP * 3
+呼び出したプロセスのスケジューリング・ポリシーが \fBSCHED_FIFO\fP か \fBSCHED_RR\fP の場合、子プロセスのポリシーは
+\fBSCHED_OTHER\fP にリセットされる。
+.IP *
+子プロセスが負の nice 値を持っている場合、子プロセスの nice 値は 0 にリセットされる。
+.PP
+一度 \fBSCHED_RESET_ON_FORK\fP フラグが有効にされた後は、このフラグをリセットできるのは、プロセスが \fBCAP_SYS_NICE\fP
+ケーパビリティを持つ場合だけである。このフラグは \fBfork\fP(2) で作成された子プロセスでは無効になる。
+
+.\"
+\fBSCHED_RESET_ON_FORK\fP フラグは、 \fBsched_getscheduler\fP() が返すポリシー値で参照できる。
+.SS 特権とリソース制限
+2.6.12 より前のバージョンの Linux カーネルでは、 特権プロセス (\fBCAP_SYS_NICE\fP ケーパビリティを持つプロセス) だけが
+0 以外の静的優先度を設定する (すなわち、リアルタイム・スケジューリング・ポリシーを設定する) ことができる。 非特権プロセスができる変更は
+\fBSCHED_OTHER\fP ポリシーを設定することだけであり、さらにこの変更を行えるのは \fBsched_setscheduler\fP()
+の呼び出し元の実効ユーザ ID がポリシーの変更対象プロセス (\fIpid\fP で指定されたプロセス) の実ユーザ ID か実効ユーザ ID と
+一致する場合だけである。
+
+Linux 2.6.12 以降では、リソース制限 \fBRLIMIT_RTPRIO\fP が定義されており、 スケジューリング・ポリシーが
+\fBSCHED_RR\fP と \fBSCHED_FIFO\fP の場合の、非特権プロセスの静的優先度の上限を定めている。
+スケジューリング・ポリシーと優先度を変更する際のルールは以下の通りである。
+.IP * 3
+非特権プロセスに 0 以外の \fBRLIMIT_RTPRIO\fP ソフト・リミットが設定されている場合、
+非特権プロセスはそのプロセスのスケジューリング・ポリシーと優先度を 変更できるが、優先度を現在の自身の優先度と \fBRLIMIT_RTPRIO\fP
+ソフト・リミットの大きい方よりも高い値に設定できないという制限が課される。
+.IP *
+\fBRLIMIT_RTPRIO\fP ソフト・リミットが 0 の場合、優先度を下げるか、 リアルタイムでないポリシーへ切り替えるかの変更だけが許可される。
+.IP *
+ある非特権プロセスが別のプロセスに対してこれらの変更を行う際にも、 同じルールが適用される。変更を行えるのは、変更を行おうとするプロセス の実効ユーザ
+ID が変更対象のプロセスの実ユーザ ID か実効ユーザ ID と 一致している場合に限られる。
+.IP *
+.\" commit c02aa73b1d18e43cfd79c2f193b225e84ca497c8
+\fBSCHED_IDLE\fP の場合には特別なルールが適用される。 2.6.39 より前の Linux
+カーネルでは、このポリシーで動作する非特権プロセスは、 \fBRLIMIT_RTPRIO\fP
+リソース上限の値に関わらず、自分のポリシーを変更することができない。 2.6.39 以降の Linux カーネルでは、非特権プロセスは、自分の nice
+値が \fBRLIMIT_NICE\fP リソース上限 (\fBgetrlimit\fP(2) 参照)
+で許可された範囲である限りは、自分のスケジューリング・ポリシーを \fBSCHED_BATCH\fP か \fBSCHED_NORMAL\fP
+ポリシーに切り替えることができる。
+.PP
+特権プロセス (\fBCAP_SYS_NICE\fP ケーパビリティを持つプロセス) の場合、 \fBRLIMIT_RTPRIO\fP の制限は無視される;
+古いカーネルと同じように、スケジューリング・ポリシーと優先度に対し 任意の変更を行うことができる。 \fBRLIMIT_RTPRIO\fP
+に関するもっと詳しい情報は \fBgetrlimit\fP(2) を参照のこと。
+.SS "応答時間 (response time)"
+.\" as described in
+.\" .BR request_irq (9).
+I/O 待ちで停止したより高い優先度のプロセスは再びスケジューリングされる 前にいくらかの応答時間がかかる。デバイス・ドライバーを書く場合には
+"slow interrupt" 割り込みハンドラーを使用することで この応答時間を劇的に減少させることができる。
+.SS その他
+子プロセスは \fBfork\fP(2) の際に親プロセスのスケジューリング・ポリシーとパラメータを継承する。 \fBexecve\fP(2)
+の前後で、スケジューリング・ポリシーとパラメータは保持される。
+
+リアルタイム・プロセスは大抵、ページングの待ち時間を避けるために \fBmlock\fP(2) や \fBmlockall\fP(2)
+を使ってメモリ・ロックをしなければならない。
+
+\fBSCHED_FIFO\fP や \fBSCHED_RR\fP でスケジューリングされる プロセスが停止せずに無限ループに陥ると、
+他の全てのより低い優先度のプロセスを永久に停止 (block) させてしまうので、 ソフトウェア開発者はコンソールのシェルの静的優先度をテストする
+アプリケーションよりも常に高く保つべきである。 これによって期待通りに停止したり終了したりしないリアルタイム・
+アプリケーションを緊急終了させることが可能になる。 \fBgetrlimit\fP(2) のリソース制限 \fBRLIMIT_RTTIME\fP
+の説明も参照のこと。
+
+POSIX システムでは \fI<unistd.h>\fP に \fB_POSIX_PRIORITY_SCHEDULING\fP
+が定義されている場合にのみ \fBsched_setscheduler\fP() と \fBsched_getscheduler\fP() が使用できる。
+.SH 返り値
+成功した場合、 \fBsched_setscheduler\fP() は 0 を返す。 成功した場合、 \fBsched_getscheduler\fP()
+は現在のそのプロセスのポリシー (非負の整数) を返す。 エラーの場合、\-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP
+\fBEINVAL\fP
+スケジューリング・ポリシー \fIpolicy\fP が間違っている。
+または \fIparam\fP が NULL である。
+または \fIparam\fP がそのポリシーでは意味をなさない。
+.TP
+\fBEPERM\fP
+呼び出したプロセスが適切な特権を持っていない。
+.TP
+\fBESRCH\fP
+プロセス ID \fIpid\fP のプロセスが見つからなかった。
+.SH 準拠
+POSIX.1\-2001 (但し、下記のバグの節も参照)。 \fBSCHED_BATCH\fP と \fBSCHED_IDLE\fP ポリシーは Linux
+固有である。
+.SH 注意
+POSIX.1 は、非特権プロセスが \fBsched_setscheduler\fP() を呼び出すために必要な権限の詳細を規定しておらず、
+詳細はシステムにより異なる。 例えば、Solaris 7 のマニュアルページでは、 呼び出し元プロセスの実ユーザ ID または実効ユーザ ID が
+設定対象のプロセスの実ユーザ ID か保存 (save) set\-user\-ID と 一致していなければならない、となっている。
+.PP
+もともとは、標準の Linux は一般目的のオペレーティングシステムとして 設計されており、バックグラウンド・プロセスや対話的アプリケーション、
+リアルタイム性の要求が厳しくないリアルタイム・アプリケーション (普通はタイミングの応答期限 (deadline) を満たす必要があるアプリケーション)
+を扱うことができた。 Linux カーネル 2.6 では、 カーネルのプリエンプション (タスクの置き換え) が可能であり、 新たに導入された O(1)
+スケジューラにより、 アクティブなタスクの数に関わらずスケジューリングに必要な時間は 固定で確定的 (deterministic)
+であることが保証されている。 それにも関わらず、カーネル 2.6.17 までは 真のリアルタイム・コンピューティングは実現できなかった。
+.SS "本流の Linux カーネルでのリアルタイム機能"
+.\" FIXME . Probably this text will need some minor tweaking
+.\" by about the time of 2.6.30; ask Carsten Emde about this then.
+カーネル 2.6.18 から現在まで、 Linux は徐々にリアルタイム機能を備えつつ
+あるが、 これらの機能のほとんどは、 Ingo Molnar, Thomas Gleixner,
+Steven Rostedt らによって開発された、 以前の \fIrealtime\-preempt\fP パッチ
+からのものである。 これらのパッチが本流のカーネルに完全にマージされるま
+では (マージの完了はカーネル 2.6.30 あたりの予定)、 最高のリアルタイム
+性能を達成するには realtime\-preempt パッチを 組み込まなければならない。
+これらのパッチは
+.in +4n
+.nf
+
+patch\-\fIkernelversion\fP\-rt\fIpatchversion\fP
+.fi
+.in
+.PP
+という名前で、 \fIhttp://www.kernel.org/pub/linux/kernel/projects/rt/\fP からダウンロードできる。
+
+このパッチが適用されず、かつパッチの内容の本流のカーネルへのマージが 完了するまでは、カーネルの設定では \fBCONFIG_PREEMPT_NONE\fP,
+\fBCONFIG_PREEMPT_VOLUNTARY\fP, \fBCONFIG_PREEMPT_DESKTOP\fP の 3つのプリエンプション・クラス
+(preemption class) だけが提供される。 これらのクラスでは、最悪の場合のスケジューリング遅延がそれぞれ
+全く減らない、いくらか減る、かなり減る。
+
+パッチが適用された場合、またはパッチの内容の本流のカーネルへのマージが 完了した後では、上記に加えて設定項目として
+\fBCONFIG_PREEMPT_RT\fP が利用可能になる。この項目を選択すると、 Linux
+は通常のリアルタイム・オペレーティングシステムに変身する。 この場合には、 \fBsched_setscheduler\fP() で選択できる FIFO と
+RR のスケジューリング・ポリシーは、 真のリアルタイム優先度を持つプロセスを最悪の場合のスケジューリング遅延が
+最小となる環境で動作させるために使われることになる。
+.SH バグ
+POSIX では、成功時に \fBsched_setscheduler\fP() は直前のスケジューリング・ポリシーを返すべきとされている。 Linux の
+\fBsched_setscheduler\fP() はこの要求仕様に準拠しておらず、 成功時には常に 0 を返す。
+.SH 関連項目
+\fBgetpriority\fP(2), \fBmlock\fP(2), \fBmlockall\fP(2), \fBmunlock\fP(2),
+\fBmunlockall\fP(2), \fBnice\fP(2), \fBsched_get_priority_max\fP(2),
+\fBsched_get_priority_min\fP(2), \fBsched_getaffinity\fP(2), \fBsched_getparam\fP(2),
+\fBsched_rr_get_interval\fP(2), \fBsched_setaffinity\fP(2), \fBsched_setparam\fP(2),
+\fBsched_yield\fP(2), \fBsetpriority\fP(2), \fBcapabilities\fP(7), \fBcpuset\fP(7)
+.PP
+\fIProgramming for the real world \- POSIX.4\fP by Bill O. Gallmeister, O'Reilly
+& Associates, Inc., ISBN 1\-56592\-074\-0
+.PP
+カーネル・ソース内のファイル \fIDocumentation/scheduler/sched\-rt\-group.txt\fP (カーネル 2.6.25
+以降)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.41 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
--- /dev/null
+.\" Copyright (C) 2011, Eric Biederman <ebiederm@xmission.com>
+.\" Licensed under the GPLv2
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SETNS 2 2012\-05\-04 Linux "Linux Programmer's Manual"
+.SH 名前
+setns \- スレッドに名前空間を関連付けしなおす
+.SH 書式
+.nf
+\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */
+\fB#include <sched.h>\fP
+.sp
+\fBint setns(int \fP\fIfd\fP\fB, int \fP\fInstype\fP\fB);\fP
+.fi
+.SH 説明
+名前空間を参照するファイルディスクリプタを指定すると、
+呼び出したスレッドにその名前空間を関連付けしなおす。
+
+\fIfd\fP 引き数は、 \fI/proc/[pid]/ns/\fP ディレクトリ内の名前空間エントリ
+のいずれかを参照するファイルディスクリプタである。
+\fI/proc/[pid]/ns/\fP の詳細は \fBproc\fP(5) を参照。
+\fInstype\fP 引き数で指定された制限の範囲内で、
+呼び出したスレッドに \fIfd\fP に対応する名前空間を関連付けしなおす。
+
+\fInstype\fP 引き数は、呼び出したスレッドがどのタイプの名前空間を
+関連付けしなおすことができるかを指定する。
+この引き数には以下のいずれかの値を指定できる。
+.TP
+\fB0\fP
+どのタイプの名前空間も関連付けることができる。
+.TP
+\fBCLONE_NEWIPC\fP
+\fIfd\fP は IPC 名前空間を参照していなければならない。
+.TP
+\fBCLONE_NEWNET\fP
+\fIfd\fP はネットワーク名前空間を参照していなければならない。
+.TP
+\fBCLONE_NEWUTS\fP
+\fIfd\fP は UTS 名前空間を参照していなければならない。
+.PP
+呼び出し側が \fIfd\fP がどのタイプの名前空間を参照しているかを知っている
+(もしくは気にする必要がない) 場合には、 \fInstype\fP に 0 を指定すれば十分
+である。呼び出し側が \fIfd\fP がどのタイプの名前空間を参照しているかを
+知っておらず、かつ、特定のタイプの名前空間であることを保証したい場合、
+\fInstype\fP に 0 以外の値を指定するとよい。 (ファイルディスクリプタが別の
+プロセスによりオープンされ、例えば、UNIX ドメインソケット経由で呼び出し
+側に渡された場合などでは、呼び出し側が \fIfd\fP がどのタイプの名前空間を
+参照しているかを知らない可能性がある。)
+.SH 返り値
+成功すると \fIsetns\fP() は 0 を返す。
+失敗すると、 \-1 が返され、 \fIerrno\fP にエラーを示す値が設定される。
+.SH エラー
+.TP
+\fBEBADF\fP
+\fIfd\fP が有効なファイルディスクリプタではない。
+.TP
+\fBEINVAL\fP
+\fIfd\fP が \fInstype\fP で指定されたタイプと一致しない名前空間を参照している。
+または、指定された名前空間をそのスレッドに関連付けし直す際に問題
+があった。
+.TP
+\fBENOMEM\fP
+指定された名前空間に変更するのに必要なメモリが割り当てられない。
+.TP
+\fBEPERM\fP
+呼び出したスレッドがこの操作を行うのに必要な特権 (\fBCAP_SYS_ADMIN\fP) を
+持っていなかった。
+.SH バージョン
+\fBsetns\fP() システムコールはカーネル 3.0 で Linux に初めて登場した。
+ライブラリによるサポートは glibc バージョン 2.14 を追加された。
+.SH 準拠
+\fBsetns\fP() システムコールは Linux 固有である。
+.SH 注意
+新しいスレッドが \fBclone\fP(2) を使って作成された際に共有できる全ての属性を、
+\fBsetns\fP() を使って変更できるわけではない。
+.SH バグ
+現在のところ、 PID 名前空間とマウント名前空間はサポートされていない
+(\fBclone\fP(2) の \fBCLONE_NEWPID\fP と \fBCLONE_NEWNS\fP の説明を参照)。
+.SH 関連項目
+\fBclone\fP(2), \fBfork\fP(2), \fBvfork\fP(2), \fBproc\fP(5), \fBunix\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.41 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
れたままになる。スレッドがキャンセルを有効にしていた場合、
cancelability type によって、いつキャンセルが発生するかが決まる。
-スレッドの cancellation type は \fBpthread_setcanceltype\fP(3) で設定され、
-\fIasynchronous\fP か \fIdeferred\fP のいずれかとなる(\fIdeferred\fP が新しいスレッド
-のデフォルト値である)。
-非同期キャンセル (asynchronous cancelability) は、そのスレッドはいつでも
-ã\82ã\83£ã\83³ã\82»ã\83«ã\81\95ã\82\8cã\82\8bã\81\93ã\81¨ã\82\92æ\84\8få\91³ã\81\99ã\82\8b (é\80\9a常ã\81¯ã\81\99ã\81\90ã\81«ã\82ã\83£ã\83³ã\82»ã\83«ã\81\95ã\82\8cã\82\8bã\81\8cã\80\81ã\82·ã\82¹ã\83\86ã\83 ã\81\8c
-ã\81\9dã\81®ã\81\93ã\81¨ã\82\92ä¿\9d証ã\81\97ã\81¦ã\81\84ã\82\8bã\82\8fã\81\91ã\81§ã\81¯ã\81ªã\81\84)ã\80\82
-遅延キャンセル (deferred cancelability) では、そのスレッドが \fIcancellation
-point\fP となっている関数を次に呼び出すまでキャンセルが遅延される。
-取り消しポイント (cancellation point) に設定されていたり設定したりできる
-関数のリストは \fIpthreads\fP(7) に記載している。
+スレッドのキャンセル種別 (cancelability type) は
+\fBpthread_setcanceltype\fP(3) で設定され、\fIasynchronous\fP か \fIdeferred\fP
+ã\81®ã\81\84ã\81\9aã\82\8cã\81\8bã\81¨ã\81ªã\82\8b(\fIdeferred\fP ã\81\8cæ\96°ã\81\97ã\81\84ã\82¹ã\83¬ã\83\83ã\83\89ã\81®ã\83\87ã\83\95ã\82©ã\83«ã\83\88å\80¤ã\81§ã\81\82ã\82\8b)ã\80\82
+非同期キャンセル (asynchronous cancelability) は、そのスレッドはいつで
+ã\82\82ã\82ã\83£ã\83³ã\82»ã\83«ã\81\95ã\82\8cã\82\8bã\81\93ã\81¨ã\82\92æ\84\8få\91³ã\81\99ã\82\8b (é\80\9a常ã\81¯ã\81\99ã\81\90ã\81«ã\82ã\83£ã\83³ã\82»ã\83«ã\81\95ã\82\8cã\82\8bã\81\8cã\80\81
+ã\82·ã\82¹ã\83\86ã\83 ã\81\8cã\81\9dã\81®ã\81\93ã\81¨ã\82\92ä¿\9d証ã\81\97ã\81¦ã\81\84ã\82\8bã\82\8fã\81\91ã\81§ã\81¯ã\81ªã\81\84)ã\80\82é\81\85延ã\82ã\83£ã\83³ã\82»ã\83«
+(deferred cancelability) では、そのスレッドが \fI取り消しポイント
+(cancellation point)\fP となっている関数を次に呼び出すまでキャンセルが
+遅延される。取り消しポイントに設定されていたり設定
+したりできる関数のリストは \fIpthreads\fP(7) に記載している。
キャンセル要求が実行されると、
\fIthread\fP では以下のステップが (この順序で) 行われる。
--- /dev/null
+.\" Copyright (c) 2008 Linux Foundation, written by Michael Kerrisk
+.\" <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date. The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein. The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH PTHREAD_CLEANUP_PUSH 3 2008\-11\-24 Linux "Linux Programmer's Manual"
+.SH 名前
+pthread_cleanup_push, pthread_cleanup_pop \- スレッドの
+キャンセルクリーンアップハンドラの push/pop を行う
+.SH 書式
+.nf
+\fB#include <pthread.h>\fP
+
+\fBvoid pthread_cleanup_push(void (*\fP\fIroutine\fP\fB)(void *),\fP
+\fB void *\fP\fIarg\fP\fB);\fP
+\fBvoid pthread_cleanup_pop(int \fP\fIexecute\fP\fB);\fP
+.sp
+\fI\-pthread\fP でコンパイルしてリンクする。
+.fi
+.SH 説明
+これらの関数は、呼び出したスレッドのスレッドキャンセル時のクリーンアッ
+プハンドラのスタックの操作を行う。クリーンアップハンドラは、スレッドが
+キャンセルされた場合 (や以下で説明する他の種々の状況において) 自動的に
+実行される関数である。例えば、mutex のロック解除を行い、プロセス内の
+他のスレッドが利用できるようにする関数などが考えられる。
+
+\fBpthread_cleanup_push\fP() 関数は、 \fIroutine\fP をクリーンアップ
+ハンドラのスタックの一番上にプッシュする。 \fIroutine\fP が後で
+起動される際には、 \fIarg\fP が関数の引き数と渡される。
+
+\fBpthread_cleanup_pop\fP() 関数は、クリーンアップハンドラの
+スタックの一番上のルーチンを削除する。
+\fIexecute\fP が 0 以外の場合にはそのルーチンを追加で実行する。
+
+キャンセルクリーンアップハンドラは、以下に示す場合に
+スタックから取り出され実行される。
+.IP 1. 3
+スレッドがキャンセルされた際に、スタックに登録された全てのクリーン
+アップハンドラが取り出されて、実行される。クリーンアップハンドラの
+実行は、スタックに登録されたのと逆の順序で行われる。
+.IP 2.
+スレッドが \fBpthread_exit\fP(3) を呼び出して終了する際に、全てのクリーン
+アップハンドラが上の項目で述べたのと同様に実行される。
+(スレッドがスレッド開始関数からの \fIreturn\fP の実行により終了する場合に
+は、クリーンアップハンドラは\fI呼び出されない\fP。)
+.IP 3.
+スレッドが 0 以外の \fIexecute\fP 引き数で \fBpthread_cleanup_pop\fP() を
+呼び出した際に、スタックの一番上のクリーンアップハンドラが取り出されて
+実行される。
+.PP
+POSIX.1 では、 \fBpthread_cleanup_push\fP() と \fBpthread_cleanup_pop\fP() を
+それぞれ \(aq\fB{\fP\(aq と \(aq\fB}\fP\(aq を含むテキストに展開するマクロと
+して実装することを許容している。
+このため、呼び出し側では、これらの関数の呼び出しが同じ関数の中で対と
+なり、かつ文法的に同じネストレベル (nesting level) になることを保証
+しなければならない。 (言い換えると、クリーンアップハンドラは、コード
+の特定のセクションの実行の中でのみ設定するものであると言える。)
+
+\fBlongjmp\fP(3) (\fBsiglongjmp\fP(3)) の呼び出しは、
+\fBpthread_cleanup_push\fP() や \fBpthread_cleanup_pop\fP() の呼び出しが対と
+なる呼び出しがない状態で行われた場合には、どのような結果になるかは不定
+である。これは jump バッファは \fBsetjmp\fP(3) (\fBsigsetjmp\fP(3)) により設
+定されるからである。同様に、クリーンアップハンドラ内からの
+\fBlongjmp\fP(3) (\fBsiglongjmp\fP(3)) の呼び出しも、jump バッファがハンドラ
+内で \fBsetjmp\fP(3) (\fBsigsetjmp\fP(3)) で設定されていない限り、どのような
+結果になるかは不定である。
+.SH 返り値
+これらの関数は値を返さない。
+.SH エラー
+.\" SH VERSIONS
+.\" Available since glibc 2.0
+エラーはない。
+.SH 準拠
+POSIX.1\-2001.
+.SH 注意
+Linux では、関数 \fBpthread_cleanup_push\fP() と \fBpthread_cleanup_pop\fP()
+は、それぞれ \(aq\fB{\fP\(aq と \(aq\fB}\fP\(aq を含むテキストに展開する
+マクロとして実装されている。このことは、これらの関数を対で呼び出した
+スコープ内で宣言された変数は、そのスコープの中でしか参照できない
+ということを意味している。
+
+.\" The text was actually added in the 2004 TC2
+POSIX.1 には、括弧を含む \fBpthread_cleanup_push\fP() と
+\fBpthread_cleanup_pop\fP() のブロックをそのままにしたままで、
+\fIreturn\fP, \fIbreak\fP, \fIcontinue\fP, \fIgoto\fP を使った場合の影響は
+不定であると書かれている。
+移植性が必要なアプリケーションではこれを行うのは避けるべきである。
+.SH 例
+以下のプログラムは、このページで説明した関数の簡単な使用例を示すもので
+ある。このプログラムは \fBpthread_cleanup_push\fP() と
+\fBpthread_cleanup_pop\fP() で囲まれたループを実行するスレッドを作成する。
+このループではグローバル変数 \fIcnt\fP を 1 秒に 1 ずつ増やしていく。
+指定されたコマンドライン引き数の内容に基づいて、メインスレッドはもう一
+つのスレッドにキャンセル要求を送ったり、もう一つのスレッドがループを
+抜けて (\fIreturn\fP を呼び出して) 正常終了するようにグローバル変数を
+設定したりする。
+
+以下のシェルセッションでは、メインスレッドはもう一つのスレッドに
+キャンセル要求を送信する。
+
+.in +4n
+.nf
+$ \fB./a.out\fP
+New thread started
+cnt = 0
+cnt = 1
+Canceling thread
+Called clean\-up handler
+Thread was canceled; cnt = 0
+.fi
+.in
+
+上記の実行例から、スレッドがキャンセルされ、
+キャンセルクリーンアップハンドラが呼び出され、
+グローバル変数 \fIcnt\fP の値が 0 にリセットされていることが確認できる。
+
+次の実行例では、メインプログラムはグローバル変数を設定して、
+もう一つのスレッドが正常終了するようにしている。
+
+.in +4n
+.nf
+$ \fB./a.out x\fP
+New thread started
+cnt = 0
+cnt = 1
+Thread terminated normally; cnt = 2
+.fi
+.in
+
+上記では、 (\fIcleanup_pop_arg\fP が 0 なので) クリーンアップハンドラは
+実行されておらず、その結果 \fIcnt\fP の値はリセットされていないことが
+分かる。
+
+次の実行例では、メインプログラムはグローバル変数を設定して、
+もう一つのスレッドが正常終了するようにし、さらに
+\fIcleanup_pop_arg\fP に 0 以外の値を渡している。
+
+.in +4n
+.nf
+$ \fB./a.out x 1\fP
+New thread started
+cnt = 0
+cnt = 1
+Called clean\-up handler
+Thread terminated normally; cnt = 0
+.fi
+.in
+
+上記では、スレッドはキャンセルされていないが、クリーンアップハンドラが
+実行されていないことが分かる。これは \fBpthread_cleanup_pop\fP() の引き数
+に 0 以外を渡したからである。
+.SS プログラムのソース
+\&
+.nf
+#include <pthread.h>
+#include <sys/types.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+
+#define handle_error_en(en, msg) \e
+ do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)
+
+static int done = 0;
+static int cleanup_pop_arg = 0;
+static int cnt = 0;
+
+static void
+cleanup_handler(void *arg)
+{
+ printf("Called clean\-up handler\en");
+ cnt = 0;
+}
+
+static void *
+thread_start(void *arg)
+{
+ time_t start, curr;
+
+ printf("New thread started\en");
+
+ pthread_cleanup_push(cleanup_handler, NULL);
+
+ curr = start = time(NULL);
+
+ while (!done) {
+ pthread_testcancel(); /* A cancellation point */
+ if (curr < time(NULL)) {
+ curr = time(NULL);
+ printf("cnt = %d\en", cnt); /* A cancellation point */
+ cnt++;
+ }
+ }
+
+ pthread_cleanup_pop(cleanup_pop_arg);
+ return NULL;
+}
+
+int
+main(int argc, char *argv[])
+{
+ pthread_t thr;
+ int s;
+ void *res;
+
+ s = pthread_create(&thr, NULL, thread_start, NULL);
+ if (s != 0)
+ handle_error_en(s, "pthread_create");
+
+ sleep(2); /* Allow new thread to run a while */
+
+ if (argc > 1) {
+ if (argc > 2)
+ cleanup_pop_arg = atoi(argv[2]);
+ done = 1;
+
+ } else {
+ printf("Canceling thread\en");
+ s = pthread_cancel(thr);
+ if (s != 0)
+ handle_error_en(s, "pthread_cancel");
+ }
+
+ s = pthread_join(thr, &res);
+ if (s != 0)
+ handle_error_en(s, "pthread_join");
+
+ if (res == PTHREAD_CANCELED)
+ printf("Thread was canceled; cnt = %d\en", cnt);
+ else
+ printf("Thread terminated normally; cnt = %d\en", cnt);
+ exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBpthread_cancel\fP(3), \fBpthread_cleanup_push_defer_np\fP(3),
+\fBpthread_setcancelstate\fP(3), \fBpthread_testcancel\fP(3), \fBpthreads\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.41 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
--- /dev/null
+.\" Copyright (c) 2008 Linux Foundation, written by Michael Kerrisk
+.\" <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date. The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein. The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH PTHREAD_CLEANUP_PUSH_DEFER_NP 3 2008\-12\-04 Linux "Linux Programmer's Manual"
+.SH 名前
+pthread_cleanup_push_defer_np, pthread_cleanup_pop_restore_np \-
+cancelability type を保持したままでスレッドのキャンセルクリーンアップハンドラの push/pop を行う
+.SH 書式
+.nf
+\fB#include <pthread.h>\fP
+
+\fBvoid pthread_cleanup_push_defer_np(void (*\fP\fIroutine\fP\fB)(void *),\fP
+\fB void *\fP\fIarg\fP\fB);\fP
+\fBvoid pthread_cleanup_pop_restore_np(int \fP\fIexecute\fP\fB);\fP
+.fi
+.sp
+\fI\-pthread\fP を付けてコンパイルとリンクを行う。
+.SH 説明
+これらの関数は \fBpthread_cleanup_push\fP(3) と \fBpthread_cleanup_pop\fP(3)
+と同じだが、このページで説明する点が異なる。
+
+\fBpthread_cleanup_push\fP(3) と同様に、
+\fBpthread_cleanup_push_defer_np\fP() は \fIroutine\fP をそのスレッドの
+クリーンアップハンドラのスタックに追加する。これに加えて、
+\fBpthread_cleanup_push_defer_np\fP() は現在の cancelability type も
+保存し、cancelability type は "deferred" に設定する
+(\fBpthread_setcanceltype\fP(3) 参照)。
+これにより、この関数が呼び出される前のスレッドの cancelability type が
+"asynchronous" であったとしても、キャンセルクリーンアップが行われること
+が保証される。
+
+\fBpthread_cleanup_pop\fP(3) と同様に、
+\fBpthread_cleanup_pop_restore_np\fP() はそのスレッドのキャンセル
+クリーンアップハンドラのスタックから一番上にあるクリーンアップハンドラ
+を取り出す。これに加えて、そのスレッドの cancelability type を、対応
+する \fBpthread_cleanup_push_defer_np\fP() が呼ばれた時点の値に戻す。
+
+呼び出し側では、これらの関数の呼び出しが同じ関数の中で対となり、かつ
+文法的に同じネストレベル (nesting level) になることを保証しなければ
+ならない。 \fBpthread_cleanup_push\fP(3) で説明されている他の制限も
+適用される。
+
+以下の一連の呼び出し
+
+.in +4n
+.nf
+pthread_cleanup_push_defer_np(routine, arg);
+pthread_cleanup_pop_restore_np(execute);
+.fi
+.in
+
+と以下は等価である (但し、上の方がより簡潔で効率的である)。
+
+.\" As far as I can see, LinuxThreads reverses the two substeps
+.\" in the push and pop below.
+.in +4n
+.nf
+int oldtype;
+
+pthread_cleanup_push(routine, arg);
+pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &oldtype);
+\&...
+pthread_setcanceltype(oldtype, NULL);
+pthread_cleanup_pop(execute);
+.fi
+.in
+.\" SH VERSIONS
+.\" Available since glibc 2.0
+.SH 準拠
+これらの関数は非標準の GNU による拡張である。
+そのため、名前に "_np" (nonportable; 移植性がない) という接尾辞が
+付いている。
+.SH 関連項目
+\fBpthread_cancel\fP(3), \fBpthread_cleanup_push\fP(3),
+\fBpthread_setcancelstate\fP(3), \fBpthread_testcancel\fP(3), \fBpthreads\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.41 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
LinuxThreads スレッド実装においてのみ効果がある。
LinuxThreads スレッド実装では、この関数を呼び出すと
アプリケーション内の全てのスレッドがすぐに終了される。
-終了対象のスレッドの cancellation state と cancellation type は
+終了対象のスレッドの cancelability state と cancelability type は
無視され、それらのスレッドのクリーンアップハンドラは呼び出されない。
.SH 準拠
この関数は非標準の GNU による拡張である。
.TH PTHREAD_SETCANCELSTATE 3 2008\-11\-24 Linux "Linux Programmer's Manual"
.SH 名前
pthread_setcancelstate, pthread_setcanceltype \- cancelability state と
-type を設定する
+cancelability type を設定する
.SH 書式
.nf
\fB#include <pthread.h>\fP
.fi
.SH 説明
\fBpthread_setcancelstate\fP() は、呼び出したスレッドの
-cancelability state に \fIstate\fP で指定された値を設定する。
-変更前のスレッドの cancelability state は
+cancelability state に \fIstate\fP で指定された
+å\80¤ã\82\92è¨å®\9aã\81\99ã\82\8bã\80\82å¤\89æ\9b´å\89\8dã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81® cancelability state ã\81¯
\fIoldstate\fP が指すバッファで返される。
\fIstate\fP 引き数には以下の値のいずれか一つを指定しなければならない。
.TP
\fBPTHREAD_CANCEL_ENABLE\fP
スレッドは取り消し可能 (cancelable) である。
-これが全ての新しく作成されるスレッドでのデフォルトの cancelability
-state である。これには最初のスレッドも含まれる。
+これが全ての新しく作成されるスレッドでのデフォルトの
+cancelability state である。これには最初のスレッドも含まれる。
スレッドの cancelability type により、取り消し可能なスレッドが
取り消し要求にいつ反応するかが決まる。
.TP
\fBPTHREAD_CANCEL_DEFERRED\fP
そのスレッドが次に取り消しポイント (cancellation point) の関数を
呼び出すまで取り消し要求が遅延される。これが全ての新しく作成される
-スレッドでのデフォルトの cancellation type である。
+スレッドでのデフォルトの cancelability type である。
これには最初のスレッドも含まれる。
.TP
\fBPTHREAD_CANCEL_ASYNCHRONOUS\fP
--- /dev/null
+.\" Copyright (C) 1994, 1995 by Daniel Quinlan (quinlan@yggdrasil.com)
+.\" and Copyright (C) 2002-2008 Michael Kerrisk <mtk.manpages@gmail.com>
+.\" with networking additions from Alan Cox (A.Cox@swansea.ac.uk)
+.\" and scsi additions from Michael Neuffer (neuffer@mail.uni-mainz.de)
+.\" and sysctl additions from Andries Brouwer (aeb@cwi.nl)
+.\" and System V IPC (as well as various other) additions from
+.\" Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" Modified 1995-05-17 by faith@cs.unc.edu
+.\" Minor changes by aeb and Marty Leisner (leisner@sdsp.mc.xerox.com).
+.\" Modified 1996-04-13, 1996-07-22 by aeb@cwi.nl
+.\" Modified 2001-12-16 by rwhron@earthlink.net
+.\" Modified 2002-07-13 by jbelton@shaw.ca
+.\" Modified 2002-07-22, 2003-05-27, 2004-04-06, 2004-05-25
+.\" by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" 2004-11-17, mtk -- updated notes on /proc/loadavg
+.\" 2004-12-01, mtk, rtsig-max and rtsig-nr went away in 2.6.8
+.\" 2004-12-14, mtk, updated 'statm', and fixed error in order of list
+.\" 2005-05-12, mtk, updated 'stat'
+.\" 2005-07-13, mtk, added /proc/sys/fs/mqueue/*
+.\" 2005-09-16, mtk, Added /proc/sys/fs/suid_dumpable
+.\" 2005-09-19, mtk, added /proc/zoneinfo
+.\" 2005-03-01, mtk, moved /proc/sys/fs/mqueue/* material to mq_overview.7.
+.\" 2008-06-05, mtk, Added /proc/[pid]/oom_score, /proc/[pid]/oom_adj,
+.\" /proc/[pid]/limits, /proc/[pid]/mountinfo, /proc/[pid]/mountstats,
+.\" and /proc/[pid]/fdinfo/*.
+.\" 2008-06-19, mtk, Documented /proc/[pid]/status.
+.\" 2008-07-15, mtk, added /proc/config.gz
+.\"
+.\" FIXME 2.6.13 seems to have /proc/vmcore implemented
+.\" in the source code, but there is no option available under
+.\" 'make xconfig'; eventually this should be fixed, and then info
+.\" from the patch-2.6.13 and change log could be used to write an
+.\" entry in this man page.
+.\" Needs CONFIG_VMCORE
+.\"
+.\" FIXME cross check against Documentation/filesystems/proc.txt
+.\" to see what information could be imported from that file
+.\" into this file.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH PROC 5 2012\-05\-03 Linux "Linux Programmer's Manual"
+.SH 名前
+proc \- プロセスの情報を含む擬似ファイルシステム
+.SH 説明
+\fIproc\fP ファイルシステムは擬似的なファイルシステムであり、 カーネル内のデータへのインターフェースとして使用される。 一般的には
+\fI/proc\fP にマウントされる。 大部分のファイルは読み出し専用 (read\-only) であるが、 いくつかのファイルは書き込み可能であり、
+そのファイルに書き込めばカーネルの内部変数を変更できる。
+.LP
+以下は \fI/proc\fP 階層の簡単なあらましである。
+.PD 1
+.TP
+\fI/proc/[pid]\fP
+.\" FIXME Describe /proc/[pid]/attr and
+.\" /proc/[pid]/task/[tid]/attr
+.\" This is a directory
+.\" Added in ???
+.\" CONFIG_SECURITY
+.\"
+実行中のプロセスについてのサブディレクトリ。 サブディレクトリ名は (そのプロセスの) プロセス ID である。
+各サブディレクトリは、以下の擬似ファイルとディレクトリを含む。
+.TP
+\fI/proc/[number]/auxv\fP (カーネル 2.6.0\-test7 以降)
+実行時にプロセスに渡された ELF インタプリタ情報が格納されている。 個々のエントリは、\fIunsigned long\fP 型の ID 1 個に
+\fIunsigned long\fP 型の値 1 個が続くフォーマットである。 最後のエントリには 0 が 2 個入っている。
+.TP
+\fI/proc/[pid]/cgroup\fP (Linux 2.6.24 以降)
+.\" Info in Documentation/cgroups/cgroups.txt
+このファイルは、プロセスやタスクが所属するコントロールグループを示す。
+cgroup の各階層についてエントリーが 1 つあり、
+各エントリーは以下の形式のコロン区切りのフィールドで構成される。
+.nf
+
+\f(CW 5:cpuacct,cpu,cpuset:/daemons\fP
+.fi
+.IP
+コロン区切りの各フィールドは、左から右の順で、以下の意味を持つ。
+.RS 11
+.IP 1. 3
+階層 ID 番号
+.IP 2.
+その階層に関連付けたサブシステムの集合
+.IP 3.
+プロセスが所属する階層内のコントロールグループ
+.RE
+.IP
+.\"
+.\" FIXME Describe /proc/[pid]/clear_refs
+.\" Added in 2.6.22
+.\" "Clears page referenced bits shown in smaps output"
+.\" write-only
+.\" CONFIG_PROC_PAGE_MONITOR
+このファイルが存在するのは、カーネルのコンフィギュレーション・オプショ
+ン \fBCONFIG_CGROUPS\fP を有効にした場合だけである。
+.TP
+\fI/proc/[pid]/cmdline\fP
+.\" In 2.3.26, this also used to be true if the process was swapped out.
+プロセスの完全なコマンド行を保持する。ただし、そのプロセスがゾンビプロセス
+の場合は、このファイルは空となる。つまり、このファイルを読み出しても一文字
+も返らない。このファイルではコマンドライン引き数が、
+NULL バイト (\(aq\e0\(aq) で区切られた文字列として書かれており、
+最後の文字列の後に NULL バイトが一つ置かれる。
+.TP
+\fI/proc/[pid]/coredump_filter\fP (kernel 2.6.23 以降)
+\fBcore\fP(5) 参照。
+.TP
+\fI/proc/[pid]/cpuset\fP (kernel 2.6.12 以降)
+.\" and/proc/[pid]/task/[tid]/cpuset
+\fBcpuset\fP(7) 参照。
+.TP
+\fI/proc/[pid]/cwd\fP
+プロセスのカレントワーキングディレクトリへのシンボリックリンク。 例えば、プロセス 20 のカレントワーキングディレクトリを見つけるためには、
+次のようにすればよい。
+
+.in +4n
+.nf
+$\fB cd /proc/20/cwd; /bin/pwd\fP
+.fi
+.in
+
+\fIpwd\fP コマンドはシェルの内部コマンドのことがよくあり、
+うまく動作しないかもしれない。
+\fBbash\fP(1) では \fIpwd\ \-P\fP を使ってもよい。
+
+.\" The following was still true as at kernel 2.6.13
+マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、 このシンボリックリンクの内容は参照できない (スレッドの終了は通常
+\fBpthread_exit\fP(3) を呼び出しにより行われる)。
+.TP
+\fI/proc/[pid]/environ\fP
+このファイルはプロセスの環境変数を含んでいる。 各エントリは NULL バイト (\(aq\e0\(aq) で区切られていて、 末尾に NULL
+バイトがあるかもしれない。 したがって、プロセス 1 の環境変数を表示するためには 次のようにすればよい。
+.in +4n
+.nf
+
+$\fB (cat /proc/1/environ; echo) | tr \(aq\e000\(aq \(aq\en\(aq\fP
+.fi
+.in
+.TP
+\fI/proc/[pid]/exe\fP
+.\" The following was still true as at kernel 2.6.13
+Linux 2.2 以降では、このファイルはシンボリックリンクで、 実行可能コマンドの実際のパス名を格納している。
+このシンボリックリンクは通常のように辿ることができる; これをオープンすると実行可能ファイルがオープンされる。 (コマンドラインで)
+\fI/proc/[pid]/exe\fP と入力すると、プロセス番号 [pid] で実行されている 実行可能ファイルをもう一つ実行することができる。
+マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、 このシンボリックリンクの内容は参照できない (スレッドの終了は通常
+\fBpthread_exit\fP(3) を呼び出しにより行われる)。
+
+Linux 2.0 以前では、 \fI/proc/[pid]/exe\fP は実行されたバイナリへのポインタで、シンボリックリンクのように見える。 Linux
+2.0 以前では、このファイルに対して \fBreadlink\fP(2) を実行すると、次のフォーマットの文字列が返る。
+
+ [デバイス番号]:iノード番号
+
+たとえば、[0301]:1502 はメジャーデバイス番号 03 (IDE, MFM などのドライブ) マイナーデバイス番号 01
+(最初のドライブの最初のパーティション) の デバイス上の iノード番号 1502 である。
+
+\fI\-inum\fP オプションをつけて \fBfind\fP(1) を使うと、
+このファイルの所在を探すことができる。
+.TP
+\fI/proc/[pid]/fd\fP
+プロセスがオープンしたファイル各々に対するエントリを含むサブディレクトリ。 ファイルディスクリプタがファイル名で、
+実際のファイルへのシンボリックリンクになっている。 したがって 0 は標準入力、1 は標準出力、2 は標準エラー出力、などとなる。
+
+.\" The following was still true as at kernel 2.6.13
+マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、 このディレクトリの内容は参照できない (スレッドの終了は通常
+\fBpthread_exit\fP(3) を呼び出しにより行われる)。
+
+コマンドライン引き数としてファイル名を受け取るが、引き数が 渡されなかった場合
+に標準入力から入力を受け取らないようなプログラムや、 コマンドライン引き数とし
+て書き込みファイルを受け取るが、引き数が 渡されなかった場合に標準出力に出力を
+行わないようなプログラムであっても、 \fI/proc/[pid]/fd\fP を使うことで標準入力や
+標準出力を使用できるようになる。 例えば、 \fI\-i\fP を入力ファイルを指定するフラ
+グ、 \fI\-o\fP を出力ファイルを指定するフラグと仮定すると、
+.in +4n
+.nf
+
+$\fB foobar \-i /proc/self/fd/0 \-o /proc/self/fd/1 ...\fP
+.fi
+.in
+
+.\" The following is not true in my tests (MTK):
+.\" Note that this will not work for
+.\" programs that seek on their files, as the files in the fd directory
+.\" are not seekable.
+を実行することにより、フィルタとして動作させることができる。
+
+\fI/proc/self/fd/N\fP は、ある種の UNIX や UNIX 風のシステムにある \fI/dev/fd/N\fP
+とだいたい同じである。 事実 Linux のたいていの MAKEDEV スクリプトは、
+\fI/dev/fd\fP を \fI/proc/self/fd\fP へのシンボリックリンクにしている。
+
+ほとんどのシステムでは、シンボリックリンク \fI/dev/stdin\fP, \fI/dev/stdout\fP, \fI/dev/stderr\fP
+が提供されており、それぞれ \fI/proc/self/fd\fP 内のファイル \fI0\fP, \fI1\fP, \fI2\fP にリンクされている。
+したがって、上述のサンプルコマンドは次のようにも書くことができる。
+.in +4n
+.nf
+
+$\fB foobar \-i /dev/stdin \-o /dev/stdout ...\fP
+.fi
+.in
+.\" FIXME Describe /proc/[pid]/loginuid
+.\" Added in 2.6.11; updating requires CAP_AUDIT_CONTROL
+.\" CONFIG_AUDITSYSCALL
+.TP
+\fI/proc/[pid]/fdinfo/\fP (kernel 2.6.22 以降)
+このサブディレクトリには、そのプロセスがオープンしているファイル毎の エントリが入っており、ファイルディスクリプタがファイル名となっている。
+各ファイルの内容を読み出すことで、対応するファイルディスクリプタに関する 情報を得ることができる。以下に例を示す。
+.in +4n
+.nf
+
+$\fB cat /proc/12015/fdinfo/4\fP
+pos: 1000
+flags: 01002002
+.fi
+.in
+
+\fIpos\fP フィールドは 10 進数で、現在のファイルオフセットを示す。 \fIflags\fP フィールドは 8 進数で、
+ファイルのアクセスモードとファイル状態フラグを示す (\fBopen\fP(2) 参照)。
+
+.\" FIXME document /proc/[pid]/io
+.\" .TP
+.\" .IR /proc/[pid]/io " (since kernel 2.6.20)"
+このディレクトリのファイルは、プロセスの所有者だけが読み出すことができる。
+.TP
+\fI/proc/[pid]/limits\fP (kernel 2.6.24 以降)
+このファイルは、そのプロセスの各リソース制限について、 ソフト・リミット、ハード・リミット、計測単位を表示する (\fBgetrlimit\fP(2)
+参照)。 このファイルは、プロセスの実 UID を持つものだけが読み出すことができる。
+.TP
+\fI/proc/[pid]/maps\fP
+現在マップされているメモリ領域とそのアクセスパーミッションを含む。
+
+フォーマットは以下のとおり:
+
+.nf
+\f(CWaddress perms offset dev inode pathname
+08048000\-08056000 r\-xp 00000000 03:0c 64593 /usr/sbin/gpm
+08056000\-08058000 rw\-p 0000d000 03:0c 64593 /usr/sbin/gpm
+08058000\-0805b000 rwxp 00000000 00:00 0
+40000000\-40013000 r\-xp 00000000 03:0c 4165 /lib/ld\-2.2.4.so
+40013000\-40015000 rw\-p 00012000 03:0c 4165 /lib/ld\-2.2.4.so
+4001f000\-40135000 r\-xp 00000000 03:0c 45494 /lib/libc\-2.2.4.so
+40135000\-4013e000 rw\-p 00115000 03:0c 45494 /lib/libc\-2.2.4.so
+4013e000\-40142000 rw\-p 00000000 00:00 0
+bffff000\-c0000000 rwxp 00000000 00:00 0\fP
+.fi
+
+ここで "address" はプロセスのアドレス空間でそのメモリ領域が占めている アドレスで、"perms" はパーミッションのセットである。
+
+.nf
+.in +5
+r = read
+w = write
+x = execute
+s = shared
+p = private (copy on write)
+.fi
+.in
+
+\&"offset" はファイル (などの) 中でのオフセット、 \&"dev" はデバイス (メジャーデバイス番号:マイナーデバイス番号)、
+\&"inode" はそのデバイスの i ノード番号である。 これが 0 のときは、bss (初期化されていないデータ領域) の場合のように
+このメモリ領域にはどの i ノードも割り当てられていないことを意味している。
+
+Linux 2.0 ではパス名を書いたフィールドがない。
+.TP
+\fI/proc/[pid]/mem\fP
+このファイルは、 \fBopen\fP(2), \fBread\fP(2), \fBlseek\fP(2)
+を通して、プロセスのメモリのページにアクセスするために使われる。
+.TP
+\fI/proc/[pid]/mountinfo\fP (Linux 2.6.26 以降)
+.\" This info adapted from Documentation/filesystems/proc.txt
+このファイルには、マウントポイントについての情報が入っている。 以下のような形式の行から構成される。
+.nf
+
+\f(CW36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 \- ext3 /dev/root rw,errors=continue
+(1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)\fP
+.fi
+.IP
+括弧付きの数字は、以下の説明のためのものである。
+.RS 7
+.TP 5
+(1)
+マウント ID: マウントの一意な識別子 (\fBumount\fP(2) の後は再利用されるかもしれない)。
+.TP
+(2)
+parent ID: 親マウントの ID (マウントツリーの最上位の場合は自分自身の ID となる)。
+.TP
+(3)
+major:minor: ファイルシステム上のファイルの \fIst_dev\fP の値 (\fBstat\fP(2) 参照)。
+.TP
+(4)
+ルート: そのファイルシステム内のマウントのルート。
+.TP
+(5)
+マウントポイント: マウントポイントのそのプロセスのルートからの相対パス。
+.TP
+(6)
+マウントオプション: 各マウントのオプション。
+.TP
+(7)
+オプションフィールド: "tag[:value]" 形式のフィールドが 0 個以上並ぶ。
+.TP
+(8)
+セパレータ: オプションフィールドの終わりを示す。
+.TP
+(9)
+ファイルシステム種別: ファイルシステムの名前。 "type[.subtype]" という形式となる。
+.TP
+(10)
+マウント元: ファイルシステム固有の情報。ない場合は "none" となる。
+.TP
+(11)
+super options: スーパーブロック単位のオプション。
+.RE
+.IP
+解釈する側は認識できないオプションフィールドは全て無視すべきである。 現在のところ、オプションフィールドとしては以下のようなものがある。
+.RS 12
+.TP 18
+shared:X
+マウントはピアグループ (peer group) X で共有されている。
+.TP
+master:X
+マウントはピアグループ (peer group) X のスレーブである。
+.TP
+propagate_from:X
+マウントはスレーブであり、ピアグループ X (*) から mount propagation を受信する。
+.TP
+unbindable
+マウントは unbind できない。
+.RE
+.IP
+(*) X は、プロセスの root で直近の dominant peer group である。 X がマウントの直接のマスターである場合や、 同じ
+root に dominant peer group がない場合は、 "master:X" フィールドだけが存在し、
+"propagate_from:X" フィールドは存在しない。
+
+mount propagation の詳細については、カーネルソースツリー内の
+\fIDocumentation/filesystems/sharedsubtree.txt\fP を参照。
+.TP
+\fI/proc/[pid]/mounts\fP (Linux 2.4.19 以降)
+そのプロセスのマウント名前空間に現在マウントされている 全ファイルシステムのリスト。 このファイルのフォーマットは \fBfstab\fP(5)
+に載っている。 カーネル 2.6.15 以降では、このファイルを監視することができる (pollable)。
+このファイルを読み出し用にオープンした後で、このファイルに変更があると (つまりファイルシステムのマウントやアンマウントがあると)、
+\fBselect\fP(2) ではそのファイルディスクリプタは読み出し可能となり、 \fBpoll\fP(2) と \fBepoll_wait\fP(2)
+ではそのファイルはエラー状態として通知される。
+.TP
+\fI/proc/[pid]/mountstats\fP (Linux 2.6.17 以降)
+このファイルを通じて、そのプロセスの名前空間内のマウントポイントに関する 各種情報 (統計、設定情報) を参照できる。
+ファイルの各行は以下のフォーマットである。
+.nf
+
+device /dev/sda7 mounted on /home with fstype ext3 [statistics]
+( 1 ) ( 2 ) (3 ) (4)
+.fi
+.IP
+各行のフィールドは以下の通りである。
+.RS 7
+.TP 5
+(1)
+マウントされているデバイス名 (対応するデバイスがない場合は "nodevice" となる)。
+.TP
+(2)
+マウントポイントのファイルシステムツリーにおけるパス名。
+.TP
+(3)
+ファイルシステム種別。
+.TP
+(4)
+追加の統計や設定情報。 現在のところ (Linux 2.6.26 時点では)、 このフィールドで情報が提供されているのは NFS
+ファイルシステムだけである。
+.RE
+.IP
+このファイルはプロセスの所有者だけが読み出すことができる。
+.TP
+\fI/proc/[pid]/ns/\fP (Linux 3.0 以降)
+.\" See commit 6b4e306aa3dc94a0545eb9279475b1ab6209a31f
+このサブディレクトリには、名前空間毎に 1 エントリが置かれる。
+各エントリは \fBsetns\fP(2) による操作をサポートしている。
+名前空間に関する情報は \fBclone\fP(2) を参照。
+.TP
+\fI/proc/[pid]/ns/ipc\fP (Linux 3.0 以降)
+このファイルをファイルシステムのどこか他の場所に bind mount することで (\fBmount\fP(2)
+参照)、現在この名前空間にいる全てのプロセスが終了したとしても、 \fIpid\fP で指定されたプロセスの IPC 名前空間は有効な状態で保たれる。
+
+このファイルをオープンすると、 \fIpid\fP で指定されたプロセスの IPC
+名前空間のファイルハンドルが返される。このファイルディスクリプタがオープンされている限り、この名前空間にいる全てのプロセスが終了したとしても、この
+IPC 名前空間は有効なままとなる。このファイルディスクリプタは \fBsetns\fP(2) に渡すことができる。
+.TP
+\fI/proc/[pid]/ns/net\fP (Linux 3.0 以降)
+このファイルをファイルシステムのどこか他の場所に bind mount することで (\fBmount\fP(2)
+参照)、現在この名前空間にいる全てのプロセスが終了したとしても、 \fIpid\fP で指定されたプロセスのネットワーク名前空間は有効な状態で保たれる。
+
+このファイルをオープンすると、 \fIpid\fP
+で指定されたプロセスのネットワーク名前空間のファイルハンドルが返される。このファイルディスクリプタがオープンされている限り、この名前空間にいる全てのプロセスが終了したとしても、このネットワーク名前空間は有効なままとなる。このファイルディスクリプタは
+\fBsetns\fP(2) に渡すことができる。
+.TP
+\fI/proc/[pid]/ns/uts\fP (Linux 3.0 以降)
+このファイルをファイルシステムのどこか他の場所に bind mount することで (\fBmount\fP(2)
+参照)、現在この名前空間にいる全てのプロセスが終了したとしても、 \fIpid\fP で指定されたプロセスの UTS 名前空間は有効な状態で保たれる。
+
+このファイルをオープンすると、 \fIpid\fP で指定されたプロセスの UTS
+名前空間のファイルハンドルが返される。このファイルディスクリプタがオープンされている限り、この名前空間にいる全てのプロセスが終了したとしても、この
+UTS 名前空間は有効なままとなる。このファイルディスクリプタは \fBsetns\fP(2) に渡すことができる。
+.TP
+\fI/proc/[pid]/numa_maps\fP (Linux 2.6.14 以降)
+\fBnuma\fP(7) を参照。
+.TP
+\fI/proc/[pid]/oom_adj\fP (Linux 2.6.11 以降)
+このファイルは、メモリ不足 (OOM) の状況下で どのプロセスを殺すべきかを選択す
+るのに使用されるスコアを 調整するのに使用される。 カーネルは、プロセスの
+\fIoom_score\fP 値のビットシフト操作に、この値を使用する。 この値として有効な値
+は \-16 から +15 までと、 特別な意味を持つ \-17 である。 \-17 はそのプロセス
+に対する OOM\-killing を完全に無効にすることを意味する。 正の値ほど、そのプロ
+セスが OOM\-killer により殺される可能性が高くなり、 負の値ほど可能性が低くなる。
+このファイルのデフォルト値は 0 である。 新しいプロセスは親プロセスの
+\fIoom_adj\fP の設定を継承する。 このファイルを変更するためには、プロセスは特権
+(\fBCAP_SYS_RESOURCE\fP) を持っていなければならない。
+.TP
+\fI/proc/[pid]/oom_score\fP (Linux 2.6.11 以降)
+.\" See mm/oom_kill.c::badness() in the 2.6.25 sources
+.\" See mm/oom_kill.c::badness() in the 2.6.25 sources
+このファイルは、OOM\-killer のプロセス選択用として、カーネルが このプロセス
+に対して与えた現在のスコアを表示する。 高いスコアは、そのプロセスが
+OOM\-killer により選択される 可能性が高いことを意味する。 このスコアの基本は
+そのプロセスが使用しているメモリ量であり、 以下の要因により加算 (+) 減算 (\-)
+が行われる。
+.RS
+.IP * 2
+そのプロセスが多くの子プロセスを \fBfork\fP(2) を使って作成しているか (+)。
+.IP *
+そのプロセスが長時間実行されて来たか、
+もしくは 多くの CPU 時間を使用しているか (\-)。
+.IP *
+そのプロセスが低い nice 値 (> 0) を持っているか (+)。
+.IP *
+.\" More precisely, if it has CAP_SYS_ADMIN or CAP_SYS_RESOURCE
+そのプロセスが特権を持っているか (\-)。
+.IP *
+.\" More precisely, if it has CAP_SYS_RAWIO
+そのプロセスが direct hardware access を行っているか (\-)。
+.RE
+.IP
+.\" FIXME Describe /proc/[pid]/pagemap
+.\" Added in 2.6.25
+.\" CONFIG_PROC_PAGE_MONITOR
+\fIoom_score\fP は、そのプロセスの \fIoom_adj\fP 設定で規定されるビットシフト調整にも影響を与える。
+.TP
+\fI/proc/[pid]/root\fP
+UNIX と Linux では、 ファイルシステムのルート (/) をプロセスごとに別々に
+できる。これはシステムコール \fBchroot\fP(2) によって設定する。 このファイルは
+プロセスのルートディレクトリを指すシンボリックリンクで、 exe や fd/* など
+と同じような動作をする。
+
+.\" The following was still true as at kernel 2.6.13
+.\" FIXME Describe /proc/[pid]/seccomp
+.\" Added in 2.6.12
+.\" FIXME Describe /proc/[pid]/sessionid
+.\" Added in 2.6.25; read-only; only readable by real UID
+.\" CONFIG_AUDITSYSCALL
+.\" FIXME Describe /proc/[pid]/sched
+.\" Added in 2.6.23
+.\" CONFIG_SCHED_DEBUG, and additional fields if CONFIG_SCHEDSTATS
+.\" Displays various scheduling parameters
+.\" This file can be written, to reset stats
+.\" FIXME Describe /proc/[pid]/schedstats and
+.\" /proc/[pid]/task/[tid]/schedstats
+.\" Added in 2.6.9
+.\" CONFIG_SCHEDSTATS
+マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、 このシンボリックリンクの内容は参照できない (スレッドの終了は通常
+\fBpthread_exit\fP(3) を呼び出しにより行われる)。
+.TP
+\fI/proc/[pid]/smaps\fP (Linux 2.6.14 以降)
+.\" CONFIG_PROC_PAGE_MONITOR
+このファイルは、そのプロセスの各マッピングのメモリ消費量を表示する。 マッピングのそれぞれについて、以下のような内容が表示される。
+.in +4n
+.nf
+
+08048000\-080bc000 r\-xp 00000000 03:02 13130 /bin/bash
+Size: 464 kB
+Rss: 424 kB
+Shared_Clean: 424 kB
+Shared_Dirty: 0 kB
+Private_Clean: 0 kB
+Private_Dirty: 0 kB
+
+.fi
+.in
+最初の行には、 \fI/proc/[pid]/maps\fP で表示されるマッピングと同じ情報が表示される。 残りの行には、マッピングのサイズ、現在 RAM
+上に存在するマッピングの量、 マッピング内の共有ページのうちクリーンなページ数、ダーティなページ数、
+マッピング内のプライベートページのうちクリーンなページ数、 ダーティなページ数、を示す。
+
+このファイルが存在するのは、カーネルのコンフィギュレーション・オプション \fBCONFIG_MMU\fP を有効にした場合だけである。
+.TP
+\fI/proc/[pid]/stat\fP
+プロセスの状態についての情報。 これは \fBps\fP(1) で使われ、 \fI/usr/src/linux/fs/proc/array.c\fP
+で定義されている。
+
+各フィールドを順番に、 \fBscanf\fP(3) のフォーマット指定子付きで以下に示す。
+.RS
+.TP 12
+\fIpid\fP %d
+プロセス ID。
+.TP
+\fIcomm\fP %s
+括弧でくくられた実行形式のファイル名。 実行形式がスワップアウトされているかどうかによらず、見ることができる。
+.TP
+\fIstate\fP %c
+"RSDZTW" のどれか 1 文字。 R は実行中 (running)、 S は割り込み可能な休眠状態 (sleeping in an
+interruptible wait)、 D は割り込み不可能なディスクスリープの待機状態 (waiting in uninterruptible
+disk sleep)、 Z はゾンビ状態 (zombie)、 T はトレースされている (traced) か (シグナルにより) 停止している状態
+(stopped)、 W はページング中 (paging) を表している。
+.TP
+\fIppid\fP %d
+親プロセスの PID。
+.TP
+\fIpgrp\fP %d
+プロセスのプロセスグループ ID。
+.TP
+\fIsession\fP %d
+プロセスのセッション ID。
+.TP
+\fItty_nr\fP %d
+プロセスの制御端末 (マイナー・デバイス番号はビット 31〜20 と 7〜0 にまたがって格納され、 メジャー・デバイス番号はビット 15〜8
+に格納される)。
+.TP
+\fItpgid\fP %d
+.\" This field and following, up to and including wchan added 0.99.1
+プロセスの制御端末のフォアグランド・プロセス・グループの ID。
+.TP
+\fIflags\fP %u (Linux 2.6.22 より前は %lu)
+プロセスのカーネルフラグワード。 ビットの意味は、 \fI<linux/sched.h>\fP で定義されている PF_* を参照すること。
+詳細はカーネルのバージョンに依存する。
+.TP
+\fIminflt\fP %lu
+プロセスが引き起こしたマイナーフォールト (minor fault、ディスクから メモリページへのロードを必要としないフォールト) の回数。
+.TP
+.\" field 11
+\fIcminflt\fP %lu
+(そのプロセスが終了を待っている) 子プロセスが引き起こしたマイナーフォールトの回数。
+.TP
+\fImajflt\fP %lu
+プロセスが引き起こしたメジャーフォールト (major fault、ディスクから メモリページへのロードを必要とするフォールト) の回数。
+.TP
+\fIcmajflt\fP %lu
+(そのプロセスが終了を待っている) 子プロセスが引き起こしたメジャーフォールトの回数。
+.TP
+\fIutime\fP %lu
+このプロセスがユーザーモードでスケジューリングされた時間の合計。 clock tick 単位で計測される
+(\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。 この値にはゲスト時間 \fIguest_time\fP (仮想 CPU
+の実行に消費された時間) も含まれる。これは、ゲスト時間のフィールドを認識しないアプリケーション
+において、ゲスト時間分を計算に入れ損ねないようにするためである。
+.TP
+\fIstime\fP %lu
+プロセスのカーネルモードでの実行時間 (単位 jiffies)。 このプロセスがカーネルモードでスケジューリングされた時間の合計。 clock tick
+単位で計測される (\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。
+.TP
+\fIcutime\fP %ld
+このプロセスの子プロセスで、終了待ち (waited\-for) のプロセスが、 ユーザモードでスケジューリングされた時間の合計。 clock tick
+単位で計測される (\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。 (\fBtimes\fP(2) も参照すること。)
+この値にはゲスト時間 \fIcguest_time\fP (仮想 CPU を実行するのに消費した時間、下記参照) も含まれる。
+.TP
+\fIcstime\fP %ld
+このプロセスの子プロセスで、終了待ち (waited\-for) のプロセスが、 カーネルモードでスケジューリングされた時間の合計。 clock tick
+単位で計測される (\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。
+.TP
+\fIpriority\fP %ld
+(Linux 2.6 の場合の説明) リアルタイム・スケジューリングポリシー (下記の
+\fIpolicy ;\fP \fBsched_setscheduler\fP(2) 参照) で動作しているプロセスでは、 この
+値はスケジューリング優先度を反転した値 (スケジューリング優先度を マイナスにし
+た値) となる。値は \-2 から \-100 までの範囲の数値で、 それぞれリアルタイム優先
+度の 1 から 9 に対応する。 リアルタイム以外のスケジューリングポリシーで動作し
+ているプロセスでは、 この値はカーネル内で管理されている nice 値そのもの
+(\fBsetpriority\fP(2)) となる。 カーネルは nice 値を 0 (高) から 39 (低) の範囲
+の値として保持しており、 それぞれユーザに見える nice 値の \-20 から 19 に対応
+する。
+
+.\" And back in kernel 1.2 days things were different again.
+Linux 2.6 より前では、このプロセスに割り当てられたスケジューリング 重みを変換した値が表示されていた。
+.TP
+\fInice\fP %ld
+.\" Back in kernel 1.2 days things were different.
+nice 値 (\fBsetpriority\fP(2) 参照)。 19 (最低優先) から \-20 (最高優先)
+の範囲の値である。
+.TP
+.\" .TP
+.\" \fIcounter\fP %ld
+.\" The current maximum size in jiffies of the process's next timeslice,
+.\" or what is currently left of its current timeslice, if it is the
+.\" currently running process.
+.\" .TP
+.\" \fItimeout\fP %u
+.\" The time in jiffies of the process's next timeout.
+.\" timeout was removed sometime around 2.1/2.2
+\fInum_threads\fP %ld
+このプロセスのスレッド数 (Linux 2.6 以降)。 カーネル 2.6 より前では、このフィールドは削除されたフィールドの 場所埋めとして 0
+にハードコードされていた。
+.TP
+.\" field 21
+\fIitrealvalue\fP %ld
+インターバルタイマによって、次に \fBSIGALRM\fP がプロセスへ送られるまでの時間 (単位 jiffies)。 カーネル 2.6.17
+以降では、このフィールドはメンテナンスされなくなり、 0 にハードコードされている。
+.TP
+\fIstarttime\fP %llu (Linux 2.6 より前は %lu)
+プロセスの起動時刻。システムが起動した時刻が起点 (単位 jiffies)。
+.TP
+\fIvsize\fP %lu
+仮想メモリのサイズ。単位はバイト。
+.TP
+\fIrss\fP %ld
+Resident Set Size。プロセスが持っている実メモリ上のページ数。
+これはちょうどテキスト、データ、スタック空間に使われているページ数である。 デマンドロードされていないページや
+スワップアウトされたページの数は含んでいない。
+.TP
+\fIrsslim\fP %lu
+このプロセスの rss の現在のソフト・リミット (バイト単位)。 \fBgetpriority\fP(2) の \fBRLIMIT_RSS\fP の説明を参照。
+.TP
+\fIstartcode\fP %lu
+プログラムテキストが実行可能であるような領域の先頭アドレス。
+.TP
+\fIendcode\fP %lu
+プログラムテキストが実行可能であるような領域の末尾アドレス。
+.TP
+\fIstartstack\fP %lu
+スタックの開始アドレス (すなわち、スタックの底)。
+.TP
+\fIkstkesp\fP %lu
+現在の ESP (スタックポインタ) の値。 プロセスのカーネルスタックページにある。
+.TP
+\fIkstkeip\fP %lu
+現在の EIP (インストラクションポインタ) の値。
+.TP
+.\" field 31
+\fIsignal\fP %lu
+処理待ちのシグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。
+リアルタイム・シグナルに関する情報は表示されないからである。 代わりに \fI/proc/[pid]/status\fP を使うこと。
+.TP
+\fIblocked\fP %lu
+ブロックされた (blocked) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。
+リアルタイム・シグナルに関する情報は表示されないからである。 代わりに \fI/proc/[pid]/status\fP を使うこと。
+.TP
+\fIsigignore\fP %lu
+無視された (ignored) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。
+リアルタイム・シグナルに関する情報は表示されないからである。 代わりに \fI/proc/[pid]/status\fP を使うこと。
+.TP
+\fIsigcatch\fP %lu
+捕捉された (caught) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。
+リアルタイム・シグナルに関する情報は表示されないからである。 代わりに \fI/proc/[pid]/status\fP を使うこと。
+.TP
+\fIwchan\fP %lu
+プロセスが待っている「チャネル」。 これはシステムコールのアドレスであり、
+文字名が必要ならば (アドレスとシステムコール名との) 対応表から見つけられる
+(もし \fI/etc/psdatabase\fP [訳注: このファイル名はパッケージによる] を更新
+しているならば、 \fIps \-l\fP して WCHAN フィールドを見よ)。
+.TP
+\fInswap\fP %lu
+.\" nswap was added in 2.0
+スワップされたページ数 (メンテナンスされていない)。
+.TP
+\fIcnswap\fP %lu
+.\" cnswap was added in 2.0
+子プロセスの \fInswap\fP の累計 (メンテナンスされていない)。
+.TP
+\fIexit_signal\fP %d (Linux 2.1.22 以降)
+プロセスが死んだときに親プロセスに送られるシグナル。
+.TP
+\fIprocessor\fP %d (Linux 2.2.8 以降)
+このプロセスを最後に実行した CPU の番号。
+.TP
+\fIrt_priority\fP %u (Linux 2.5.19 以降; Linux 2.6.22 より前は %lu)
+リアルタイム・スケジューリングの優先度。 リアルタイム・ポリシーの元でスケジューリングされるプロセスでは 1 から 99 の範囲の値となり、
+リアルタイム以外のスケジューリングポリシーのプロセスでは 0 となる (\fBsched_setscheduler\fP(2) 参照)。
+.TP
+.\" field 41
+\fIpolicy\fP %u (Linux 2.5.19 以降; Linux 2.6.22 より前は %lu)
+スケジューリング・ポリシー (\fBsched_setscheduler\fP(2) 参照)。 値は、 \fIlinux/sched.h\fP の SCHED_*
+定数を使ってデコードすればよい。
+.TP
+\fIdelayacct_blkio_ticks\fP %llu (Linux 2.6.18 以降)
+(clock tick (100分の1秒) 単位での) ブロック I/O の総遅延量。
+.TP
+\fIguest_time\fP %lu (Linux 2.6.24 以降)
+プロセスのゲスト時間 (ゲスト OS の仮想 CPU を実行するのに消費された時間)。 clock tick 単位で計測される
+(\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。
+.TP
+\fIcguest_time\fP %ld (Linux 2.6.24 以降)
+プロセスの子プロセスのゲスト時間。 clock tick 単位で計測される (\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。
+.RE
+.TP
+\fI/proc/[pid]/statm\fP
+(ページ単位で計測した) メモリ使用量についての情報を提供する。 各列は以下の通りである。
+.in +4n
+.nf
+
+.\" (not including libs; broken, includes data segment)
+.\" (including libs; broken, includes library text)
+size プログラムサイズの総計
+ (\fI/proc/[pid]/status\fP の VmSize と同じ)
+resident 実メモリ上に存在するページ
+ (\fI/proc/[pid]/status\fP の VmRSS と同じ)
+share 共有ページ (共有マッピングされているページ)
+text テキスト (コード)
+lib ライブラリ (Linux 2.6 では未使用)
+data データ + スタック
+dt ダーティページ (Linux 2.6 では未使用)
+.fi
+.in
+.TP
+\fI/proc/[pid]/status\fP
+\fI/proc/[pid]/stat\fP と \fI/proc/[pid]/statm\fP にある多くの情報を、人間が解析しやすい形式で提供する。
+以下に例を示す。
+.in +4n
+.nf
+
+$\fB cat /proc/$$/status\fP
+Name: bash
+State: S (sleeping)
+Tgid: 3515
+Pid: 3515
+PPid: 3452
+TracerPid: 0
+Uid: 1000 1000 1000 1000
+Gid: 100 100 100 100
+FDSize: 256
+Groups: 16 33 100
+VmPeak: 9136 kB
+VmSize: 7896 kB
+VmLck: 0 kB
+VmHWM: 7572 kB
+VmRSS: 6316 kB
+VmData: 5224 kB
+VmStk: 88 kB
+VmExe: 572 kB
+VmLib: 1708 kB
+VmPTE: 20 kB
+Threads: 1
+SigQ: 0/3067
+SigPnd: 0000000000000000
+ShdPnd: 0000000000000000
+SigBlk: 0000000000010000
+SigIgn: 0000000000384004
+SigCgt: 000000004b813efb
+CapInh: 0000000000000000
+CapPrm: 0000000000000000
+CapEff: 0000000000000000
+CapBnd: ffffffffffffffff
+Cpus_allowed: 00000001
+Cpus_allowed_list: 0
+Mems_allowed: 1
+Mems_allowed_list: 0
+voluntary_ctxt_switches: 150
+nonvoluntary_ctxt_switches: 545
+.fi
+.in
+.IP
+フィールドの詳細は以下の通りである。
+.RS
+.IP * 2
+\fIName\fP: このプロセスにより実行されたコマンド。
+.IP *
+\fIState\fP: プロセスの現在の状態。 "R (running; 実行中)", "S (sleeping; 休眠状態)", "D (disk
+sleep; ディスク待ちの休眠状態)", "T (stopped; 停止状態)", "T (tracing stop; トレースによる停止)", "Z
+(zombie; ゾンビ状態)", "X (dead; 死亡)" のいずれかである。
+.IP *
+\fITgid\fP: スレッドグループ ID (すなわち、プロセス ID)。
+.IP *
+\fIPid\fP: スレッド ID (\fBgettid\fP(2) 参照)。
+.IP *
+\fIPPid\fP: 親プロセスの PID。
+.IP *
+\fITracerPid\fP: このプロセスをトレースしているプロセスの PID (トレースされていない場合は 0)。
+.IP *
+\fIUid\fP, \fIGid\fP: 実 UID/GID、実効 UID/GID、保存 set\-UID/GID、ファイルシステム UID/GID。
+.IP *
+\fIFDSize\fP: 現在割り当てられているファイルディスクリプタのスロット数。
+.IP *
+\fIGroups\fP: 補助グループのリスト。
+.IP *
+\fIVmPeak\fP: 仮想メモリサイズのピーク値。
+.IP *
+\fIVmSize\fP: 仮想メモリサイズ。
+.IP *
+\fIVmLck\fP: ロックされているメモリサイズ (\fBmlock\fP(3) 参照)。
+.IP *
+\fIVmHWM\fP: 実メモリ上に存在するページサイズ (resident set size) のピーク値 ("high water mark")。
+.IP *
+\fIVmRSS\fP: 実メモリ上に存在するページサイズ。
+.IP *
+\fIVmData\fP, \fIVmStk\fP, \fIVmExe\fP: データ、スタック、テキストセグメントのサイズ。
+.IP *
+\fIVmLib\fP: 共有ライブラリ・コードのサイズ。
+.IP *
+\fIVmPTE\fP: ページ・テーブル・エントリのサイズ (Linux 2.6.10 以降)。
+.IP *
+\fIThreads\fP: このスレッドが属するプロセスのスレッド数。
+.IP *
+\fISigQ\fP: このフィールドにはスラッシュで区切られた 2 つの数字が入っている。この数字はこのプロセスの実ユーザ ID
+宛にキューイングされたシグナルに関するものである。一つ目の数字は、この実ユーザ ID
+宛に現在キューイングされているシグナル数である。二つ目の数字は、このプロセス宛にキューイングされたシグナル数に関するリソース上限値である
+(\fBgetrlimit\fP(2) の \fBRLIMIT_SIGPENDING\fP の説明を参照)。
+.IP *
+\fISigPnd\fP, \fIShdPnd\fP: スレッド宛およびプロセス全体宛の処理待ちシグナルの数 (\fBpthreads\fP(7),
+\fBsignal\fP(7) 参照)。
+.IP *
+\fISigBlk\fP, \fISigIgn\fP, \fISigCgt\fP: ブロックされるシグナル、無視されるシグナル、捕捉待ちのシグナルを 示すマスク値
+(\fBsignal\fP(7))。
+.IP *
+\fICapInh\fP, \fICapPrm\fP, \fICapEff\fP: 継承可能 (inheritable)、許可 (permitted)、実効
+(effective) の各ケーパビリティセットで有効になっているケーパビリティのマスク値 (\fBcapabilities\fP(7) 参照)。
+.IP *
+\fICapBnd\fP: ケーパビリティ・バウンディングセット (カーネル 2.6.26 以降、 \fBcapabilities\fP(7) 参照)。
+.IP *
+\fICpus_allowed\fP: このプロセスが実行を許可されている CPU のマスク値 (Linux 2.6.24 以降、 \fBcpuset\fP(7)
+参照)。
+.IP *
+\fICpus_allowed_list\fP: 前項と同じだが、「リスト形式」での表示 (Linux 2.6.26 以降、 \fBcpuset\fP(7)
+参照)。
+.IP *
+\fIMems_allowed\fP: このプロセスが使用できるメモリノードのマスク値 (Linux 2.6.24 以降、 \fBcpuset\fP(7)
+参照)。
+.IP *
+\fIMems_allowed_list\fP: 前項と同じだが、「リスト形式」での表示 (Linux 2.6.26 以降、 \fBcpuset\fP(7)
+参照)。
+.IP *
+\fIvoluntary_context_switches\fP, \fInonvoluntary_context_switches\fP:
+自発的/非自発的なコンテキストスイッチの回数 (Linux 2.6.23 以降)。
+.RE
+.TP
+\fI/proc/[pid]/task\fP (Linux 2.6.0\-test6 以降)
+このディレクトリには、そのプロセスのスレッド情報を含む サブディレクトリが 1 スレッドにつき 1 つ置かれる。
+各サブディレクトリの名前はスレッドのスレッド ID (\fI[tid]\fP) を示す数字である \fB(\fPgettid\fB(2)\fP を参照)。
+これらの各サブディレクトリには、 \fI/proc/[pid]\fP ディレクトリ以下と同じ名前と内容のファイル群がある。
+すべてのスレッドで共有される属性の場合、 \fItask/[tid]\fP サブディレクトリ以下の各ファイルの内容は 親ディレクトリ
+\fI/proc/[pid]\fP の対応するファイルと同じになることだろう (例えば、マルチスレッド・プロセスではファイル
+\fItask/[tid]/cwd\fP はいずれも親ディレクトリ内の \fI/proc/[pid]/cwd\fP
+と同じ値を持つことになる。なぜなら、一つのプロセスに属すすべての スレッドは作業ディレクトリを共有するからである)。 スレッド毎に独立な属性の場合、
+\fItask/[tid]\fP サブディレクトリ以下の各ファイルは異なる値を持つことがある (例えば、ファイル \fItask/[tid]/status\fP
+はスレッド毎に異なる値を持つ可能性がある)。
+
+.\" The following was still true as at kernel 2.6.13
+マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、 \fI/proc/[pid]/task\fP ディレクトリの内容は参照できない
+(スレッドの終了は通常 \fBpthread_exit\fP(3) を呼び出しにより行われる)。
+.TP
+\fI/proc/apm\fP
+Advanced Power Management のバージョンとバッテリ情報。 カーネルのコンパイル時に \fBCONFIG_APM\fP
+を定義したときに存在する。
+.TP
+\fI/proc/bus\fP
+インストールされている各バス用にサブディレクトリがある。
+.TP
+\fI/proc/bus/pccard\fP
+PCMCIA デバイスの情報が書かれるサブディレクトリ。 カーネルのコンパイル時に \fBCONFIG_PCMCIA\fP を定義したときに存在する。
+.TP
+\fI/proc/bus/pccard/drivers\fP
+.TP
+\fI/proc/bus/pci\fP
+いくつかのサブディレクトリがあり、 PCI バス・インストールされているデバイス・ デバイスドライバの情報が書かれた仮想ファイルがある。
+これらのファイルのうちいくつかは ASCII フォーマットではない。
+.TP
+\fI/proc/bus/pci/devices\fP
+PCI デバイスの情報。 \fBlspci\fP(8) や \fBsetpci\fP(8) でアクセスすることができる。
+.TP
+\fI/proc/cmdline\fP
+ブート時に Linux カーネルに渡された引き数。 引き数の受け渡しは、たいてい \fBlilo\fP(8) や \fBgrub\fP(8)
+といったブートマネージャを使って行われる。
+.TP
+\fI/proc/config.gz\fP (Linux 2.6 以降)
+このファイルでは、現在実行中のカーネルの構築時に使用された 設定オプションを参照できる。 書式は、 (\fImake xconfig\fP, \fImake
+config\fP などを使って) カーネルの設定を変更した際に生成される \fI.config\fP ファイルのものと同じである。
+ファイルの内容は圧縮されており、 \fBzcat\fP(1), \fBzgrep\fP(1) などを使うと、表示や検索ができる。 ファイルが変更されていない限り、
+\fI/proc/config.gz\fP の内容は次のコマンドで得られる内容と同じである。
+.in +4n
+.nf
+
+cat /lib/modules/$(uname \-r)/build/.config
+.fi
+.in
+.IP
+\fI/proc/config.gz\fP が提供されるのは、カーネルの設定で \fBCONFIG_IKCONFIG_PROC\fP
+が有効になっている場合のみである。
+.TP
+\fI/proc/cpuinfo\fP
+このファイルは、CPU およびシステムアーキテクチャに依存する項目を 集めたもので、リストの内容はサポートされているアーキテクチャ毎に異なる。 2
+つだけ共通の項目がある。 \fIprocessor\fP はプロセッサ番号で、 \fIbogomips\fP はカーネルの初期化時に計算されるシステム定数である。
+SMP マシンでは各 CPU についての情報が書かれている。
+.TP
+\fI/proc/devices\fP
+メジャーデバイス番号とデバイスグループのテキスト形式のリスト。 MAKEDEV スクリプトはこのファイルを使って、
+カーネルとの整合性を保つことができる。
+.TP
+\fI/proc/diskstats\fP (Linux 2.5.69 以降)
+このファイルには各ディスクデバイスのディスク I/O 統計情報が書かれている。 更に詳しい情報は、カーネルソースファイル
+\fIDocumentation/iostats.txt\fP を参照すること。
+.TP
+\fI/proc/dma\fP
+登録されている \fIISA\fP DMA (direct memory access) チャネルのリスト。
+.TP
+\fI/proc/driver\fP
+空のサブディレクトリ。
+.TP
+\fI/proc/execdomains\fP
+実行ドメインのリスト (ABI パーソナリティ)。
+.TP
+\fI/proc/fb\fP
+カーネルのコンパイル時に \fBCONFIG_FB\fP が定義されている場合、フレームバッファの情報が書かれる。
+.TP
+\fI/proc/filesystems\fP
+カーネルが対応しているファイルシステムのテキスト形式のリスト。 カーネルに組み込まれてコンパイルされたファイルシステムと、
+カーネルモジュールが現在ロードされているファイルシステムが列挙される (\fBfilesystems\fP(5) 参照)。 ファイルシステムに
+"nodev" という印が付いている場合、 そのファイルシステムがマウントするためのブロックデバイスを 必要としないことを意味する (例えば、
+仮想ファイルシステム、ネットワークファイルシステムなど)。
+
+ちなみに、マウント時にファイルシステムが指定されず、 どうやってもファイルシステムの種類を判定できなかった際に、 このファイルを \fBmount\fP(8)
+が使用するかもしれない。 その場合、このファイルに含まれるファイルシステムが試される (ただし、"nodev" の印がついたものは除く)。
+.TP
+\fI/proc/fs\fP
+空のサブディレクトリ。
+.TP
+\fI/proc/ide\fP
+このディレクトリは IDE バスをもつシステムに存在する。 各 IDE チャネルとそれに取り付けられている各デバイスごとにディレクトリがあり、
+以下のファイルが含まれている。
+
+.in +4n
+.nf
+cache バッファサイズ (KB)
+capacity セクタ数
+driver ドライバのバージョン
+geometry 物理ジオメトリと論理ジオメトリ
+identify 16 進数表記
+media メディアのタイプ
+model 製造者のモデル番号
+settings ドライブの設定
+smart_thresholds 16 進数表記
+smart_values 16 進数表記
+.fi
+.in
+
+\fBhdparm\fP(8) ユーティリティは、分かりやすい形式で この情報にアクセスするための手段を提供する。
+.TP
+\fI/proc/interrupts\fP
+IO デバイス毎の CPU 別の割り込み回数の記録に使われる。 Linux 2.6.24 以降、少なくとも i386 と x86_64
+アーキテクチャでは、 (デバイスと関連がない) システム内部の割り込みについても記録される。 システム内部の割り込みには、NMI
+(nonmaskable interrupt), LOC (local timer interrupt) や、SMP システムでは TLB (TLB
+flush interrupt), RES (rescheduling interrupt), CAL (remote function call
+interrupt) などがある。 簡単に読むことのできるフォーマットで、ASCII で表記されている。
+.TP
+\fI/proc/iomem\fP
+Linux 2.4 における I/O メモリマップ。
+.TP
+\fI/proc/ioports\fP
+現在登録され使われている I/O ポート領域のリスト。
+.TP
+\fI/proc/kallsyms\fP (Linux 2.5.71 以降)
+カーネルの外部シンボル定義を保持する。 \fBmodules\fP(X) 関係のツールがローダブルモジュールを動的にリンクしたり バインド (bind)
+するのに使われる。 Linux 2.5.47 以前では、微妙に異なる書式の似たようなファイルが \fIksyms\fP という名前であった。
+.TP
+\fI/proc/kcore\fP
+このファイルはシステムの物理メモリを表現しており、 ELF コアファイル形式 (core file format) で保持されている。
+この擬似ファイルと strip されていないカーネルのバイナリ (\fI/usr/src/linux/vmlinux\fP) [訳注:
+パッケージに依存する]) があれば、 GDB はカーネル内の任意のデータ構造の現在の状態を調べられる。
+
+このファイルの大きさは物理メモリ (RAM) のサイズに 4KB を加えた値である。
+.TP
+\fI/proc/kmsg\fP
+このファイルは \fBsyslog\fP(2) システムコールでカーネルメッセージを読み出す代りに使える。
+プロセスがこのファイルを読むためにはスーパーユーザー権限が必要であり、 ファイルを読み出すのは 1 つのプロセスのみに限るべきである。
+カーネルメッセージを記録するために、 \fBsyslog\fP(2) システムコールの機能を使う syslog プロセスが稼働している場合、
+このファイルを読み出すべきではない。
+
+このファイルの中の情報は \fBdmesg\fP(1) によって表示される。
+.TP
+\fI/proc/ksyms\fP (Linux 1.1.23\-2.5.47)
+\fI/proc/kallsyms\fP を参照。
+.TP
+\fI/proc/loadavg\fP
+このファイルの最初の 3 つのフィールドはロードアベレージの数値で、 1, 5, 15 分
+あたりの実行キュー内 (state R) または ディスク I/O 待ち (state D) のジョブ数
+を与える。 これは \fBuptime\fP(1) などのプログラムによって得られる値と同じである。
+4 番目のフィールドはスラッシュ (/) で区切られた 2 つの数値から構成される。
+この数値のうち最初のものは、現在実行可能なカーネルスケジュールエンティティ
+(プロセス、スレッド) の数である。スラッシュの後の数値は、現在システム上に
+存在するカーネルスケジュールエンティティの数である。 5 番目のフィールドは
+システム上に最も最近生成されたプロセスの PID である。
+.TP
+\fI/proc/locks\fP
+このファイルは現在のファイルロック (\fBflock\fP(2) と \fBfcntl\fP(2)) とリース (\fBfcntl\fP(2)) を表示する。
+.TP
+\fI/proc/malloc\fP (Linux 2.2 以前のみ)
+.\" It looks like this only ever did something back in 1.0 days
+コンパイルのときに \fBCONFIGDEBUGMALLOC\fP が定義されているときのみ、このファイルは存在する。
+.TP
+\fI/proc/meminfo\fP
+このファイルはシステム上のメモリ使用量に関する統計情報を表示する。 \fBfree\fP(1) は、このファイルを参照し、
+システムの未使用および使用中のメモリ量 (物理メモリとスワップ) と、 カーネルに使われている共有メモリとバッファの情報を報告する。
+.TP
+\fI/proc/modules\fP
+現在システムにロードされているモジュールのテキスト形式のリスト。 \fBlsmod\fP(8) も参照。
+.TP
+\fI/proc/mounts\fP
+カーネル 2.4.19 より前では、このファイルは現在システムにマウントされている 全てのファイルシステムのリストであった。 Linux 2.4.19
+でプロセス単位のマウント名前空間が導入されたことに伴い、 このファイルは \fI/proc/self/mounts\fP へのリンクとなった。
+\fI/proc/self/mounts\fP はそのプロセス自身のマウント名前空間のマウントポイントのリストである。 このファイルのフォーマットは
+\fBfstab\fP(5) に記述されている。
+.TP
+\fI/proc/mtrr\fP
+Memory Type Range Registers。 詳細は、カーネルソースファイル \fIDocumentation/mtrr.txt\fP
+を参照すること。
+.TP
+\fI/proc/net\fP
+さまざまなネットワークについての擬似ファイルで、 それぞれがネットワーク層の各種の状態を与える。 これらのファイルの内容は ASCII 形式なので、
+\fBcat\fP(1) で読み出せる。 とはいえ基本コマンドの \fBnetstat\fP(8) はこれらのファイルの内容のよりすっきりとした表示を提供する。
+.TP
+\fI/proc/net/arp\fP
+アドレス解決に使われるカーネルの ARP テーブルの ASCII 可読なダンプを保持している。 動的結合されたものと固定 (preprogrammed)
+の両方の APP エントリを見ることができる。フォーマットは以下のとおり:
+
+.nf
+.in 8n
+\f(CWIP address HW type Flags HW address Mask Device
+192.168.0.50 0x1 0x2 00:50:BF:25:68:F3 * eth0
+192.168.0.250 0x1 0xc 00:00:00:00:00:00 * eth0\fP
+.fi
+.in
+
+ここで IP address はマシンの IPv4 アドレス、 HW type はそのアドレスの RFC\ 826 で定められているハードウェアの形式、
+Flags は ARP 構造体 (\fI/usr/include/linux/if_arp.h\fP 内で定義されている) の内部フラグ、 HW
+address はその IP アドレスにマップされているデータリンク層のアドレス (もしわかっていれば) である。
+.TP
+\fI/proc/net/dev\fP
+擬似ファイル dev はネットワークデバイスの状態情報を含んでいる。 これは送受信したパケット数、エラーとコリジョン (collision) の回数、
+その他の基本的な統計を与える。 これらは \fBifconfig\fP(8) がデバイスの状態を報告するのに使われる。 フォーマットは以下のとおり:
+
+.nf
+.in 1n
+\f(CWInter\-| Receive | Transmit
+ face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
+ lo: 2776770 11307 0 0 0 0 0 0 2776770 11307 0 0 0 0 0 0
+ eth0: 1215645 2751 0 0 0 0 0 0 1782404 4324 0 0 0 427 0 0
+ ppp0: 1622270 5552 1 0 0 0 0 0 354130 5669 0 0 0 0 0 0
+ tap0: 7714 81 0 0 0 0 0 0 7714 81 0 0 0 0 0 0\fP
+.in
+.fi
+.\" .TP
+.\" .I /proc/net/ipx
+.\" No information.
+.\" .TP
+.\" .I /proc/net/ipx_route
+.\" No information.
+.TP
+\fI/proc/net/dev_mcast\fP
+\fI/usr/src/linux/net/core/dev_mcast.c\fP で定義されており、以下の形式である。
+.nf
+.in +5
+indx interface_name dmi_u dmi_g dmi_address
+2 eth0 1 0 01005e000001
+3 eth1 1 0 01005e000001
+4 eth2 1 0 01005e000001
+.in
+.fi
+.TP
+\fI/proc/net/igmp\fP
+Internet Group Management Protocol (インターネットグループ管理プロトコル)。
+\fI/usr/src/linux/net/core/igmp.c\fP で定義されている。
+.TP
+\fI/proc/net/rarp\fP
+このファイルは \fIarp\fP と同じフォーマットで 逆アドレス解決サービス (reverse address lookup services)
+\fBrarp\fP(8) に提供するために使われる現在の逆マップデータベースの内容を含んでいる。 RARP
+がカーネルコンフィグレーションに設定されていなければ、 このファイルは存在しない。
+.TP
+\fI/proc/net/raw\fP
+.\" .TP
+.\" .I /proc/net/route
+.\" No information, but looks similar to
+.\" .BR route (8).
+RAW ソケットテーブルのダンプを保持している。 ほとんどの情報はデバッグ以外では
+使われない。 \&"sl" の値はソケットのカーネルハッシュスロット、
+\&"local_address" はローカルアドレスとプロトコル番号のペア
+[訳者追加: "rem_address" はリモートアドレスとプロトコル番号のペア]。
+\&"st" はソケットの内部状態。 \&"tx_queue" と "rx_queue" はカーネルメモリを
+消費している 送信/受信データキューのサイズ。 \&"tr" と "tm\->when" と
+"rexmits" フィールドは RAW では使われていない。
+\&"uid" フィールドはソケット生成者の実効 UID を保持している。
+.TP
+\fI/proc/net/snmp\fP
+このファイルは SNMP エージェントが必要とする IP, ICMP, TCP, UDP 管理情報を ASCII データとして保持している。
+.TP
+\fI/proc/net/tcp\fP
+TCP ソケットテーブルのダンプを保持している。 大部分の情報はデバッグ以外には
+使われない。 sl はソケットのカーネルハッシュスロットの値、 \&"local_address"
+はローカルアドレスとポート番号のペアである。 (ソケットが接続している場合は)
+\&"rem_address" はリモートアドレスとポート番号の対である。 \&"st" はソケット
+の内部状態である。 \&"tx_queue" と "rx_queue" はカーネルメモリを消費している
+送信/受信データキューのサイズ。 \&"tr" と "tm\->when" と "rexmits"
+フィールドはソケット状態のカーネル 内部情報を保持しているが、
+これらはデバッグのときにしか役に立たない。 \&"uid" フィールドはソケット
+生成者の実効 UID を保持している。
+.TP
+\fI/proc/net/udp\fP
+UDP ソケットテーブルのダンプを保持している。 大部分の情報はデバッグ以外には
+使われない。 sl はソケットのカーネルハッシュスロットの値、 "local_address"
+はローカルアドレスとポート番号のペアである。 (ソケットが接続している場合は)
+"rem_address" はリモートアドレスとポート番号のペアである。 "st" はソケットの
+内部状態である。 "tx_queue" と "rx_queue" はカーネルメモリを消費している
+送信/受信データキューのサイズ。 "tr" と "tm\->when" と "rexmits"
+フィールドは UDP では使われていない。 "uid" フィールドはソケット生成者の
+実効 UID を保持している。 フォーマットは以下のとおり:
+
+.nf
+.in 1n
+\f(CWsl local_address rem_address st tx_queue rx_queue tr rexmits tm\->when uid
+ 1: 01642C89:0201 0C642C89:03FF 01 00000000:00000001 01:000071BA 00000000 0
+ 1: 00000000:0801 00000000:0000 0A 00000000:00000000 00:00000000 6F000100 0
+ 1: 00000000:0201 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0\fP
+.in
+.fi
+.TP
+\fI/proc/net/unix\fP
+UNIX ドメインソケットのリスト。 フォーマットは以下のとおり:
+.nf
+.sp .5
+\f(CWNum RefCount Protocol Flags Type St Path
+ 0: 00000002 00000000 00000000 0001 03
+ 1: 00000001 00000000 00010000 0001 01 /dev/printer\fP
+.sp .5
+.fi
+
+ここで、Num はカーネルのテーブルスロット数、 RefCount はソケットを使用して
+いるユーザー数、 Protocol はいまのところいつも 0 で、Flags はソケットの状態
+を保持している カーネル内部のフラグである。 Type はいまのところいつも 1
+(UNIX ドメインのデータグラムソケットは、現在のカーネルではサポートされていない
+[訳注: 2.0.34 ではサポートされているようだ])。
+St はソケットの内部状態で、Path は(もしあれば) ソケットのパス名である。
+.TP
+\fI/proc/partitions\fP
+各パーティションのメジャー番号とマイナー番号が書かれている。 さらに、ブロック数とパーティション名も書かれている。
+.TP
+\fI/proc/pci\fP
+カーネルの初期化時に見つかったすべての PCI デバイスのリストと その設定。
+
+.\" FIXME /proc/sched_debug
+.\" .TP
+.\" .IR /proc/sched_debug " (since Linux 2.6.23)"
+.\" See also /proc/[pid]/sched
+このファイルは非推奨であり、新しい PCI 用の \fI/proc\fP インターフェイス (\fI/proc/bus/pci\fP) を使うこと。
+このファイルは Linux 2.2 でオプションになった (カーネルのコンパイル時に \fBCONFIG_PCI_OLD_PROC\fP
+をセットすると利用可能であった)。 Linux 2.4 で再びオプションなしで有効に戻った。 さらに、Linux 2.6 で非推奨となり
+(\fBCONFIG_PCI_LEGACY_PROC\fP をセットするとまだ利用可能であった)、 最終的に Linux 2.6.17
+以降で完全に削除された。
+.TP
+\fI/proc/scsi\fP
+\fIscsi\fP 中間レベル擬似ファイルといくつかの SCSI 低レベルドライバの ディレクトリを含むディレクトリ。 これらのファイルは ASCII
+で表現されているので \fBcat\fP(1) で読める。
+
+いくつかのファイルは書き込み可能で、サブシステムの設定を変更したり、 特定の機能をオン/オフすることができる。
+.TP
+\fI/proc/scsi/scsi\fP
+カーネルが知っているすべての SCSI デバイスのリスト。 このリストは起動時に (コンソールで) 見られるものとほぼ同じである。 scsi
+は現在のところ \fIadd\-single\-device\fP コマンドのみをサポートしている。 これによりルート (root)
+は既知のデバイスリストへ活線挿抜 (hotplugged) デバイスを加えることができる。
+
+次のコマンドを実行すると、
+.in +4n
+.nf
+
+echo \(aqscsi add\-single\-device 1 0 5 0\(aq > /proc/scsi/scsi
+
+.fi
+.in
+ホストアダプタ scsi1 は SCSI チャネル 0 で ID 5 LUN 0 のデバイスを探す。 もしこのアドレスに既知のデバイスがあるか、
+不正なアドレスであったならばエラーが返る。
+.TP
+\fI/proc/scsi/[drivername]\fP
+いまのところ \fI[drivername]\fP は NCR53c7xx, aha152x, aha1542, aha1740, aic7xxx,
+buslogic, eata_dma, eata_pio, fdomain, in2000, pas16, qlogic, scsi_debug,
+seagate, t128, u15\-24f, ultrastore, wd7000 のどれかである。 少なくとも 1 つの SCSI
+ホストバスアダプタ (HBA) に ドライバが割り当てられていると、そのドライバに対応したディレクトリが現れる。 それぞれのディレクトリには、
+登録されたホストアダプタに対応してファイルが作られる。 このファイルの名前は、システムの初期化の際に ホストアダプタに割り当てられた番号になる。
+
+これらのファイルを読めばドライバとホストアダプタの設定や 統計などを見ることができる。
+
+これらのファイルへの書き込みはホストアダプタごとに異なる動作を引き起こす。 たとえば \fIlatency\fP と \fInolatency\fP
+コマンドを用いると、 ルート (root、スーパーユーザー) は eata_dma ドライバの隠し測定コードの オン/オフを切り替えることができる。
+また \fI lockup\fP と \fIunlock\fP コマンドを用いると、ルートは scsi_debug ドライバがシミュレートするバスロックアップ
+(bus lockup) を 制御することができる。
+.TP
+\fI/proc/self\fP
+このディレクトリはプロセスに (プロセス自身の) \fI/proc\fP ファイルシステムへのアクセスを参照させる。 これは \fI/proc\fP 内の
+(このプロセスの) プロセス ID が名前となっている ディレクトリと全く同一である。
+.TP
+\fI/proc/slabinfo\fP
+Linux 2.6.16 以降では、 カーネル設定オプション \fBCONFIG_SLAB\fP が有効の場合にのみ、このファイルは存在する。
+カーネルキャッシュの情報。 \fI/proc/slabinfo\fP のフィールドは以下のとおり。
+.in +4n
+.nf
+
+cache\-name
+num\-active\-objs
+total\-objs
+object\-size
+num\-active\-slabs
+total\-slabs
+num\-pages\-per\-slab
+.fi
+.in
+
+詳細は \fBslabinfo\fP(5) を参照すること。
+.TP
+\fI/proc/stat\fP
+カーネル/システムの統計。 アーキテクチャによって異なる。 共通エントリには以下のものが含まれる。
+.RS
+.TP
+\fIcpu 3357 0 4313 1362393\fP
+.\" 1024 on Alpha and ia64
+.\" FIXME Actually, the following info about the /proc/stat 'cpu' field
+.\" does not seem to be quite right (at least in 2.6.12)
+ユーザーモード、 低い優先度 (nice) でのユーザーモード、 システムモード、 タスク待ち (idle task)、
+でそれぞれシステムが消費した時間を USER_HZ を単位として計測した積算値。 (ほとんどのアーキテクチャでは USER_HZ は 1/100
+秒である。 正しい値は \fIsysconf(_SC_CLK_TCK)\fP を使って取得できる。) 最後の値 (タスク待ち) は疑似ファイル uptime
+の 2番目のエントリの値を USER_HZ 倍したものである。
+
+Linux 2.6 では、この行に 3つの欄が追加されている:
+\fIiowait\fP (I/O の完了を待っていた時間; 2.5.41 以降);
+\fIirq\fP (割り込み処理を行った時間; 2.6.0\-test4 以降);
+\fIsoftirq\fP (ソフト割り込みの処理を行った時間; 2.6.0\-test4 以降)。
+
+Linux 2.6.11 以降では、
+8 個目の欄として \fIsteal\fP (盗まれた時間; stolen time) が存在する。
+これは、仮想化環境での動作時に他のオペレーティングシステムにより
+消費された時間である。
+
+.\" See Changelog entry for 5e84cfde51cf303d368fcb48f22059f37b3872de
+Linux 2.6.24 以降では、9 個目の欄として、 \fIguest\fP がある。これは、 Linux
+カーネルの制御下のゲストオペレーティングシステムの仮想 CPU の 実行に消費された時間である。
+.TP
+\fIpage 5741 1808\fP
+システムが (ディスクから) ページイン/ページアウトしたページ数。
+.TP
+\fIswap 1 0\fP
+スワップイン/スワップアウトされたページ数。
+.TP
+.\" FIXME The following is not the full picture for the 'intr' of
+.\" /proc/stat on 2.6:
+\fIintr 1462898\fP
+この行はシステム起動時以降に処理された割り込みの回数を示す。 最初の欄は処理された割り込み全ての合計であり、それ以降の欄は
+個々の割り込みについての合計数である。
+.TP
+\fIdisk_io: (2,0):(31,30,5764,1,2) (3,0):\fP...
+(メジャー番号, ディスクインデックス番号):(情報なし (noinfo), 読み込み回数, 読み込みブロック数, 書き出し回数, 書き出しブロック数)
+.br
+(Linux 2.4 のみ)
+.TP
+\fIctxt 115315\fP
+コンテクスト・スイッチの延べ回数。
+.TP
+\fIbtime 769041601\fP
+起動時刻、紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC)) からの秒数。
+.TP
+\fIprocesses 86031\fP
+システム起動時からの延べフォーク (fork) 数。
+.TP
+\fIprocs_running 6\fP
+実行中状態のプロセス数 (Linux 2.5.45 以降)。
+.TP
+\fIprocs_blocked 2\fP
+I/O 完了待ちで停止 (blocked) しているプロセス数 (Linux 2.5.45 以降)。
+.RE
+.TP
+\fI/proc/swaps\fP
+使用中のスワップ領域。 \fBswapon\fP(8) も参照すること。
+.TP
+\fI/proc/sys\fP
+このディレクトリ (1.3.57 以降に存在) はカーネル変数に対応するいくつかの
+ファイルとサブディレクトリを含む。 これらの変数は読み出し可能である。
+また場合によっては \fI/proc\fP ファイルシステムや、 (非推奨の) システムコール
+\fBsysctl\fP(2) を用いて書き換えることもできる。
+.TP
+\fI/proc/sys/abi\fP (Linux 2.4.10 以降)
+.\" On some systems, it is not present.
+このディレクトリにはアプリケーションのバイナリ情報が入ったファイルが置かれる。 更に詳しい情報は、カーネルソースファイル
+\fIDocumentation/sysctl/abi.txt\fP を参照すること。
+.TP
+\fI/proc/sys/debug\fP
+このディレクトリは空の場合もある。
+.TP
+\fI/proc/sys/dev\fP
+このディレクトリにはデバイス特有の情報 (たとえば \fIdev/cdrom/info\fP) が含まれる。
+このディレクトリが空になっているシステムもある。
+.TP
+\fI/proc/sys/fs\fP
+このディレクトリには、ファイルシステムに関連するカーネル変数用の
+ディレクトリとサブディレクトリが含まれる。
+.TP
+\fI/proc/sys/fs/binfmt_misc\fP
+このディレクトリ以下のファイルについてのドキュメントは、 カーネルソースの \fIDocumentation/binfmt_misc.txt\fP にある。
+.TP
+\fI/proc/sys/fs/dentry\-state\fP (Linux 2.2 以降)
+このファイルには、ディレクトリキャッシュ (dcache) の状態に関する情報が 入っている。ファイルには、 \fInr_dentry\fP,
+\fInr_unused\fP, \fIage_limit\fP (秒単位の age), \fIwant_pages\fP (システムがリクエストしたページ数),
+ダミーの 2 つの値、 という 6 つの数字が書かれている。
+.RS
+.IP * 2
+\fInr_dentry\fP は割り当てられた dentry (dcache エントリ) の数である。 このフィールドは Linux 2.2
+では使用されない。
+.IP *
+\fInr_unused\fP は未使用の dentry 数である。
+.IP *
+.\" looks like this is unused in kernels 2.2 to 2.6
+\fIage_limit\fP は、メモリが不足している場合に次に dcache entry を再要求できるように なるまでの残り時間 (秒数) である。
+.IP *
+.\" looks like this is unused in kernels 2.2 to 2.6
+\fIwant_pages\fP は、カーネルが shrink_dcache_pages() を呼び出したが dcache がまだ縮小されていない場合に、0
+以外の値となる。
+.RE
+.TP
+\fI/proc/sys/fs/dir\-notify\-enable\fP
+このファイルは \fBfcntl\fP(2) に記述されている \fIdnotify\fP インターフェースをシステム全体で無効にしたり有効にしたりする。
+このファイルに値 0 が書かれている場合はインターフェースが無効になり、 値 1 の場合は有効になる。
+.TP
+\fI/proc/sys/fs/dquot\-max\fP
+このファイルにはキャッシュされるディスク quota エントリの最大数が書かれている。 (2.4 系の)
+システムの中には、このファイルが存在しないものもある。 キャッシュされるディスク quota エントリの空きが非常に少なく、
+とても多くのシステムユーザーが同時に存在する場合、 この制限を上げるといいかもしれない。
+.TP
+\fI/proc/sys/fs/dquot\-nr\fP
+このファイルには割り当てられているディスク quota のエントリ数と、 空いているディスク quota のエントリ数が書かれている。
+.TP
+\fI/proc/sys/fs/epoll\fP (Linux 2.6.28 以降)
+このディレクトリには、ファイル \fImax_user_watches\fP がある。 これらは、 \fIepoll\fP
+インタフェースが消費するカーネルメモリ量を制限するのに使用できる。 詳細は \fBepoll\fP(7) を参照。
+.TP
+\fI/proc/sys/fs/file\-max\fP
+このファイルはシステム全体でプロセスがオープンできる ファイル数の上限を定義する。 (各プロセスがオープンできるファイル数の上限を
+\fBRLIMIT_NOFILE\fP によって設定する \fBsetrlimit\fP(2) も参照すること。)
+ファイルハンドルを使い果たして大量にエラーメッセージが出る場合は、 以下のようにしてこの値を増加させてみよ:
+.br
+
+.br
+.nf
+\f(CW echo 100000 > /proc/sys/fs/file\-max\fP
+.fi
+
+\fIfile\-max\fP に書かれている値は、カーネル定数 \fBNR_OPEN\fP に制限される。
+
+\fI/proc/sys/fs/file\-max\fP を増やした場合は、 \fI/proc/sys/fs/inode\-max\fP を新しい
+\fI/proc/sys/fs/file\-max\fP の値の 3\-4 倍に増やしておくこと。 こうしないと inode を使い果たしてしまうだろう。
+
+特権プロセス (\fBCAP_SYS_ADMIN\fP) は \fIfile\-max\fP 上限を上書きできる。
+.TP
+\fI/proc/sys/fs/file\-nr\fP
+(このファイルは読み出し専用で) 読み出すと 現在オープンされているファイルの数が得られる。 このファイルには、割り当てられているファイルハンドル数・
+空いているファイルハンドル数・ファイルハンドル数の最大値、 という 3 つの数値が書かれている。 カーネルはファイルハンドルを動的に割り当てるが、
+それを再び解放しない。 割り当てられているファイル数が最大値に近づいた場合は、 最大値を大きくすることを考慮すべきである。
+空いているファイルハンドル数が多い場合は、 ファイルハンドルの使用のピークを経験したことがあり、 最大値を大きくする必要はないだろう。
+.TP
+\fI/proc/sys/fs/inode\-max\fP
+このファイルには、メモリ内 inode の最大値が書かれている。 (2.4 系の) システムによっては、このファイルが存在しないかもしれない。 この値は
+\fIfile\-max\fP の値の 3\-4 倍にすべきである。 これは \fIstdin\fP, \fIstdout\fP, ネットワークソケットを扱うにも inode
+が必要なためである。 日常的に inode を使い果たしている場合は、この値を増やす必要がある。
+.TP
+\fI/proc/sys/fs/inode\-nr\fP
+このファイルには、 \fIinode\-state\fP の最初の 2 つの値が書かれている。
+.TP
+\fI/proc/sys/fs/inode\-state\fP
+このファイルには 7 個の値が書かれている: \fInr_inodes,\fP \fInr_free_inodes\fP, \fIpreshrink\fP と 4
+つのダミーの値である。 \fInr_inodes\fP はシステムが確保する inode の数である。 Linux は 1 度に 1 ページ分いっぱいに
+nr_inode を確保するので、この値が \fIinode\-max\fP より幾分大きくなることもある。 \fInr_free_inodes\fP は空いている
+inode の数を表す。 \fInr_inodes\fP > \fIinode\-max\fP の場合、 \fIpreshrink\fP は 0 以外の値になる。
+この場合システムは inode をさらに確保するのではなく、 inode リストを切り詰める必要がある。
+.TP
+\fI/proc/sys/fs/inotify\fP (Linux 2.6.13 以降)
+このディレクトリには、ファイル \fImax_queued_events\fP, \fImax_user_instances\fP, and
+\fImax_user_watches\fP がある。これらは、 \fIinotify\fP インタフェースが消費するカーネルメモリ量を制限するのに利用できる。
+詳細は \fBinotify\fP(7) を参照。
+.TP
+\fI/proc/sys/fs/lease\-break\-time\fP
+このファイルは、ファイルを保持しているプロセスに対して カーネルがシグナルを送り、
+他のプロセスがそのファイルをオープンするのを待っていることを通知してから、 そのプロセスに対してカーネルがファイルのリース (lease, 貸し出し)
+(\fBfcntl\fP(2) を参照) を許す猶予期間を指定する。 リースホルダ (lease holder: ファイルの貸し出しを受けているプロセス)
+が 猶予期間中にリースを削除するか階級を低くしない場合、 カーネルはファイルのリースを強制的に止める。
+.TP
+\fI/proc/sys/fs/leases\-enable\fP
+このファイルはシステム全体でのファイルリース (\fBfcntl\fP(2) を参照) を有効または無効にする。 ファイルに値 0
+が書き込まれている場合、リースは無効である。 0 以外の場合にはリースは有効である。
+.TP
+\fI/proc/sys/fs/mqueue\fP (Linux 2.6.6 以降)
+このディレクトリにはファイル \fImsg_max\fP, \fImsgsize_max\fP, and \fIqueues_max\fP がある。これらは POSIX
+メッセージキューで使用されるリソースの 制御を行う。 詳細は \fBmq_overview\fP(7) を参照。
+.TP
+\fI/proc/sys/fs/overflowgid\fP と \fI/proc/sys/fs/overflowuid\fP
+これらのファイルにより、ユーザーは固定 UID と固定 GID の値を変更できる。 デフォルトは 65534 である。 Linux の UID と
+GID は 32 ビットであるが、 16 ビットの UID と GID しかサポートしないファイルシステムもある。
+このようなファイルシステムが書き込みを許可してマウントされた場合、 65535 を超える UID と GID は、
+ディスクに書き込まれる前にオーバーフロー値に変換される。
+.TP
+\fI/proc/sys/fs/pipe\-max\-size\fP (Linux 2.6.35 以降)
+このファイルの値により、 \fBfcntl\fP(2) の \fBF_SETPIPE_SZ\fP
+操作で増やすことができるパイプ容量の上限値が定義される。この上限は非特権プロセスにのみ適用される。このファイルのデフォルト値は 1,048,576
+である。このファイルに設定した値は切り上げられて、実装側で利用するのに都合のよい値に変更される場合がある。切り上げられた値を確認するには、値を設定した後でこのファイルの内容を表示すればよい。このファイルに設定できる最小値はシステムのページサイズである。
+.TP
+\fI/proc/sys/fs/suid_dumpable\fP (Linux 2.6.13 以降)
+.\" The following is based on text from Documentation/sysctl/kernel.txt
+このファイルの値により、set\-user\-ID されたバイナリや、 保護がかかった (protected) バイナリ / tainted な
+(汚染された; ライセンスがカーネルと適合しない) バイナリに対して、コアダンプファイルを 生成するかどうかが決定される。 以下の
+3つの値を指定することができる:
+.sp
+\fI0\ (default)\fP この値を指定すると、以前と同じ (Linux 2.6.13 より前の) 動作をする。 (\fBseteuid\fP(2),
+\fBsetgid\fP(2) などを呼び出すことや、set\-user\-ID や set\-group\-ID されたプログラムを 実行することで) 資格情報
+(credentials) が変更されているプロセスや、 プロセスの実行バイナリの読み出し許可がないプロセスに対して、 コアダンプを生成しない。
+.sp
+\fI1\ ("debug")\fP すべてのプロセスで、可能であればコアダンプを行う。 コアダンプファイルの所有者は、ダンプを行うプロセスのファイルシステム
+UID となり、セキュリティ上の考慮は行われない。 この値は、システムデバッグの場面だけを想定して設けられている。 ptrace
+のチェックも行われない。
+.sp
+\fI2\ ("suidsafe")\fP 通常はダンプされないようなバイナリ (上記の "0" 参照) を root だけが読み出し可能な形でダンプする。
+この場合、ユーザはそのコアダンプファイルを削除することはできるが、 読むことはできない。 セキュリティ上の理由から、このモードのコアダンプでは、
+既存のダンプファイルや他のファイルを上書きすることはない。 このモードは、管理者が通常の環境で問題を解析しようとする際に 適している。
+.TP
+このファイルはスーパブロックの値を制御する。
+この値はカーネルがマウントできるファイルシステムの最大値になる。 現在、 \fIsuper\-max\fP で許可されているファイルシステム数以上に
+マウントする必要がある場合は、この値を増加させるだけでよい。
+.TP
+\fI/proc/sys/fs/super\-nr\fP
+このファイルには現在マウントされているファイルシステム数が書かれている。
+.TP
+\fI/proc/sys/kernel\fP
+このディレクトリには、以下で説明する様々なカーネルパラメータを 制御するためのファイルが配置されている。
+.TP
+\fI/proc/sys/kernel/acct\fP
+このファイルには 3 つの値が含まれている: \fIhighwater\fP, \fIlowwater\fP, \fIfrequency\fP である。
+BSD\-style process accounting が有効になっている場合、 これら 3 つの値が動作を制御する。
+ログファイルのあるファイルシステムの空き領域が \fIlowwater\fP パーセント以下になった場合は、ログ記録を一時停止する。 空き領域が
+\fIhighwater\fP パーセント以上になった場合に、ログ記録を再開する。 \fIfrequency\fP はカーネルが空き領域のチェックをする頻度である
+(単位は秒)。 デフォルトの値は、4, 2, 30 である。 つまり、空き領域が 2% 以下になるとログ記録を一時停止し、 空き領域が 4%
+以上となったときに再開する。 空き領域についての情報は 30 秒間有効である点に注意すること。
+.TP
+\fI/proc/sys/kernel/cap\-bound\fP (Linux 2.2 to 2.6.24 以降)
+\fI/proc/sys/kernel/cap\-bound\fP このファイルにはカーネルの \fIcapability bounding set\fP (符号付き
+10 進数表現) の値が書かれている。 \fBexecve\fP(2) 中は、このセットとプロセスに許可されている権限の AND がとられる。 Linux
+2.6.25 以降では、システム全体のケーパビリティバウンディングセットは なくなり、スレッド単位のバウンディングセットに置き換えられた。
+\fBcapabilities\fP(7) を参照。
+.TP
+\fI/proc/sys/kernel/core_pattern\fP
+\fBcore\fP(5) 参照。
+.TP
+\fI/proc/sys/kernel/core_uses_pid\fP
+\fBcore\fP(5) 参照。
+.TP
+\fI/proc/sys/kernel/ctrl\-alt\-del\fP
+このファイルはキーボードの Ctrl\-Alt\-Del の扱いを制御する。 このファイルにある値が 0 の場合、 Ctrl\-Alt\-Del が捕捉されると
+\fBinit\fP(8) プログラムに送られて、正しく再起動される。 値が 0 より大きい場合、Vulcan Nerve Pinch (tm)
+に反応して、 Linux はダーティバッファを同期させることなく、すぐに再起動を行う。 注意: プログラム (dosemu など) に "raw"
+モードのキーボードがある場合、 ctrl\-alt\-del はカーネルの tty レイヤーに到達する前に プログラムに遮断され、
+プログラムに送られてどのように扱うかが決められる。
+.TP
+\fI/proc/sys/kernel/hotplug\fP
+このファイルはホットプラグ・ポリシー・エージェントのパスが書かれている。 このファイルのデフォルト値は \fI/sbin/hotplug\fP である。
+.TP
+\fI/proc/sys/kernel/domainname\fP と \fI/proc/sys/kernel/hostname\fP
+これらのファイルは、コマンド \fBdomainname\fP(1), \fBhostname\fP(1) と全く同じ方法で、 マシンの NIS/YP
+ドメイン名とホスト名の設定に使える。 すなわち
+
+.in +4n
+.nf
+#\fB echo \(aqdarkstar\(aq > /proc/sys/kernel/hostname\fP
+#\fB echo \(aqmydomain\(aq > /proc/sys/kernel/domainname\fP
+.fi
+.in
+
+は、以下と同じ効果がある。
+
+.in +4n
+.nf
+#\fB hostname \(aqdarkstar\(aq\fP
+#\fB domainname \(aqmydomain\(aq\fP
+.fi
+.in
+
+注意: 典型的な darkstar.frop.org という名前には、 ホスト名 "darkstar" と DNS (Internet Domain
+Name Server) ドメイン名 "frop.org" が含まれているが、DNS ドメイン名と NIS (Network Information
+Service) または YP (Yellow Pages) のドメイン名を混同してはならない。 一般にこれら 2 つのドメイン名は異なる。
+詳細な議論は、 \fBhostname\fP(1) の man ページを参照すること。
+.TP
+\fI/proc/sys/kernel/htab\-reclaim\fP
+(PowerPC のみ) このファイルを 0 以外の値に設定すると、 PowerPC htab (カーネルソースファイル
+\fIDocumentation/powerpc/ppc_htab.txt\fP 参照) を、システムがアイドルループになるたびに切り詰める。
+.TP
+\fI/proc/sys/kernel/l2cr\fP
+(PowerPC のみ) このファイルには G3 プロセッサボードの L2 キャッシュを制御するフラグが含まれる。 0 の場合、キャッシュは無効になる。
+0 以外の場合は有効になる。
+.TP
+\fI/proc/sys/kernel/modprobe\fP
+このファイルには、カーネルモジュールローダへのパスが含まれる。 デフォルトの値は \fI/sbin/modprobe\fP である。このファイルは、
+\fBCONFIG_KMOD\fP オプションを有効にしてカーネルが作成されている場合にのみ存在する。 このファイルについては、カーネルソースファイル
+\fIDocumentation/kmod.txt\fP (カーネル 2.4 以前のみに存在) に記述されている。
+.TP
+\fI/proc/sys/kernel/msgmax\fP
+このファイルは、System V メッセージキューに書き込まれる 1 つのメッセージの 最大バイト数を、システム全体で制限する。
+.TP
+\fI/proc/sys/kernel/msgmni\fP
+このファイルはメッセージキュー識別子の最大数をシステム全体で制限する。
+(このファイルは Linux 2.4 以降にしか存在しない)。
+.TP
+\fI/proc/sys/kernel/msgmnb\fP
+このファイルは、 \fImsg_qbytes\fP の設定を初期化するシステム全体のパラメータで
+ある。 \fImsg_qbytes\fP は以降で作成されるメッセージキューで使われる。
+\fImsg_qbytes\fP 設定では、メッセージキューに書き込まれる最大バイト数を指定する。
+.TP
+\fI/proc/sys/kernel/ostype\fP と \fI/proc/sys/kernel/osrelease\fP
+これらのファイルは文字列 \fI/proc/version\fP の各部分を与える。
+.TP
+\fI/proc/sys/kernel/overflowgid\fP と \fI/proc/sys/kernel/overflowuid\fP
+これらのファイルは \fI/proc/sys/fs/overflowgid\fP と \fI/proc/sys/fs/overflowuid\fP
+を複製したものである。
+.TP
+\fI/proc/sys/kernel/panic\fP
+このファイルはカーネル変数 \fIpanic_timeout\fP への読み出しと書き込みのアクセスを与える。 この値が 0 ならば、パニック時にカーネルは
+(無限) ループに入る。 0 でなければ、その秒数だけ待ってから自動的に再起動する。 ソフトウェア watchdog ドライバを使っている場合、
+推奨される設定は 60 である。
+.TP
+\fI/proc/sys/kernel/panic_on_oops\fP (Linux 2.5.68 以降)
+このファイルは、oops や BUG が起こった場合のカーネルの動作を制御する。 ファイルに 0 が書かれている場合、システムは操作を続行しようとする。
+1 が書かれている場合、システムは (klogd が oops 出力を記録する時間を与えるために) 数秒間遅延した後、 panic を起こす。
+\fI/proc/sys/kernel/panic\fP ファイルも 0 でない場合、マシンは再起動される。
+.TP
+\fI/proc/sys/kernel/pid_max\fP (Linux 2.5.34 以降)
+.\" Prior to 2.6.10, pid_max could also be raised above 32768 on 32-bit
+.\" platforms, but this broke /proc/[pid]
+.\" See http://marc.theaimsgroup.com/?l=linux-kernel&m=109513010926152&w=2
+このファイルは、PID をいくつで終了にするかを指定する (すなわち、このファイルの値は最大 PID より 1 大きい)。 このファイルのデフォルト値は
+32768 であり、 その場合には以前のカーネルと同じ PID の範囲になる。 32ビットのプラットフォームでは、 \fIpid_max\fP の最大値は
+32768 である。 64ビットのプラットフォームでは、 2^22 (\fBPID_MAX_LIMIT\fP, 約 4,000,000)
+までの任意の値を設定できる。
+.TP
+\fI/proc/sys/kernel/powersave\-nap\fP (PowerPC のみ)
+このファイルにはフラグが書かれている。 フラグが設定されると、Linux\-PPC は 省電力の "nap" モードを使う。
+設定されない場合は、"doze" モードが使われる。
+.TP
+\fI/proc/sys/kernel/printk\fP
+このファイルにある 4 つの値は、 \fIconsole_loglevel\fP, \fIdefault_message_loglevel\fP,
+\fIminimum_console_loglevel\fP, \fIdefault_console_loglevel\fP である。
+これらの値はエラーメッセージを表示したり記録したりする \fIprintk()\fP の動作に影響する。 各 loglevel の情報については、
+\fBsyslog\fP(2) を参照すること。 優先度が \fIconsole_loglevel\fP 以上のメッセージは、コンソールに表示される。
+優先度が明示されていないメッセージは、優先度が \fIdefault_message_level\fP のときに表示される。
+\fIminimum_console_loglevel\fP は \fIconsole_loglevel\fP に設定できる最小 (最高) の値である。
+\fIdefault_console_loglevel\fP は \fIconsole_loglevel\fP のデフォルトの値である。
+.TP
+\fI/proc/sys/kernel/pty\fP (Linux 2.6.4 以降)
+このディレクトリは、UNIX 98 疑似端末 (\fBpts\fP(4) を参照) の数に関連する
+2 つのファイルを含む。
+.TP
+\fI/proc/sys/kernel/pty/max\fP
+このファイルは疑似端末の最大数を定義する。
+.TP
+\fI/proc/sys/kernel/pty/nr\fP
+この読み出し専用のファイルは、現在いくつの疑似端末が使われているかを表す。
+.TP
+\fI/proc/sys/kernel/random\fP
+このディレクトリは、ファイル \fI/dev/random\fP の操作を制御する様々なパラメータが書かれている。 詳細は \fBrandom\fP(4)
+を参照。
+.TP
+\fI/proc/sys/kernel/real\-root\-dev\fP
+このファイルはカーネルソースファイル \fIDocumentation/initrd.txt\fP に記述されている。
+.TP
+\fI/proc/sys/kernel/reboot\-cmd\fP (Sparc のみ)
+このファイルは SPARC ROM/Flash ブートローダに引き数を渡す方法を 提供しているように思われる。
+再起動後に何をするかを指定しているのだろうか?
+.TP
+\fI/proc/sys/kernel/rtsig\-max\fP
+(2.6.7 までのカーネルにのみ存在する。 \fBsetrlimit\fP(2) を参照すること) このファイルはシステムで発行される POSIX
+real\-time (queued) signal の 最大数を調整するのに使用される。
+.TP
+\fI/proc/sys/kernel/rtsig\-nr\fP
+(2.6.7 までのカーネルにのみ存在する) このファイルは現在キューに入っている POSIX real\-time signal の数を表す。
+.TP
+\fI/proc/sys/kernel/sem\fP (Linux 2.4 以降)
+このファイルには System V IPC セマフォを制限する 4 つの値が書かれている。 これらのフィールドは次の順番に並んでいる:
+.RS
+.IP SEMMSL 8
+セマフォ集合ごとのセマフォ数の最大値。
+.IP SEMMNS 8
+システム全体での、全てのセマフォ集合におけるセマフォ数の制限。
+.IP SEMOPM 8
+\fBsemop\fP(2) コールに指定されるオペレーション数の最大値。
+.IP SEMMNI 8
+システム全体でのセマフォ識別子の最大値。
+.RE
+.TP
+\fI/proc/sys/kernel/sg\-big\-buff\fP
+このファイルは、汎用 SCSI デバイス (sg) のバッファサイズの最大値を表す。 今はこれを変更することはできないが、 コンパイル時に
+\fIinclude/scsi/sg.h\fP を編集して \fBSG_BIG_BUFF\fP の値を変えれば変更できる。
+ただし、この値を変更する理由はないだろう。
+.TP
+\fI/proc/sys/kernel/shmall\fP
+このファイルには System V 共有メモリの総ページ数の システム全体での制限が書かれている。
+.TP
+\fI/proc/sys/kernel/shmmax\fP
+このファイルを通じて、(System V IPC) 共有メモリセグメントを作成するときの 最大サイズの実行時上限 (run\-time limit)
+を取得または設定できる。 現在は 1GB までの共有メモリセグメントが カーネルでサポートされている。 この値のデフォルトは \fBSHMMAX\fP
+である。
+.TP
+\fI/proc/sys/kernel/shmmni\fP
+(Linux 2.4 以降で使用可能) このファイルは、システム全体で作成可能な System V 共有メモリセグメント数を指定する。
+.TP
+\fI/proc/sys/kernel/sysrq\fP
+このファイルは、SysRq キーにより起動が許可されている関数群を制御する ものである。デフォルトでは、ファイルの内容は 1 であり、
+これは起こり得る全ての SysRq リクエストが許可されることを意味する (古いバージョンのカーネルでは、SysRq はデフォルトでは無効になっており、
+実行時に明示的に有効にする必要があったが、今はそうではない)。 このファイルで指定可能な値は以下の通り。
+
+ 0 \- sysrq を完全に無効にする
+ 1 \- sysrq の全ての関数を有効にする
+ >1 \- 許可する sysrq 関数のビットマスク。内訳は以下の通り。
+ 2 \- コンソールのログ・レベルの制御を有効にする
+ 4 \- キーボードの制御を有効にする (SAK, unraw)
+ 8 \- プロセスなどのデバッグ・ダンプを有効にする
+ 16 \- sync コマンドを有効にする
+ 32 \- 読み出し専用での再マウントを有効にする
+ 64 \- プロセスへのシグナル発行を有効にする (term, kill, oom\-kill)
+ 128 \- リブート/電源オフを許可する
+ 256 \- 全てのリアルタイム・タスクの nice 値の変更を許可する
+
+カーネル設定オプション \fBCONFIG_MAGIC_SYSRQ\fP が有効な場合のみ、このファイルは存在する。 詳細は、カーネルソースファイル
+\fIDocumentation/sysrq.txt\fP を参照のこと。
+.TP
+\fI/proc/sys/kernel/version\fP
+このファイルには、以下のような文字列が書かれている:
+
+ #5 Wed Feb 25 21:49:24 MET 1998
+
+\&"#5" はこのソースで構築された 5 番目のカーネルであることを意味する。 その後にある日付はカーネルが構築された時刻を表す。
+.TP
+\fI/proc/sys/kernel/threads\-max\fP (Linux 2.3.11 以降)
+このファイルは、システム全体で作成可能なスレッド数 (タスク数) の上限を指定する。
+.TP
+\fI/proc/sys/kernel/zero\-paged\fP (PowerPC のみ)
+このファイルはフラグを含む。 (0 以外の値で) 有効された場合、Linux\-PPC はアイドルループで pre\-zero page
+を行うので、get_free_pages の速度が向上する可能性がある。
+.TP
+\fI/proc/sys/net\fP
+このディレクトリにはネットワーク関係の情報が入っている。 このディレクトリにあるファイルのいくつかについては、 \fBtcp\fP(7) や
+\fBip\fP(7) に説明がある。
+.TP
+\fI/proc/sys/net/core/somaxconn\fP
+このファイルは \fBlisten\fP(2) の \fIbacklog\fP 引き数の上限値を規定する。 詳細は \fBlisten\fP(2)
+のマニュアルページを参照。
+.TP
+\fI/proc/sys/proc\fP
+このディレクトリは空の場合もある。
+.TP
+\fI/proc/sys/sunrpc\fP
+このディレクトリはネットワークファイルシステム (NFS) への Sun remote procedure call (遠隔手続き呼び出し)
+をサポートする。 これが存在しないシステムもある。
+.TP
+\fI/proc/sys/vm\fP
+このディレクトリにはメモリ管理の調整、バッファやキャッシュ管理のための ファイルがある。
+.TP
+\fI/proc/sys/vm/drop_caches\fP (Linux 2.6.16 以降)
+このファイルに書き込みを行うことで、クリーンなキャッシュ、dentry、 inode をメモリ上から外し、そのメモリを解放する。
+
+ページキャッシュを解放するには、 \fIecho 1 > /proc/sys/vm/drop_caches\fP とする。 dentry、inode
+を解放するには、 \fIecho 2 > /proc/sys/vm/drop_caches\fP とする。ページキャッシュ、dentry、inode
+を解放するには、 \fIecho 3 > /proc/sys/vm/drop_caches\fP とする。
+
+この操作は非破壊的な操作で、ダーティな (dirty) オブジェクトは 解放されないので、この操作を行う際は最初に \fBsync\fP(8)
+を実行しておくべきである。
+.TP
+\fI/proc/sys/vm/legacy_va_layout\fP (Linux 2.6.9 以降)
+.\" The following is from Documentation/filesystems/proc.txt
+0 以外の場合、新しい 32ビットメモリマッピング配置が無効になり、 カーネルは全てのプロセスに対して従来の (カーネル 2.4 の) 配置方法を
+使用する。
+.TP
+\fI/proc/sys/vm/memory_failure_early_kill\fP (Linux 2.6.32 以降)
+.\" The following is based on the text in Documentation/sysctl/vm.txt
+このファイルは、カーネルが処理できない訂正不能なメモリエラー (通常はメモリモジュールでの 2 ビットエラー)
+がバックグラウンドでハードウェアにより検出された際に、プロセスをどのように kill するかを制御する。
+(ページの有効なコピーがディスク上にも存在するなど)
+いくつかの場面では、カーネルはアプリケーションに影響を与えずに透過的に故障を処理する。しかし、データの最新のコピーが他にはない場合には、データ破壊が波及するのを防ぐため、カーネルはプロセスを
+kill する。
+
+このファイルは以下のいずれかの値を持つ。
+.RS
+.IP 1: 4
+データ破壊が検出されるとすぐに、故障が検出され復元できないページ (corrupted\-and\-not\-reloadable page)
+をマップしている全てのプロセスを kill する。この機能は、(カーネル内部で割り当てられたデータやスワップのキャッシュなど)
+少数のいくつかのタイプのページではサポートされていないが、大半のユーザページではこの機能は働く。
+.IP 0: 4
+データ破壊が検出されたページの全てのプロセスからの unmap のみを行い、そのページにアクセスしようとしたプロセスのみを kill する。
+.RE
+.IP
+この kill は \fIsi_code\fP に \fBBUS_MCEERR_AO\fP を設定した \fBSIGBUS\fP
+シグナルを使って行われる。プロセス側では必要であればこのシグナルを処理することができる。詳細は \fBsigaction\fP(2) を参照。
+
+この機能は、高度なマシンチェック機構を持ったアーキテクチャ/プラットフォームにおいてのみ有効であり、ハードウェア機能にも依存している。
+
+アプリケーションは \fBprctl\fP(2) の \fBPR_MCE_KILL\fP 操作を使って個別に
+\fImemory_failure_early_kill\fP の設定を上書きすることができる。
+.IP
+カーネルの設定で \fBCONFIG_MEMORY_FAILURE\fP が有効になっている場合にのみ
+存在する。
+.TP
+\fI/proc/sys/vm/memory_failure_recovery\fP (Linux 2.6.32 以降)
+.\" The following is based on the text in Documentation/sysctl/vm.txt
+メモリ故障回復 (memory failure recovery) を有効にする
+ (プラットフォームがサポートしている場合)
+.RS
+.IP 1: 4
+回復を試みる。
+.IP 0: 4
+メモリ故障時には常に panic を起こす。
+.RE
+.IP
+カーネルの設定で \fBCONFIG_MEMORY_FAILURE\fP が有効になっている場合にのみ
+存在する。
+.TP
+\fI/proc/sys/vm/oom_dump_tasks\fP (Linux 2.6.25 以降)
+.\" The following is from Documentation/sysctl/vm.txt
+カーネルが OOM\-killing を実行する際に、システム全体のタスク・ダンプ (カーネルスレッドを除く) を生成するかを制御する。
+ダンプには、タスク (スレッド、プロセス) 毎に以下の情報が出力される: スレッド ID、実ユーザ ID、スレッドグループ ID (プロセス ID)、
+仮想メモリサイズ、Resident Set Size (実メモリ上に存在するページサイズ)、 タスクがスケジューリングされた CPU、 oom_adj
+スコア (\fI/proc/[pid]/oom_adj\fP の説明を参照)、コマンド名。 このダンプ情報は、なぜ OOM\-killer
+が起動されたかを知り、 その原因となったならず者のタスクを特定するのに役に立つ。
+
+このファイルの内容が値 0 の場合、ダンプ情報の出力は行われない。 タスクが何千もある非常に巨大なシステムでは、
+各々のタスクについてメモリ状態をダンプするのは適切でないかもしれない。 そのようなシステムでは、ダンプ情報が必要でもないときに メモリ不足 (OOM)
+の状況で性能面の不利益が起こらないようにすべきだろう。
+
+このファイルの内容が 0 以外の場合、 OOM\-killer が実際にメモリを占有したタスクを kill する度に ダンプ情報が出力される。
+
+デフォルト値は 0 である。
+.TP
+\fI/proc/sys/vm/oom_kill_allocating_task\fP (Linux 2.6.24 以降)
+.\" The following is from Documentation/sysctl/vm.txt
+このファイルは、メモリ不足 (OOM) の状況が起こった際に、 メモリ不足のきっかけとなったタスクを kill するかどうかを制御する。
+
+このファイルが 0 に設定された場合、 OOM\-killer はタスクリスト全体をスキャンし、経験則に基づき kill するタスクを選択する。
+通常は、kill した場合に多くのメモリが解放できる、 ならず者のメモリ占有タスクが選択される。
+
+このファイルが 0 以外に設定された場合、 OOM\-killer はメモリ不足の状況が発生するきっかけとなったタスクを 単純に kill
+するだけである。 これにより、たいていは重い処理となるタスクリストのスキャンを回避できる。
+
+\fI/proc/sys/vm/panic_on_oom\fP が 0 以外の場合、
+\fI/proc/sys/vm/oom_kill_allocating_task\fP にどのような値が入っていたとしても、
+\fI/proc/sys/vm/panic_on_oom\fP の方が優先される。
+
+デフォルト値は 0 である。
+.TP
+\fI/proc/sys/vm/overcommit_memory\fP
+このファイルにはカーネル仮想メモリのアカウントモードが書かれている。 値は以下の通り:
+.RS
+.IP
+0: 発見的なオーバーコミット (heuristic overcommit) (これがデフォルトである)
+.br
+1: 常にオーバーコミットし、チェックしない。
+.br
+2: 常にチェックし、オーバーコミットしない。
+.RE
+.IP
+モード 0 では、 \fBMAP_NORESERVE\fP を設定して呼び出された \fBmmap\fP(2) はチェックされない。
+またデフォルトのチェックはとても脆弱で、 プロセスを "OOM\-kill" してしまうリスクを引き起こす。 Linux 2.4 では 0
+以外の値はモード 1 を意味する。 (Linux 2.6 以降で利用可能な) モード 2 では、 システム上の仮想アドレス空間の合計が (SS +
+RAM*(r/100)) に制限されている。 ここで、SS はスワップ空間のサイズ、 RAM は物理メモリのサイズ、r はファイル
+\fI/proc/sys/vm/overcommit_ratio\fP の内容である。
+.TP
+\fI/proc/sys/vm/overcommit_ratio\fP
+\fI/proc/sys/vm/overcommit_memory\fP の説明を参照すること。
+.TP
+\fI/proc/sys/vm/panic_on_oom\fP (Linux 2.6.18 以降)
+.\" The following is adapted from Documentation/sysctl/vm.txt
+このファイルは、メモリ不足時にカーネルパニックを 起こすか起こさないかを制御する。
+
+このファイルに値 0 を設定すると、 カーネルの OOM\-killer がならず者のプロセスを kill する。 普通は、OOM\-killer
+がならず者のプロセスを kill することができ、 システムは何とか動き続けることができる。
+
+このファイルに値 1 を設定すると、 メモリ不足の状況が発生すると、カーネルは普通はパニックする。 しかしながら、プロセスが メモリポリシー
+(\fBmbind\fP(2) の \fBMPOL_BIND\fP) や cpusets (\fBcpuset\fP(7))
+を使って特定のノードへのメモリ割り当てを制限していて、 それらのノードでメモリ枯渇状態に至った場合は、 一つのプロセスが OOM\-killer により
+kill されるだけかもしれない。 この場合には、カーネルパニックは発生しない。 なぜなら、他のノードのメモリには空きがあるかもしれず、
+したがって、システム全体としてはメモリ不足の状況にまだ達していないかも しれないからである。
+
+このファイルに値 2 を設定すると、 メモリ不足の状況が発生するとカーネルは常にパニックを起こす。
+
+デフォルト値は 0 である。 1 と 2 はクラスタリングのフェイルオーバー用である。 フェイルオーバーの方針に応じてどちらかの値を選択すること。
+.TP
+\fI/proc/sys/vm/swappiness\fP
+.\" The following is from Documentation/sysctl/vm.txt
+このファイルの値により、カーネルがどの程度激しくメモリページの スワップを行う
+かが制御される。 大きな値ほどスワップが激しくなり、小さい値ほど激しくなくなる。
+デフォルト値は 60 である。
+.TP
+\fI/proc/sysrq\-trigger\fP (Linux 2.4.21 以降)
+このファイルに文字 character を書き込むと、 キーボードから ALT\-SysRq\-<character> を入力した場合と
+同じ SysRq 関数が起動される (\fI/proc/sys/kernel/sysrq\fP の説明を参照)。 通常、このファイルへ書き込みができるのは
+\fIroot\fP だけである。詳細については、カーネルソースファイルの \fIDocumentation/sysrq.txt\fP を参照のこと。
+.TP
+\fI/proc/sysvipc\fP
+疑似ファイル \fImsg\fP, \fIsem\fP, \fIshm\fP を含むサブディレクトリ。 これらのファイルは、現在システム上に存在する System V
+プロセス間通信 (Interprocess Communication, IPC) オブジェクト (それぞれ: メッセージキュー、セマフォ、共有メモリ)
+のリストであり、 \fBipcs\fP(1) で取得できる情報と同じものを提供する。 これらのファイルにはヘッダがあり、理解しやすいように (1 行につき
+1 個の IPC オブジェクトの形式で) フォーマットされている。 \fBsvipc\fP(7)
+にはこれらのファイルから分かる情報の詳細な背景が書かれている。
+.TP
+\fI/proc/tty\fP
+疑似ファイルを含むサブディレクトリ。 tty ドライバとライン設定 (line discipline) の書かれた サブディレクトリも含まれる。
+.TP
+\fI/proc/uptime\fP
+このファイルは システム起動時から経過した時間 (秒) と アイドル (idle) しているプロセスが消費した時間 (秒) の 2 つの数を含む。
+.TP
+\fI/proc/version\fP
+現在稼働しているカーネルのバージョン識別子である文字列。 これには \fI/proc/sys/ostype\fP,
+\fI/proc/sys/osrelease\fP, \fI/proc/sys/version\fP の内容が含まれる。 たとえばこのように:
+.nf
+.in -2
+\f(CWLinux version 1.0.9 (quinlan@phaze) #1 Sat May 14 01:51:54 EDT 1994\fP
+.in +2
+.fi
+.\" FIXME Document /proc/timer_list
+.\" .TP
+.\" .IR /proc/timer_list " (since Linux 2.6.21)"
+.\" See the 2.6.21 Change log
+.\" FIXME Document /proc/timer_stats
+.\" .TP
+.\" .IR /proc/timer_stats " (since Linux 2.6.21)"
+.\" See the 2.6.21 Change log
+.TP
+\fI/proc/vmstat\fP (Linux 2.6 以降)
+このファイルは仮想メモリの様々な統計情報を表示する。
+.TP
+\fI/proc/zoneinfo\fP (Linux 2.6.13 以降)
+.\" FIXME more should be said about /proc/zoneinfo
+このファイルはメモリのゾーン (memory zone) に関する情報を表示する。 仮想メモリの振舞いを分析するのに役立つ。
+.SH 注意
+ほとんどの文字列 (たとえば環境変数やコマンド行) は内部表現のままなので、
+各フィールドは NULL バイト (\(aq\e0\(aq) で区切られている。だから、
+\fIod \-c\fP や \fItr "\e000" "\en"\fP を使えば、それらはより読みやすくなる。
+また \fIecho \`cat <file>\`\fP でもよい。
+
+.\" .SH ACKNOWLEDGEMENTS
+.\" The material on /proc/sys/fs and /proc/sys/kernel is closely based on
+.\" kernel source documentation files written by Rik van Riel.
+このマニュアルは不完全であり、たぶん不正確で、しばしば更新される必要がある。
+.SH 関連項目
+\fBcat\fP(1), \fBdmesg\fP(1), \fBfind\fP(1), \fBfree\fP(1), \fBps\fP(1), \fBtr\fP(1),
+\fBuptime\fP(1), \fBchroot\fP(2), \fBmmap\fP(2), \fBreadlink\fP(2), \fBsyslog\fP(2),
+\fBslabinfo\fP(5), \fBhier\fP(7), \fBtime\fP(7), \fBarp\fP(8), \fBhdparm\fP(8),
+\fBifconfig\fP(8), \fBinit\fP(8), \fBlsmod\fP(8), \fBlspci\fP(8), \fBmount\fP(8),
+\fBnetstat\fP(8), \fBprocinfo\fP(8), \fBroute\fP(8)
+.br
+カーネルのソースファイル: \fIDocumentation/filesystems/proc.txt\fP,
+\fIDocumentation/sysctl/vm.txt\fP
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.41 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
.\"
非常に低い優先度でのジョブの実行を目的としたものである (非常に低い優先度とは、ポリシー \fBSCHED_OTHER\fP か \fBSCHED_BATCH\fP
での nice 値 +19 よりさらに低い優先度である)。
-.SS "Resetting scheduling policy for child processes"
-Since Linux 2.6.32, the \fBSCHED_RESET_ON_FORK\fP flag can be ORed in \fIpolicy\fP
-when calling \fBsched_setscheduler\fP(). As a result of including this flag,
-children created by \fBfork\fP(2) do not inherit privileged scheduling
-policies. This feature is intended for media\-playback applications, and can
-be used to prevent applications evading the \fBRLIMIT_RTTIME\fP resource limit
-(see \fBgetrlimit\fP(2)) by creating multiple child processes.
+.SS 子プロセスでのスケジューリング・ポリシーのリセット
+Linux 2.6.32 以降では、 \fBsched_setscheduler\fP() を呼び出す際に \fIpolicy\fP に
+\fBSCHED_RESET_ON_FORK\fP フラグを OR で指定できる。このフラグが指定されると、 \fBfork\fP(2)
+で作成された子プロセスは特権が必要なスケジューリング・ポリシーを継承しない。この機能はメディア再生を行うアプリケーションを想定して作られ、この機能を使うことで、アプリケーションが複数の子プロセスを作成することで
+\fBRLIMIT_RTTIME\fP リソース上限 (\fBgetrlimit\fP(2) 参照) を回避するのを防ぐことができる。
-More precisely, if the \fBSCHED_RESET_ON_FORK\fP flag is specified, the
-following rules apply for subsequently created children:
+より正確には、 \fBSCHED_RESET_ON_FORK\fP フラグが指定された場合、それ以降に作成される子プロセスに以下のルールが適用される。
.IP * 3
-If the calling process has a scheduling policy of \fBSCHED_FIFO\fP or
-\fBSCHED_RR\fP, the policy is reset to \fBSCHED_OTHER\fP in child processes.
+呼び出したプロセスのスケジューリング・ポリシーが \fBSCHED_FIFO\fP か \fBSCHED_RR\fP の場合、子プロセスのポリシーは
+\fBSCHED_OTHER\fP にリセットされる。
.IP *
-If the calling process has a negative nice value, the nice value is reset to
-zero in child processes.
+子プロセスが負の nice 値を持っている場合、子プロセスの nice 値は 0 にリセットされる。
.PP
-After the \fBSCHED_RESET_ON_FORK\fP flag has been enabled, it can only be reset
-if the process has the \fBCAP_SYS_NICE\fP capability. This flag is disabled in
-child processes created by \fBfork\fP(2).
+一度 \fBSCHED_RESET_ON_FORK\fP フラグが有効にされた後は、このフラグをリセットできるのは、プロセスが \fBCAP_SYS_NICE\fP
+ケーパビリティを持つ場合だけである。このフラグは \fBfork\fP(2) で作成された子プロセスでは無効になる。
.\"
-The \fBSCHED_RESET_ON_FORK\fP flag is visible in the policy value returned by
-\fBsched_getscheduler\fP()
+\fBSCHED_RESET_ON_FORK\fP フラグは、 \fBsched_getscheduler\fP() が返すポリシー値で参照できる。
.SS 特権とリソース制限
2.6.12 より前のバージョンの Linux カーネルでは、 特権プロセス (\fBCAP_SYS_NICE\fP ケーパビリティを持つプロセス) だけが
0 以外の静的優先度を設定する (すなわち、リアルタイム・スケジューリング・ポリシーを設定する) ことができる。 非特権プロセスができる変更は
ID が変更対象のプロセスの実ユーザ ID か実効ユーザ ID と 一致している場合に限られる。
.IP *
.\" commit c02aa73b1d18e43cfd79c2f193b225e84ca497c8
-Special rules apply for the \fBSCHED_IDLE\fP. In Linux kernels before 2.6.39,
-an unprivileged process operating under this policy cannot change its
-policy, regardless of the value of its \fBRLIMIT_RTPRIO\fP resource limit. In
-Linux kernels since 2.6.39, an unprivileged process can switch to either the
-\fBSCHED_BATCH\fP or the \fBSCHED_NORMAL\fP policy so long as its nice value falls
-within the range permitted by its \fBRLIMIT_NICE\fP resource limit (see
-\fBgetrlimit\fP(2)).
+\fBSCHED_IDLE\fP の場合には特別なルールが適用される。 2.6.39 より前の Linux
+カーネルでは、このポリシーで動作する非特権プロセスは、 \fBRLIMIT_RTPRIO\fP
+リソース上限の値に関わらず、自分のポリシーを変更することができない。 2.6.39 以降の Linux カーネルでは、非特権プロセスは、自分の nice
+値が \fBRLIMIT_NICE\fP リソース上限 (\fBgetrlimit\fP(2) 参照)
+で許可された範囲である限りは、自分のスケジューリング・ポリシーを \fBSCHED_BATCH\fP か \fBSCHED_NORMAL\fP
+ポリシーに切り替えることができる。
.PP
特権プロセス (\fBCAP_SYS_NICE\fP ケーパビリティを持つプロセス) の場合、 \fBRLIMIT_RTPRIO\fP の制限は無視される;
古いカーネルと同じように、スケジューリング・ポリシーと優先度に対し 任意の変更を行うことができる。 \fBRLIMIT_RTPRIO\fP
カーネル・ソース内のファイル \fIDocumentation/scheduler/sched\-rt\-group.txt\fP (カーネル 2.6.25
以降)
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.40 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.41 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。
--- /dev/null
+.\" Copyright (C) 2011, Eric Biederman <ebiederm@xmission.com>
+.\" Licensed under the GPLv2
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SETNS 2 2012\-05\-04 Linux "Linux Programmer's Manual"
+.SH 名前
+setns \- スレッドに名前空間を関連付けしなおす
+.SH 書式
+.nf
+\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */
+\fB#include <sched.h>\fP
+.sp
+\fBint setns(int \fP\fIfd\fP\fB, int \fP\fInstype\fP\fB);\fP
+.fi
+.SH 説明
+名前空間を参照するファイルディスクリプタを指定すると、
+呼び出したスレッドにその名前空間を関連付けしなおす。
+
+\fIfd\fP 引き数は、 \fI/proc/[pid]/ns/\fP ディレクトリ内の名前空間エントリ
+のいずれかを参照するファイルディスクリプタである。
+\fI/proc/[pid]/ns/\fP の詳細は \fBproc\fP(5) を参照。
+\fInstype\fP 引き数で指定された制限の範囲内で、
+呼び出したスレッドに \fIfd\fP に対応する名前空間を関連付けしなおす。
+
+\fInstype\fP 引き数は、呼び出したスレッドがどのタイプの名前空間を
+関連付けしなおすことができるかを指定する。
+この引き数には以下のいずれかの値を指定できる。
+.TP
+\fB0\fP
+どのタイプの名前空間も関連付けることができる。
+.TP
+\fBCLONE_NEWIPC\fP
+\fIfd\fP は IPC 名前空間を参照していなければならない。
+.TP
+\fBCLONE_NEWNET\fP
+\fIfd\fP はネットワーク名前空間を参照していなければならない。
+.TP
+\fBCLONE_NEWUTS\fP
+\fIfd\fP は UTS 名前空間を参照していなければならない。
+.PP
+呼び出し側が \fIfd\fP がどのタイプの名前空間を参照しているかを知っている
+(もしくは気にする必要がない) 場合には、 \fInstype\fP に 0 を指定すれば十分
+である。呼び出し側が \fIfd\fP がどのタイプの名前空間を参照しているかを
+知っておらず、かつ、特定のタイプの名前空間であることを保証したい場合、
+\fInstype\fP に 0 以外の値を指定するとよい。 (ファイルディスクリプタが別の
+プロセスによりオープンされ、例えば、UNIX ドメインソケット経由で呼び出し
+側に渡された場合などでは、呼び出し側が \fIfd\fP がどのタイプの名前空間を
+参照しているかを知らない可能性がある。)
+.SH 返り値
+成功すると \fIsetns\fP() は 0 を返す。
+失敗すると、 \-1 が返され、 \fIerrno\fP にエラーを示す値が設定される。
+.SH エラー
+.TP
+\fBEBADF\fP
+\fIfd\fP が有効なファイルディスクリプタではない。
+.TP
+\fBEINVAL\fP
+\fIfd\fP が \fInstype\fP で指定されたタイプと一致しない名前空間を参照している。
+または、指定された名前空間をそのスレッドに関連付けし直す際に問題
+があった。
+.TP
+\fBENOMEM\fP
+指定された名前空間に変更するのに必要なメモリが割り当てられない。
+.TP
+\fBEPERM\fP
+呼び出したスレッドがこの操作を行うのに必要な特権 (\fBCAP_SYS_ADMIN\fP) を
+持っていなかった。
+.SH バージョン
+\fBsetns\fP() システムコールはカーネル 3.0 で Linux に初めて登場した。
+ライブラリによるサポートは glibc バージョン 2.14 を追加された。
+.SH 準拠
+\fBsetns\fP() システムコールは Linux 固有である。
+.SH 注意
+新しいスレッドが \fBclone\fP(2) を使って作成された際に共有できる全ての属性を、
+\fBsetns\fP() を使って変更できるわけではない。
+.SH バグ
+現在のところ、 PID 名前空間とマウント名前空間はサポートされていない
+(\fBclone\fP(2) の \fBCLONE_NEWPID\fP と \fBCLONE_NEWNS\fP の説明を参照)。
+.SH 関連項目
+\fBclone\fP(2), \fBfork\fP(2), \fBvfork\fP(2), \fBproc\fP(5), \fBunix\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.41 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
れたままになる。スレッドがキャンセルを有効にしていた場合、
cancelability type によって、いつキャンセルが発生するかが決まる。
-スレッドの cancellation type は \fBpthread_setcanceltype\fP(3) で設定され、
-\fIasynchronous\fP か \fIdeferred\fP のいずれかとなる(\fIdeferred\fP が新しいスレッド
-のデフォルト値である)。
-非同期キャンセル (asynchronous cancelability) は、そのスレッドはいつでも
-ã\82ã\83£ã\83³ã\82»ã\83«ã\81\95ã\82\8cã\82\8bã\81\93ã\81¨ã\82\92æ\84\8få\91³ã\81\99ã\82\8b (é\80\9a常ã\81¯ã\81\99ã\81\90ã\81«ã\82ã\83£ã\83³ã\82»ã\83«ã\81\95ã\82\8cã\82\8bã\81\8cã\80\81ã\82·ã\82¹ã\83\86ã\83 ã\81\8c
-ã\81\9dã\81®ã\81\93ã\81¨ã\82\92ä¿\9d証ã\81\97ã\81¦ã\81\84ã\82\8bã\82\8fã\81\91ã\81§ã\81¯ã\81ªã\81\84)ã\80\82
-遅延キャンセル (deferred cancelability) では、そのスレッドが \fIcancellation
-point\fP となっている関数を次に呼び出すまでキャンセルが遅延される。
-取り消しポイント (cancellation point) に設定されていたり設定したりできる
-関数のリストは \fIpthreads\fP(7) に記載している。
+スレッドのキャンセル種別 (cancelability type) は
+\fBpthread_setcanceltype\fP(3) で設定され、\fIasynchronous\fP か \fIdeferred\fP
+ã\81®ã\81\84ã\81\9aã\82\8cã\81\8bã\81¨ã\81ªã\82\8b(\fIdeferred\fP ã\81\8cæ\96°ã\81\97ã\81\84ã\82¹ã\83¬ã\83\83ã\83\89ã\81®ã\83\87ã\83\95ã\82©ã\83«ã\83\88å\80¤ã\81§ã\81\82ã\82\8b)ã\80\82
+非同期キャンセル (asynchronous cancelability) は、そのスレッドはいつで
+ã\82\82ã\82ã\83£ã\83³ã\82»ã\83«ã\81\95ã\82\8cã\82\8bã\81\93ã\81¨ã\82\92æ\84\8få\91³ã\81\99ã\82\8b (é\80\9a常ã\81¯ã\81\99ã\81\90ã\81«ã\82ã\83£ã\83³ã\82»ã\83«ã\81\95ã\82\8cã\82\8bã\81\8cã\80\81
+ã\82·ã\82¹ã\83\86ã\83 ã\81\8cã\81\9dã\81®ã\81\93ã\81¨ã\82\92ä¿\9d証ã\81\97ã\81¦ã\81\84ã\82\8bã\82\8fã\81\91ã\81§ã\81¯ã\81ªã\81\84)ã\80\82é\81\85延ã\82ã\83£ã\83³ã\82»ã\83«
+(deferred cancelability) では、そのスレッドが \fI取り消しポイント
+(cancellation point)\fP となっている関数を次に呼び出すまでキャンセルが
+遅延される。取り消しポイントに設定されていたり設定
+したりできる関数のリストは \fIpthreads\fP(7) に記載している。
キャンセル要求が実行されると、
\fIthread\fP では以下のステップが (この順序で) 行われる。
--- /dev/null
+.\" Copyright (c) 2008 Linux Foundation, written by Michael Kerrisk
+.\" <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date. The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein. The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH PTHREAD_CLEANUP_PUSH 3 2008\-11\-24 Linux "Linux Programmer's Manual"
+.SH 名前
+pthread_cleanup_push, pthread_cleanup_pop \- スレッドの
+キャンセルクリーンアップハンドラの push/pop を行う
+.SH 書式
+.nf
+\fB#include <pthread.h>\fP
+
+\fBvoid pthread_cleanup_push(void (*\fP\fIroutine\fP\fB)(void *),\fP
+\fB void *\fP\fIarg\fP\fB);\fP
+\fBvoid pthread_cleanup_pop(int \fP\fIexecute\fP\fB);\fP
+.sp
+\fI\-pthread\fP でコンパイルしてリンクする。
+.fi
+.SH 説明
+これらの関数は、呼び出したスレッドのスレッドキャンセル時のクリーンアッ
+プハンドラのスタックの操作を行う。クリーンアップハンドラは、スレッドが
+キャンセルされた場合 (や以下で説明する他の種々の状況において) 自動的に
+実行される関数である。例えば、mutex のロック解除を行い、プロセス内の
+他のスレッドが利用できるようにする関数などが考えられる。
+
+\fBpthread_cleanup_push\fP() 関数は、 \fIroutine\fP をクリーンアップ
+ハンドラのスタックの一番上にプッシュする。 \fIroutine\fP が後で
+起動される際には、 \fIarg\fP が関数の引き数と渡される。
+
+\fBpthread_cleanup_pop\fP() 関数は、クリーンアップハンドラの
+スタックの一番上のルーチンを削除する。
+\fIexecute\fP が 0 以外の場合にはそのルーチンを追加で実行する。
+
+キャンセルクリーンアップハンドラは、以下に示す場合に
+スタックから取り出され実行される。
+.IP 1. 3
+スレッドがキャンセルされた際に、スタックに登録された全てのクリーン
+アップハンドラが取り出されて、実行される。クリーンアップハンドラの
+実行は、スタックに登録されたのと逆の順序で行われる。
+.IP 2.
+スレッドが \fBpthread_exit\fP(3) を呼び出して終了する際に、全てのクリーン
+アップハンドラが上の項目で述べたのと同様に実行される。
+(スレッドがスレッド開始関数からの \fIreturn\fP の実行により終了する場合に
+は、クリーンアップハンドラは\fI呼び出されない\fP。)
+.IP 3.
+スレッドが 0 以外の \fIexecute\fP 引き数で \fBpthread_cleanup_pop\fP() を
+呼び出した際に、スタックの一番上のクリーンアップハンドラが取り出されて
+実行される。
+.PP
+POSIX.1 では、 \fBpthread_cleanup_push\fP() と \fBpthread_cleanup_pop\fP() を
+それぞれ \(aq\fB{\fP\(aq と \(aq\fB}\fP\(aq を含むテキストに展開するマクロと
+して実装することを許容している。
+このため、呼び出し側では、これらの関数の呼び出しが同じ関数の中で対と
+なり、かつ文法的に同じネストレベル (nesting level) になることを保証
+しなければならない。 (言い換えると、クリーンアップハンドラは、コード
+の特定のセクションの実行の中でのみ設定するものであると言える。)
+
+\fBlongjmp\fP(3) (\fBsiglongjmp\fP(3)) の呼び出しは、
+\fBpthread_cleanup_push\fP() や \fBpthread_cleanup_pop\fP() の呼び出しが対と
+なる呼び出しがない状態で行われた場合には、どのような結果になるかは不定
+である。これは jump バッファは \fBsetjmp\fP(3) (\fBsigsetjmp\fP(3)) により設
+定されるからである。同様に、クリーンアップハンドラ内からの
+\fBlongjmp\fP(3) (\fBsiglongjmp\fP(3)) の呼び出しも、jump バッファがハンドラ
+内で \fBsetjmp\fP(3) (\fBsigsetjmp\fP(3)) で設定されていない限り、どのような
+結果になるかは不定である。
+.SH 返り値
+これらの関数は値を返さない。
+.SH エラー
+.\" SH VERSIONS
+.\" Available since glibc 2.0
+エラーはない。
+.SH 準拠
+POSIX.1\-2001.
+.SH 注意
+Linux では、関数 \fBpthread_cleanup_push\fP() と \fBpthread_cleanup_pop\fP()
+は、それぞれ \(aq\fB{\fP\(aq と \(aq\fB}\fP\(aq を含むテキストに展開する
+マクロとして実装されている。このことは、これらの関数を対で呼び出した
+スコープ内で宣言された変数は、そのスコープの中でしか参照できない
+ということを意味している。
+
+.\" The text was actually added in the 2004 TC2
+POSIX.1 には、括弧を含む \fBpthread_cleanup_push\fP() と
+\fBpthread_cleanup_pop\fP() のブロックをそのままにしたままで、
+\fIreturn\fP, \fIbreak\fP, \fIcontinue\fP, \fIgoto\fP を使った場合の影響は
+不定であると書かれている。
+移植性が必要なアプリケーションではこれを行うのは避けるべきである。
+.SH 例
+以下のプログラムは、このページで説明した関数の簡単な使用例を示すもので
+ある。このプログラムは \fBpthread_cleanup_push\fP() と
+\fBpthread_cleanup_pop\fP() で囲まれたループを実行するスレッドを作成する。
+このループではグローバル変数 \fIcnt\fP を 1 秒に 1 ずつ増やしていく。
+指定されたコマンドライン引き数の内容に基づいて、メインスレッドはもう一
+つのスレッドにキャンセル要求を送ったり、もう一つのスレッドがループを
+抜けて (\fIreturn\fP を呼び出して) 正常終了するようにグローバル変数を
+設定したりする。
+
+以下のシェルセッションでは、メインスレッドはもう一つのスレッドに
+キャンセル要求を送信する。
+
+.in +4n
+.nf
+$ \fB./a.out\fP
+New thread started
+cnt = 0
+cnt = 1
+Canceling thread
+Called clean\-up handler
+Thread was canceled; cnt = 0
+.fi
+.in
+
+上記の実行例から、スレッドがキャンセルされ、
+キャンセルクリーンアップハンドラが呼び出され、
+グローバル変数 \fIcnt\fP の値が 0 にリセットされていることが確認できる。
+
+次の実行例では、メインプログラムはグローバル変数を設定して、
+もう一つのスレッドが正常終了するようにしている。
+
+.in +4n
+.nf
+$ \fB./a.out x\fP
+New thread started
+cnt = 0
+cnt = 1
+Thread terminated normally; cnt = 2
+.fi
+.in
+
+上記では、 (\fIcleanup_pop_arg\fP が 0 なので) クリーンアップハンドラは
+実行されておらず、その結果 \fIcnt\fP の値はリセットされていないことが
+分かる。
+
+次の実行例では、メインプログラムはグローバル変数を設定して、
+もう一つのスレッドが正常終了するようにし、さらに
+\fIcleanup_pop_arg\fP に 0 以外の値を渡している。
+
+.in +4n
+.nf
+$ \fB./a.out x 1\fP
+New thread started
+cnt = 0
+cnt = 1
+Called clean\-up handler
+Thread terminated normally; cnt = 0
+.fi
+.in
+
+上記では、スレッドはキャンセルされていないが、クリーンアップハンドラが
+実行されていないことが分かる。これは \fBpthread_cleanup_pop\fP() の引き数
+に 0 以外を渡したからである。
+.SS プログラムのソース
+\&
+.nf
+#include <pthread.h>
+#include <sys/types.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+
+#define handle_error_en(en, msg) \e
+ do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)
+
+static int done = 0;
+static int cleanup_pop_arg = 0;
+static int cnt = 0;
+
+static void
+cleanup_handler(void *arg)
+{
+ printf("Called clean\-up handler\en");
+ cnt = 0;
+}
+
+static void *
+thread_start(void *arg)
+{
+ time_t start, curr;
+
+ printf("New thread started\en");
+
+ pthread_cleanup_push(cleanup_handler, NULL);
+
+ curr = start = time(NULL);
+
+ while (!done) {
+ pthread_testcancel(); /* A cancellation point */
+ if (curr < time(NULL)) {
+ curr = time(NULL);
+ printf("cnt = %d\en", cnt); /* A cancellation point */
+ cnt++;
+ }
+ }
+
+ pthread_cleanup_pop(cleanup_pop_arg);
+ return NULL;
+}
+
+int
+main(int argc, char *argv[])
+{
+ pthread_t thr;
+ int s;
+ void *res;
+
+ s = pthread_create(&thr, NULL, thread_start, NULL);
+ if (s != 0)
+ handle_error_en(s, "pthread_create");
+
+ sleep(2); /* Allow new thread to run a while */
+
+ if (argc > 1) {
+ if (argc > 2)
+ cleanup_pop_arg = atoi(argv[2]);
+ done = 1;
+
+ } else {
+ printf("Canceling thread\en");
+ s = pthread_cancel(thr);
+ if (s != 0)
+ handle_error_en(s, "pthread_cancel");
+ }
+
+ s = pthread_join(thr, &res);
+ if (s != 0)
+ handle_error_en(s, "pthread_join");
+
+ if (res == PTHREAD_CANCELED)
+ printf("Thread was canceled; cnt = %d\en", cnt);
+ else
+ printf("Thread terminated normally; cnt = %d\en", cnt);
+ exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBpthread_cancel\fP(3), \fBpthread_cleanup_push_defer_np\fP(3),
+\fBpthread_setcancelstate\fP(3), \fBpthread_testcancel\fP(3), \fBpthreads\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.41 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
--- /dev/null
+.\" Copyright (c) 2008 Linux Foundation, written by Michael Kerrisk
+.\" <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date. The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein. The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH PTHREAD_CLEANUP_PUSH_DEFER_NP 3 2008\-12\-04 Linux "Linux Programmer's Manual"
+.SH 名前
+pthread_cleanup_push_defer_np, pthread_cleanup_pop_restore_np \-
+cancelability type を保持したままでスレッドのキャンセルクリーンアップハンドラの push/pop を行う
+.SH 書式
+.nf
+\fB#include <pthread.h>\fP
+
+\fBvoid pthread_cleanup_push_defer_np(void (*\fP\fIroutine\fP\fB)(void *),\fP
+\fB void *\fP\fIarg\fP\fB);\fP
+\fBvoid pthread_cleanup_pop_restore_np(int \fP\fIexecute\fP\fB);\fP
+.fi
+.sp
+\fI\-pthread\fP を付けてコンパイルとリンクを行う。
+.SH 説明
+これらの関数は \fBpthread_cleanup_push\fP(3) と \fBpthread_cleanup_pop\fP(3)
+と同じだが、このページで説明する点が異なる。
+
+\fBpthread_cleanup_push\fP(3) と同様に、
+\fBpthread_cleanup_push_defer_np\fP() は \fIroutine\fP をそのスレッドの
+クリーンアップハンドラのスタックに追加する。これに加えて、
+\fBpthread_cleanup_push_defer_np\fP() は現在の cancelability type も
+保存し、cancelability type は "deferred" に設定する
+(\fBpthread_setcanceltype\fP(3) 参照)。
+これにより、この関数が呼び出される前のスレッドの cancelability type が
+"asynchronous" であったとしても、キャンセルクリーンアップが行われること
+が保証される。
+
+\fBpthread_cleanup_pop\fP(3) と同様に、
+\fBpthread_cleanup_pop_restore_np\fP() はそのスレッドのキャンセル
+クリーンアップハンドラのスタックから一番上にあるクリーンアップハンドラ
+を取り出す。これに加えて、そのスレッドの cancelability type を、対応
+する \fBpthread_cleanup_push_defer_np\fP() が呼ばれた時点の値に戻す。
+
+呼び出し側では、これらの関数の呼び出しが同じ関数の中で対となり、かつ
+文法的に同じネストレベル (nesting level) になることを保証しなければ
+ならない。 \fBpthread_cleanup_push\fP(3) で説明されている他の制限も
+適用される。
+
+以下の一連の呼び出し
+
+.in +4n
+.nf
+pthread_cleanup_push_defer_np(routine, arg);
+pthread_cleanup_pop_restore_np(execute);
+.fi
+.in
+
+と以下は等価である (但し、上の方がより簡潔で効率的である)。
+
+.\" As far as I can see, LinuxThreads reverses the two substeps
+.\" in the push and pop below.
+.in +4n
+.nf
+int oldtype;
+
+pthread_cleanup_push(routine, arg);
+pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &oldtype);
+\&...
+pthread_setcanceltype(oldtype, NULL);
+pthread_cleanup_pop(execute);
+.fi
+.in
+.\" SH VERSIONS
+.\" Available since glibc 2.0
+.SH 準拠
+これらの関数は非標準の GNU による拡張である。
+そのため、名前に "_np" (nonportable; 移植性がない) という接尾辞が
+付いている。
+.SH 関連項目
+\fBpthread_cancel\fP(3), \fBpthread_cleanup_push\fP(3),
+\fBpthread_setcancelstate\fP(3), \fBpthread_testcancel\fP(3), \fBpthreads\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.41 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
LinuxThreads スレッド実装においてのみ効果がある。
LinuxThreads スレッド実装では、この関数を呼び出すと
アプリケーション内の全てのスレッドがすぐに終了される。
-終了対象のスレッドの cancellation state と cancellation type は
+終了対象のスレッドの cancelability state と cancelability type は
無視され、それらのスレッドのクリーンアップハンドラは呼び出されない。
.SH 準拠
この関数は非標準の GNU による拡張である。
.TH PTHREAD_SETCANCELSTATE 3 2008\-11\-24 Linux "Linux Programmer's Manual"
.SH 名前
pthread_setcancelstate, pthread_setcanceltype \- cancelability state と
-type を設定する
+cancelability type を設定する
.SH 書式
.nf
\fB#include <pthread.h>\fP
.fi
.SH 説明
\fBpthread_setcancelstate\fP() は、呼び出したスレッドの
-cancelability state に \fIstate\fP で指定された値を設定する。
-変更前のスレッドの cancelability state は
+cancelability state に \fIstate\fP で指定された
+å\80¤ã\82\92è¨å®\9aã\81\99ã\82\8bã\80\82å¤\89æ\9b´å\89\8dã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81® cancelability state ã\81¯
\fIoldstate\fP が指すバッファで返される。
\fIstate\fP 引き数には以下の値のいずれか一つを指定しなければならない。
.TP
\fBPTHREAD_CANCEL_ENABLE\fP
スレッドは取り消し可能 (cancelable) である。
-これが全ての新しく作成されるスレッドでのデフォルトの cancelability
-state である。これには最初のスレッドも含まれる。
+これが全ての新しく作成されるスレッドでのデフォルトの
+cancelability state である。これには最初のスレッドも含まれる。
スレッドの cancelability type により、取り消し可能なスレッドが
取り消し要求にいつ反応するかが決まる。
.TP
\fBPTHREAD_CANCEL_DEFERRED\fP
そのスレッドが次に取り消しポイント (cancellation point) の関数を
呼び出すまで取り消し要求が遅延される。これが全ての新しく作成される
-スレッドでのデフォルトの cancellation type である。
+スレッドでのデフォルトの cancelability type である。
これには最初のスレッドも含まれる。
.TP
\fBPTHREAD_CANCEL_ASYNCHRONOUS\fP
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH PROC 5 2012\-02\-08 Linux "Linux Programmer's Manual"
+.TH PROC 5 2012\-05\-03 Linux "Linux Programmer's Manual"
.SH 名前
proc \- プロセスの情報を含む擬似ファイルシステム
.SH 説明
各サブディレクトリは、以下の擬似ファイルとディレクトリを含む。
.TP
\fI/proc/[number]/auxv\fP (カーネル 2.6.0\-test7 以降)
-.\" FIXME Describe /proc/[pid]/cgroup and
-.\" /proc/[pid]/task/[tid]/cgroup
-.\" Info in Documentation/cgroups.txt
-.\" Added in 2.6.24
-.\" CONFIG_CGROUPS
+実行時にプロセスに渡された ELF インタプリタ情報が格納されている。 個々のエントリは、\fIunsigned long\fP 型の ID 1 個に
+\fIunsigned long\fP 型の値 1 個が続くフォーマットである。 最後のエントリには 0 が 2 個入っている。
+.TP
+\fI/proc/[pid]/cgroup\fP (Linux 2.6.24 以降)
+.\" Info in Documentation/cgroups/cgroups.txt
+このファイルは、プロセスやタスクが所属するコントロールグループを示す。
+cgroup の各階層についてエントリーが 1 つあり、
+各エントリーは以下の形式のコロン区切りのフィールドで構成される。
+.nf
+
+\f(CW 5:cpuacct,cpu,cpuset:/daemons\fP
+.fi
+.IP
+コロン区切りの各フィールドは、左から右の順で、以下の意味を持つ。
+.RS 11
+.IP 1. 3
+階層 ID 番号
+.IP 2.
+その階層に関連付けたサブシステムの集合
+.IP 3.
+プロセスが所属する階層内のコントロールグループ
+.RE
+.IP
.\"
.\" FIXME Describe /proc/[pid]/clear_refs
.\" Added in 2.6.22
.\" "Clears page referenced bits shown in smaps output"
.\" write-only
.\" CONFIG_PROC_PAGE_MONITOR
-実行時にプロセスに渡された ELF インタプリタ情報が格納されている。 個々のエントリは、\fIunsigned long\fP 型の ID 1 個に
-\fIunsigned long\fP 型の値 1 個が続くフォーマットである。 最後のエントリには 0 が 2 個入っている。
+このファイルが存在するのは、カーネルのコンフィギュレーション・オプショ
+ン \fBCONFIG_CGROUPS\fP を有効にした場合だけである。
.TP
\fI/proc/[pid]/cmdline\fP
.\" In 2.3.26, this also used to be true if the process was swapped out.
.TP
\fI/proc/[pid]/ns/\fP (Linux 3.0 以降)
.\" See commit 6b4e306aa3dc94a0545eb9279475b1ab6209a31f
-This is a subdirectory containing one entry for each namespace that supports
-being manipulated by \fBsetns\fP(2). For information about namespaces, see
-\fBclone\fP(2).
+このサブディレクトリには、名前空間毎に 1 エントリが置かれる。
+各エントリは \fBsetns\fP(2) による操作をサポートしている。
+名前空間に関する情報は \fBclone\fP(2) を参照。
.TP
\fI/proc/[pid]/ns/ipc\fP (Linux 3.0 以降)
-Bind mounting this file (see \fBmount\fP(2)) to somewhere else in the
-filesystem keeps the IPC namespace of the process specified by \fIpid\fP alive
-even if all processes currently in the namespace terminate.
+このファイルをファイルシステムのどこか他の場所に bind mount することで (\fBmount\fP(2)
+参照)、現在この名前空間にいる全てのプロセスが終了したとしても、 \fIpid\fP で指定されたプロセスの IPC 名前空間は有効な状態で保たれる。
-Opening this file returns a file handle for the IPC namespace of the process
-specified by \fIpid\fP. As long as this file descriptor remains open, the IPC
-namespace will remain alive, even if all processes in the namespace
-terminate. The file descriptor can be passed to \fBsetns\fP(2).
+このファイルをオープンすると、 \fIpid\fP で指定されたプロセスの IPC
+名前空間のファイルハンドルが返される。このファイルディスクリプタがオープンされている限り、この名前空間にいる全てのプロセスが終了したとしても、この
+IPC 名前空間は有効なままとなる。このファイルディスクリプタは \fBsetns\fP(2) に渡すことができる。
.TP
\fI/proc/[pid]/ns/net\fP (Linux 3.0 以降)
-Bind mounting this file (see \fBmount\fP(2)) to somewhere else in the
-filesystem keeps the network namespace of the process specified by \fIpid\fP
-alive even if all processes in the namespace terminate.
+このファイルをファイルシステムのどこか他の場所に bind mount することで (\fBmount\fP(2)
+参照)、現在この名前空間にいる全てのプロセスが終了したとしても、 \fIpid\fP で指定されたプロセスのネットワーク名前空間は有効な状態で保たれる。
-Opening this file returns a file handle for the network namespace of the
-process specified by \fIpid\fP. As long as this file descriptor remains open,
-the network namespace will remain alive, even if all processes in the
-namespace terminate. The file descriptor can be passed to \fBsetns\fP(2).
+このファイルをオープンすると、 \fIpid\fP
+で指定されたプロセスのネットワーク名前空間のファイルハンドルが返される。このファイルディスクリプタがオープンされている限り、この名前空間にいる全てのプロセスが終了したとしても、このネットワーク名前空間は有効なままとなる。このファイルディスクリプタは
+\fBsetns\fP(2) に渡すことができる。
.TP
\fI/proc/[pid]/ns/uts\fP (Linux 3.0 以降)
-Bind mounting this file (see \fBmount\fP(2)) to somewhere else in the
-filesystem keeps the UTS namespace of the process specified by \fIpid\fP alive
-even if all processes currently in the namespace terminate.
+このファイルをファイルシステムのどこか他の場所に bind mount することで (\fBmount\fP(2)
+参照)、現在この名前空間にいる全てのプロセスが終了したとしても、 \fIpid\fP で指定されたプロセスの UTS 名前空間は有効な状態で保たれる。
-Opening this file returns a file handle for the UTS namespace of the process
-specified by \fIpid\fP. As long as this file descriptor remains open, the UTS
-namespace will remain alive, even if all processes in the namespace
-terminate. The file descriptor can be passed to \fBsetns\fP(2).
+このファイルをオープンすると、 \fIpid\fP で指定されたプロセスの UTS
+名前空間のファイルハンドルが返される。このファイルディスクリプタがオープンされている限り、この名前空間にいる全てのプロセスが終了したとしても、この
+UTS 名前空間は有効なままとなる。このファイルディスクリプタは \fBsetns\fP(2) に渡すことができる。
.TP
\fI/proc/[pid]/numa_maps\fP (Linux 2.6.14 以降)
\fBnuma\fP(7) を参照。
.IP *
\fIPid\fP: スレッド ID (\fBgettid\fP(2) 参照)。
.IP *
-\fIPPid\fP: PID of parent process.
+\fIPPid\fP: 親プロセスの PID。
.IP *
\fITracerPid\fP: このプロセスをトレースしているプロセスの PID (トレースされていない場合は 0)。
.IP *
.IP *
\fIThreads\fP: このスレッドが属するプロセスのスレッド数。
.IP *
-\fISigQ\fP: This field contains two slash\-separated numbers that relate to
-queued signals for the real user ID of this process. The first of these is
-the number of currently queued signals for this real user ID, and the second
-is the resource limit on the number of queued signals for this process (see
-the description of \fBRLIMIT_SIGPENDING\fP in \fBgetrlimit\fP(2)).
+\fISigQ\fP: このフィールドにはスラッシュで区切られた 2 つの数字が入っている。この数字はこのプロセスの実ユーザ ID
+宛にキューイングされたシグナルに関するものである。一つ目の数字は、この実ユーザ ID
+宛に現在キューイングされているシグナル数である。二つ目の数字は、このプロセス宛にキューイングされたシグナル数に関するリソース上限値である
+(\fBgetrlimit\fP(2) の \fBRLIMIT_SIGPENDING\fP の説明を参照)。
.IP *
\fISigPnd\fP, \fIShdPnd\fP: スレッド宛およびプロセス全体宛の処理待ちシグナルの数 (\fBpthreads\fP(7),
\fBsignal\fP(7) 参照)。
.br
.nf
-\f(CWecho 100000 > /proc/sys/fs/file\-max\fP
+\f(CW echo 100000 > /proc/sys/fs/file\-max\fP
.fi
\fIfile\-max\fP に書かれている値は、カーネル定数 \fBNR_OPEN\fP に制限される。
\fI/proc/sys/fs/file\-max\fP を増やした場合は、 \fI/proc/sys/fs/inode\-max\fP を新しい
\fI/proc/sys/fs/file\-max\fP の値の 3\-4 倍に増やしておくこと。 こうしないと inode を使い果たしてしまうだろう。
+
+特権プロセス (\fBCAP_SYS_ADMIN\fP) は \fIfile\-max\fP 上限を上書きできる。
.TP
\fI/proc/sys/fs/file\-nr\fP
(このファイルは読み出し専用で) 読み出すと 現在オープンされているファイルの数が得られる。 このファイルには、割り当てられているファイルハンドル数・
ディスクに書き込まれる前にオーバーフロー値に変換される。
.TP
\fI/proc/sys/fs/pipe\-max\-size\fP (Linux 2.6.35 以降)
-The value in this file defines an upper limit for raising the capacity of a
-pipe using the \fBfcntl\fP(2) \fBF_SETPIPE_SZ\fP operation. This limit applies
-only to unprivileged processes. The default value for this file is
-1,048,576. The value assigned to this file may be rounded upward, to
-reflect the value actually employed for a convenient implementation. To
-determine the rounded\-up value, display the contents of this file after
-assigning a value to it. The minimum value that can be assigned to this
-file is the system page size.
+このファイルの値により、 \fBfcntl\fP(2) の \fBF_SETPIPE_SZ\fP
+操作で増やすことができるパイプ容量の上限値が定義される。この上限は非特権プロセスにのみ適用される。このファイルのデフォルト値は 1,048,576
+である。このファイルに設定した値は切り上げられて、実装側で利用するのに都合のよい値に変更される場合がある。切り上げられた値を確認するには、値を設定した後でこのファイルの内容を表示すればよい。このファイルに設定できる最小値はシステムのページサイズである。
.TP
\fI/proc/sys/fs/suid_dumpable\fP (Linux 2.6.13 以降)
.\" The following is based on text from Documentation/sysctl/kernel.txt
.TP
\fI/proc/sys/vm/memory_failure_early_kill\fP (Linux 2.6.32 以降)
.\" The following is based on the text in Documentation/sysctl/vm.txt
-Control how to kill processes when an uncorrected memory error (typically a
-2\-bit error in a memory module) that cannot be handled by the kernel is
-detected in the background by hardware. In some cases (like the page still
-having a valid copy on disk), the kernel will handle the failure
-transparently without affecting any applications. But if there is no other
-up\-to\-date copy of the data, it will kill processes to prevent any data
-corruptions from propagating.
+このファイルは、カーネルが処理できない訂正不能なメモリエラー (通常はメモリモジュールでの 2 ビットエラー)
+がバックグラウンドでハードウェアにより検出された際に、プロセスをどのように kill するかを制御する。
+(ページの有効なコピーがディスク上にも存在するなど)
+いくつかの場面では、カーネルはアプリケーションに影響を与えずに透過的に故障を処理する。しかし、データの最新のコピーが他にはない場合には、データ破壊が波及するのを防ぐため、カーネルはプロセスを
+kill する。
このファイルは以下のいずれかの値を持つ。
.RS
.IP 1: 4
-Kill all processes that have the corrupted\-and\-not\-reloadable page mapped as
-soon as the corruption is detected. Note this is not supported for a few
-types of pages, like kernel internally allocated data or the swap cache, but
-works for the majority of user pages.
+データ破壊が検出されるとすぐに、故障が検出され復元できないページ (corrupted\-and\-not\-reloadable page)
+をマップしている全てのプロセスを kill する。この機能は、(カーネル内部で割り当てられたデータやスワップのキャッシュなど)
+少数のいくつかのタイプのページではサポートされていないが、大半のユーザページではこの機能は働く。
.IP 0: 4
-Only unmap the corrupted page from all processes and only kill a process who
-tries to access it.
+データ破壊が検出されたページの全てのプロセスからの unmap のみを行い、そのページにアクセスしようとしたプロセスのみを kill する。
.RE
.IP
-The kill is performed using a \fBSIGBUS\fP signal with \fIsi_code\fP set to
-\fBBUS_MCEERR_AO\fP. Processes can handle this if they want to; see
-\fBsigaction\fP(2) for more details.
+この kill は \fIsi_code\fP に \fBBUS_MCEERR_AO\fP を設定した \fBSIGBUS\fP
+シグナルを使って行われる。プロセス側では必要であればこのシグナルを処理することができる。詳細は \fBsigaction\fP(2) を参照。
-This feature is only active on architectures/platforms with advanced machine
-check handling and depends on the hardware capabilities.
+この機能は、高度なマシンチェック機構を持ったアーキテクチャ/プラットフォームにおいてのみ有効であり、ハードウェア機能にも依存している。
-Applications can override the \fImemory_failure_early_kill\fP setting
-individually with the \fBprctl\fP(2) \fBPR_MCE_KILL\fP operation.
+アプリケーションは \fBprctl\fP(2) の \fBPR_MCE_KILL\fP 操作を使って個別に
+\fImemory_failure_early_kill\fP の設定を上書きすることができる。
.IP
カーネルの設定で \fBCONFIG_MEMORY_FAILURE\fP が有効になっている場合にのみ
存在する。
.TP
\fI/proc/sys/vm/memory_failure_recovery\fP (Linux 2.6.32 以降)
.\" The following is based on the text in Documentation/sysctl/vm.txt
-Enable memory failure recovery (when supported by the platform)
+メモリ故障回復 (memory failure recovery) を有効にする
+ (プラットフォームがサポートしている場合)
.RS
.IP 1: 4
-Attempt recovery.
+回復を試みる。
.IP 0: 4
-Always panic on a memory failure.
+メモリ故障時には常に panic を起こす。
.RE
.IP
カーネルの設定で \fBCONFIG_MEMORY_FAILURE\fP が有効になっている場合にのみ
カーネルのソースファイル: \fIDocumentation/filesystems/proc.txt\fP,
\fIDocumentation/sysctl/vm.txt\fP
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.40 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.41 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。
○:LDP man-pages:3.41:2011/10/16:sched_rr_get_interval:2:2012/05/08::amotoki@gmail.com:Akihiro MOTOKI:
○:LDP man-pages:3.41:2010/11/06:sched_setaffinity:2:2012/05/08::amotoki@gmail.com:Akihiro MOTOKI:
○:LDP man-pages:3.41:2006/03/23:sched_setparam:2:2006/04/14::amotoki@dd.iij4u.or.jp:Akihiro MOTOKI:
-○:LDP man-pages:3.41:2011/09/19:sched_setscheduler:2:2012/05/26::amotoki@gmail.com:Akihiro MOTOKI:
+○:LDP man-pages:3.41:2011/09/19:sched_setscheduler:2:2012/06/04::amotoki@gmail.com:Akihiro MOTOKI:
○:LDP man-pages:3.41:2008/10/18:sched_yield:2:1997/02/23::hanataka@abyss.rim.or.jp:HANATAKA Shinya:
@:LDP man-pages:3.41:2007/07/05:security:2:unimplemented:2:
○:LDP man-pages:3.41:2012/05/02:select:2:2012/05/31::amotoki@gmail.com:Akihiro MOTOKI:
@:LDP man-pages:3.41:2010/09/20:sethostid:2:gethostid:3:
@:LDP man-pages:3.41:2010/09/26:sethostname:2:gethostname:2:
@:LDP man-pages:3.41:2009/03/15:setitimer:2:getitimer:2:
-×:LDP man-pages:3.41:2012/05/04:setns:2:::::
+○:LDP man-pages:3.41:2012/05/04:setns:2:2012/06/04::amotoki@gmail.com:Akihiro MOTOKI:
○:LDP man-pages:3.41:2010/09/26:setpgid:2:2010/04/25::amotoki@dd.iij4u.or.jp:Akihiro MOTOKI:
@:LDP man-pages:3.41:2010/09/26:setpgrp:2:setpgid:2:
@:LDP man-pages:3.41:2008/05/29:setpriority:2:getpriority:2:
○:LDP man-pages:3.41:2008/10/24:pthread_attr_setstackaddr:3:2012/05/05::amotoki@gmail.com:Akihiro MOTOKI:
○:LDP man-pages:3.41:2012/03/15:pthread_attr_setstacksize:3:2012/05/05::amotoki@gmail.com:Akihiro MOTOKI:
○:LDP man-pages:3.41:2008/11/17:pthread_cancel:3:2012/05/01::amotoki@gmail.com:Akihiro MOTOKI:
-※:LDP man-pages:3.41:2008/11/24:pthread_cleanup_pop:3:pthread_cleanup_push:3:
-※:LDP man-pages:3.41:2008/12/04:pthread_cleanup_pop_restore_np:3:pthread_cleanup_push_defer_np:3:
-×:LDP man-pages:3.41:2008/11/24:pthread_cleanup_push:3:::::
-×:LDP man-pages:3.41:2008/12/04:pthread_cleanup_push_defer_np:3:::::
+@:LDP man-pages:3.41:2008/11/24:pthread_cleanup_pop:3:pthread_cleanup_push:3:
+@:LDP man-pages:3.41:2008/12/04:pthread_cleanup_pop_restore_np:3:pthread_cleanup_push_defer_np:3:
+○:LDP man-pages:3.41:2008/11/24:pthread_cleanup_push:3:2012/06/04::amotoki@gmail.com:Akihiro MOTOKI:
+○:LDP man-pages:3.41:2008/12/04:pthread_cleanup_push_defer_np:3:2012/06/04::amotoki@gmail.com:Akihiro MOTOKI:
○:LDP man-pages:3.41:2012/03/15:pthread_create:3:2012/05/05::amotoki@gmail.com:Akihiro MOTOKI:
○:LDP man-pages:3.41:2008/11/27:pthread_detach:3:2012/05/05::amotoki@gmail.com:Akihiro MOTOKI:
○:LDP man-pages:3.41:2009/03/30:pthread_equal:3:2012/05/05::amotoki@gmail.com:Akihiro MOTOKI:
○:LDP man-pages:3.41:2012/04/14:nsswitch.conf:5:2012/05/31::amotoki@gmail.com:Akihiro MOTOKI:
※:LDP man-pages:3.41:2008/08/15:numa_maps:5:numa:7:
○:LDP man-pages:3.41:2012/05/03:passwd:5:2012/05/31::amotoki@gmail.com:Akihiro MOTOKI:
-â\98\86:LDP man-pages:3.40=>3.41:2012/05/03:proc:5:2012/05/26::amotoki@gmail.com:Akihiro MOTOKI:
+â\97\8b:LDP man-pages:3.41:2012/05/03:proc:5:2012/06/04::amotoki@gmail.com:Akihiro MOTOKI:
○:LDP man-pages:3.41:2008/09/23:protocols:5:2008/07/22::argrath@ub32.org:Kentaro Shirakata:
○:LDP man-pages:3.41:2012/05/04:resolv.conf:5:2012/05/31::amotoki@gmail.com:Akihiro MOTOKI:
@:LDP man-pages:3.41:2012/05/04:resolver:5:resolv.conf:5: