Revisión | 2631b140bbbcb6ebd1090a2328ae50d27141f865 (tree) |
---|---|
Tiempo | 2015-01-26 21:29:05 |
Autor | Akihiro MOTOKI <amotoki@gmai...> |
Commiter | Akihiro MOTOKI |
Complete prctl.2
@@ -455,46 +455,34 @@ corruption kill ポリシーを使用する。 この場合、 \fIarg3\fP によ | ||
455 | 455 | .\" commit fe3d197f84319d3bce379a9c0dc17b1f48ad358c |
456 | 456 | .\" See also http://lwn.net/Articles/582712/ |
457 | 457 | .\" See also https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler |
458 | -Enable or disable kernel management of Memory Protection eXtensions (MPX) | |
459 | -bounds tables. | |
458 | +Memory Protection eXtensions (MPX) の境界テーブル (bounds table) | |
459 | +のカーネル管理の有効化/無効化を行う。 | |
460 | 460 | |
461 | -MPX is a hardware\-assisted mechanism for performing bounds checking on | |
462 | -pointers. It consists of a set of registers storing bounds information and | |
463 | -a set of special instruction prefixes that tell the CPU on which | |
464 | -instructions it should do bounds enforcement. There is a limited number of | |
465 | -these registers and when there are more pointers than registers, their | |
466 | -contents must be "spilled" into a set of tables. These tables are called | |
467 | -"bounds tables" and the MPX \fBprctl\fP() operations control whether the | |
468 | -kernel manages their allocation and freeing. | |
461 | +MPX は、 ポインターの境界チェックを行うハードウェア支援機構である。 この機能は、 境界情報を格納するレジスター群と、 | |
462 | +境界チェックをどの命令に課すかを CPU に教えるための特別な命令プレフィックスの集合で構成される。 これらのレジスター数は限られており、 | |
463 | +レジスター数よりも多くのポインターがある場合には、 その内容をテーブル群に退避する (spilled) 必要がある。 これらのテーブル群は「境界テーブル | |
464 | +(bounds tables)」と呼ばれ、 MPX \fBprctl\fP 命令はカーネルがこれらの割り当てと解放を行うかどうかを制御する。 | |
469 | 465 | |
470 | -When management is enabled, the kernel will take over allocation and freeing | |
471 | -of the bounds tables. It does this by trapping the #BR exceptions that | |
472 | -result at first use of missing bounds tables and instead of delivering the | |
473 | -exception to user space, it allocates the table and populates the bounds | |
474 | -directory with the location of the new table. For freeing, the kernel | |
475 | -checks to see if bounds tables are present for memory which is not | |
476 | -allocated, and frees them if so. | |
466 | +管理が有効になっている場合、 カーネルが境界テーブルの割り当てと解放を担当する。 最初に存在しない境界テーブルを使おうとした際に上がる #BR | |
467 | +例外を捕捉し、 ユーザー空間に例外を配送せずに、 テーブルの割り当てを行い、 新しいテーブルに境界情報 (bounds directory) | |
468 | +を書き込む。 解放に関しては、 カーネルが割り当てられていないメモリーに対応する境界テーブルが存在するかを確認し、 そうであれば解放を行う。 | |
477 | 469 | |
478 | -Before enabling MPX management using \fBPR_MPX_ENABLE_MANAGEMENT\fP, the | |
479 | -application must first have allocated a user\-space buffer for the bounds | |
480 | -directory and placed the location of that directory in the \fIbndcfgu\fP | |
481 | -register. | |
470 | +\fBPR_MPX_ENABLE_MANAGEMENT\fP を使って MPX 管理を有効にする前に、 | |
471 | +アプリケーションはまず境界情報管理用のユーザー空間バッファーを割り当て、 その管理情報の場所を \fIbndcfgu\fP | |
472 | +レジスターに設定しなければならない。 | |
482 | 473 | |
483 | -These calls will fail if the CPU or kernel does not support MPX. Kernel | |
484 | -support for MPX is enabled via the \fBCONFIG_X86_INTEL_MPX\fP configuration | |
485 | -option. You can check whether the CPU supports MPX by looking for the 'mpx' | |
486 | -CPUID bit, like with the following command: | |
474 | +CPU やカーネルが MPX をサポートしていない場合、 これらの呼び出しは失敗する。 カーネルによる MPX のサポートは | |
475 | +\fBCONFIG_X86_INTEL_MPX\fP 設定オプションで有効にできる。 CPU が MPX をサポートしているかを確認するには、 以下のように | |
476 | +\&'mpx' CPUID ビットを見ればよい。 | |
487 | 477 | |
488 | 478 | cat /proc/cpuinfo | grep ' mpx ' |
489 | 479 | |
490 | -A thread may not switch in or out of long (64\-bit) mode while MPX is | |
491 | -enabled. | |
480 | +MPX が有効になっている間は、 スレッドはロング (64 ビット) モードのオン/オフの切り替えはできない。 | |
492 | 481 | |
493 | -All threads in a process are affected by these calls. | |
482 | +プロセス内のすべてのスレッドがこれらの呼び出しの影響を受ける。 | |
494 | 483 | |
495 | -The child of a \fBfork\fP(2) inherits the state of MPX management. During | |
496 | -\fBexecve\fP(2), MPX management is reset to a state as if | |
497 | -\fBPR_MPX_DISABLE_MANAGEMENT\fP had been called. | |
484 | +\fBfork\fP(2) で作成された子プロセスは MPX 管理の状態を継承する。 \fBexecve\fP(2) の中で、 MPX 管理は | |
485 | +\fBPR_MPX_DISABLE_MANAGEMENT\fP が呼ばれた場合と同じ状態がリセットされる。 | |
498 | 486 | |
499 | 487 | .\" |
500 | 488 | Intel MPX についての詳しい情報は、カーネルソースファイル \fIDocumentation/x86/intel_mpx.txt\fP を参照。 |
@@ -7,7 +7,7 @@ msgid "" | ||
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: PACKAGE VERSION\n" |
9 | 9 | "POT-Creation-Date: 2015-01-25 19:48+0900\n" |
10 | -"PO-Revision-Date: 2015-01-26 16:51+0900\n" | |
10 | +"PO-Revision-Date: 2015-01-26 21:28+0900\n" | |
11 | 11 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
12 | 12 | "Language-Team: LANGUAGE <LL@li.org>\n" |
13 | 13 | "Language: \n" |
@@ -3565,7 +3565,7 @@ msgstr "B<PR_MPX_ENABLE_MANAGEMENT>, B<PR_MPX_DISABLE_MANAGEMENT> (Linux 3.19 | ||
3565 | 3565 | msgid "" |
3566 | 3566 | "Enable or disable kernel management of Memory Protection eXtensions (MPX) " |
3567 | 3567 | "bounds tables." |
3568 | -msgstr "" | |
3568 | +msgstr "Memory Protection eXtensions (MPX) の境界テーブル (bounds table) のカーネル管理の有効化/無効化を行う。" | |
3569 | 3569 | |
3570 | 3570 | #. type: Plain text |
3571 | 3571 | #: build/C/man2/prctl.2:840 |
@@ -3578,7 +3578,7 @@ msgid "" | ||
3578 | 3578 | "contents must be \"spilled\" into a set of tables. These tables are called " |
3579 | 3579 | "\"bounds tables\" and the MPX B<prctl>() operations control whether the " |
3580 | 3580 | "kernel manages their allocation and freeing." |
3581 | -msgstr "" | |
3581 | +msgstr "MPX は、 ポインターの境界チェックを行うハードウェア支援機構である。 この機能は、 境界情報を格納するレジスター群と、 境界チェックをどの命令に課すかを CPU に教えるための特別な命令プレフィックスの集合で構成される。 これらのレジスター数は限られており、 レジスター数よりも多くのポインターがある場合には、 その内容をテーブル群に退避する (spilled) 必要がある。 これらのテーブル群は「境界テーブル (bounds tables)」と呼ばれ、 MPX B<prctl> 命令はカーネルがこれらの割り当てと解放を行うかどうかを制御する。" | |
3582 | 3582 | |
3583 | 3583 | #. type: Plain text |
3584 | 3584 | #: build/C/man2/prctl.2:850 |
@@ -3590,7 +3590,7 @@ msgid "" | ||
3590 | 3590 | "directory with the location of the new table. For freeing, the kernel " |
3591 | 3591 | "checks to see if bounds tables are present for memory which is not " |
3592 | 3592 | "allocated, and frees them if so." |
3593 | -msgstr "" | |
3593 | +msgstr "管理が有効になっている場合、 カーネルが境界テーブルの割り当てと解放を担当する。 最初に存在しない境界テーブルを使おうとした際に上がる #BR 例外を捕捉し、 ユーザー空間に例外を配送せずに、 テーブルの割り当てを行い、 新しいテーブルに境界情報 (bounds directory) を書き込む。 解放に関しては、 カーネルが割り当てられていないメモリーに対応する境界テーブルが存在するかを確認し、 そうであれば解放を行う。" | |
3594 | 3594 | |
3595 | 3595 | #. type: Plain text |
3596 | 3596 | #: build/C/man2/prctl.2:857 |
@@ -3599,7 +3599,7 @@ msgid "" | ||
3599 | 3599 | "application must first have allocated a user-space buffer for the bounds " |
3600 | 3600 | "directory and placed the location of that directory in the I<bndcfgu> " |
3601 | 3601 | "register." |
3602 | -msgstr "" | |
3602 | +msgstr "B<PR_MPX_ENABLE_MANAGEMENT> を使って MPX 管理を有効にする前に、 アプリケーションはまず境界情報管理用のユーザー空間バッファーを割り当て、 その管理情報の場所を I<bndcfgu> レジスターに設定しなければならない。" | |
3603 | 3603 | |
3604 | 3604 | #. type: Plain text |
3605 | 3605 | #: build/C/man2/prctl.2:864 |
@@ -3608,7 +3608,7 @@ msgid "" | ||
3608 | 3608 | "support for MPX is enabled via the B<CONFIG_X86_INTEL_MPX> configuration " |
3609 | 3609 | "option. You can check whether the CPU supports MPX by looking for the 'mpx' " |
3610 | 3610 | "CPUID bit, like with the following command:" |
3611 | -msgstr "" | |
3611 | +msgstr "CPU やカーネルが MPX をサポートしていない場合、 これらの呼び出しは失敗する。 カーネルによる MPX のサポートは B<CONFIG_X86_INTEL_MPX> 設定オプションで有効にできる。 CPU が MPX をサポートしているかを確認するには、 以下のように 'mpx' CPUID ビットを見ればよい。" | |
3612 | 3612 | |
3613 | 3613 | #. type: Plain text |
3614 | 3614 | #: build/C/man2/prctl.2:866 |
@@ -3619,12 +3619,12 @@ msgstr " cat /proc/cpuinfo | grep ' mpx '" | ||
3619 | 3619 | #: build/C/man2/prctl.2:869 |
3620 | 3620 | msgid "" |
3621 | 3621 | "A thread may not switch in or out of long (64-bit) mode while MPX is enabled." |
3622 | -msgstr "" | |
3622 | +msgstr "MPX が有効になっている間は、 スレッドはロング (64 ビット) モードのオン/オフの切り替えはできない。" | |
3623 | 3623 | |
3624 | 3624 | #. type: Plain text |
3625 | 3625 | #: build/C/man2/prctl.2:871 |
3626 | 3626 | msgid "All threads in a process are affected by these calls." |
3627 | -msgstr "" | |
3627 | +msgstr "プロセス内のすべてのスレッドがこれらの呼び出しの影響を受ける。" | |
3628 | 3628 | |
3629 | 3629 | #. type: Plain text |
3630 | 3630 | #: build/C/man2/prctl.2:880 |
@@ -3632,7 +3632,7 @@ msgid "" | ||
3632 | 3632 | "The child of a B<fork>(2) inherits the state of MPX management. During " |
3633 | 3633 | "B<execve>(2), MPX management is reset to a state as if " |
3634 | 3634 | "B<PR_MPX_DISABLE_MANAGEMENT> had been called." |
3635 | -msgstr "" | |
3635 | +msgstr "B<fork>(2) で作成された子プロセスは MPX 管理の状態を継承する。 B<execve>(2) の中で、 MPX 管理は B<PR_MPX_DISABLE_MANAGEMENT> が呼ばれた場合と同じ状態がリセットされる。" | |
3636 | 3636 | |
3637 | 3637 | #. type: Plain text |
3638 | 3638 | #: build/C/man2/prctl.2:884 |
@@ -99,19 +99,15 @@ prctl \- プロセスの操作を行なう | ||
99 | 99 | .TP |
100 | 100 | \fBPR_SET_CHILD_SUBREAPER\fP (Linux 3.4 以降) |
101 | 101 | .\" commit ebec18a6d3aa1e7d84aab16225e87fd25170ec2b |
102 | -If \fIarg2\fP is nonzero, set the "child subreaper" attribute of the calling | |
103 | -process; if \fIarg2\fP is zero, unset the attribute. When a process is marked | |
104 | -as a child subreaper, all of the children that it creates, and their | |
105 | -descendants, will be marked as having a subreaper. In effect, a subreaper | |
106 | -fulfills the role of \fBinit\fP(1) for its descendant processes. Upon | |
107 | -termination of a process that is orphaned (i.e., its immediate parent has | |
108 | -already terminated) and marked as having a subreaper, the nearest still | |
109 | -living ancestor subreaper will receive a \fBSIGCHLD\fP signal and be able to | |
110 | -\fBwait\fP(2) on the process to discover its termination status. | |
102 | +\fIarg2\fP が 0 以外の場合、 呼び出し元プロセスの "child subreaper" 属性をセットする。 \fIarg2\fP が 0 の場合、 | |
103 | +この属性をクリアする。 プロセスが child subreaper のマークが付いている場合、 このプロセスの子プロセスやその子孫にはすべて | |
104 | +subreaper のマークが付与される。 subreaper は事実上その子孫のプロセスに対して \fBinit\fP(1) の役割を果たす。 | |
105 | +孤児になったプロセス (直接の親プロセスがすでに終了しているプロセス) が終了した際、 そのプロセスに subreaper のマークが付いていると、 | |
106 | +最も近い存在する先祖の subreaper プロセスに \fBSIGCHLD\fP シグナルが送られ、 そのプロセスの \fBwait\fP | |
107 | +を使って終了ステータスを知ることができる。 | |
111 | 108 | .TP |
112 | 109 | \fBPR_GET_CHILD_SUBREAPER\fP (Linux 3.4 以降) |
113 | -Return the "child subreaper" setting of the caller, in the location pointed | |
114 | -to by \fI(int\ *) arg2\fP. | |
110 | +呼び出し元の "child subreaper" 設定を、 \fI(int\ *) arg2\fP が指す場所に返す。 | |
115 | 111 | .TP |
116 | 112 | \fBPR_SET_DUMPABLE\fP (Linux 2.3.20 以降) |
117 | 113 | .\" See http://marc.theaimsgroup.com/?l=linux-kernel&m=115270289030630&w=2 |
@@ -188,21 +184,17 @@ ID の変更が行われた場合、「ケーパビリティ保持」フラグ | ||
188 | 184 | バイトを格納できるようにすべきである。 返される文字列はヌル終端される。 |
189 | 185 | .TP |
190 | 186 | \fBPR_SET_NO_NEW_PRIVS\fP (Linux 3.5 以降) |
191 | -Set the calling process's \fIno_new_privs\fP bit to the value in \fIarg2\fP. With | |
192 | -\fIno_new_privs\fP set to 1, \fBexecve\fP(2) promises not to grant privileges to | |
193 | -do anything that could not have been done without the \fBexecve\fP(2) call | |
194 | -(for example, rendering the set\-user\-ID and set\-group\-ID permission bits, | |
195 | -and file capabilities non\-functional). Once set, this bit cannot be unset. | |
196 | -The setting of this bit is inherited by children created by \fBfork\fP(2) and | |
197 | -\fBclone\fP(2), and preserved across \fBexecve\fP(2). | |
187 | +呼び出し元プロセスの \fIno_new_privs\fP ビットを \fIarg2\fP の値に設定する。 \fIno_new_privs\fP が 1 | |
188 | +に設定されると、 \fBexecve\fP(2) は、 \fBexecve\fP(2) の呼び出しなしでは実行できなかったことに対する特権を許可しなくなる | |
189 | +(例えば、 set\-user\-ID/set\-group\-ID 許可ビットやファイルケーパビリティが動作しなくなる)。 一度設定される、 | |
190 | +このビットは解除することができない。 このビットの設定は \fBfork\fP(2) や \fBclone\fP(2) で作成された子プロセスに継承され、 | |
191 | +\fBexecve\fP(2) の前後で保持される。 | |
198 | 192 | |
199 | 193 | 詳しい情報は、カーネルソースファイル \fIDocumentation/prctl/no_new_privs.txt\fP を参照。 |
200 | 194 | .TP |
201 | 195 | \fBPR_GET_NO_NEW_PRIVS\fP (Linux 3.5 以降) |
202 | -Return (as the function result) the value of the \fIno_new_privs\fP bit for the | |
203 | -current process. A value of 0 indicates the regular \fBexecve\fP(2) | |
204 | -behavior. A value of 1 indicates \fBexecve\fP(2) will operate in the | |
205 | -privilege\-restricting mode described above. | |
196 | +現在のプロセスの \fIno_new_privs\fP ビットの値を (関数の結果として) 返す。 値 0 は通常の \fBexecve\fP(2) | |
197 | +の動作を意味する。 値 1 は \fBexecve\fP(2) が上記で述べた特権を制限する動作をすることを示す。 | |
206 | 198 | .TP |
207 | 199 | \fBPR_SET_PDEATHSIG\fP (Linux 2.1.57 以降) |
208 | 200 | 親プロセス死亡シグナル (parent process death signal) を \fIarg2\fP に設定する (設定できるシグナル値の範囲は |
@@ -217,15 +209,13 @@ set\-user\-ID もしくは set\-group\-ID されたバイナリを実行した | ||
217 | 209 | \fBPR_SET_PTRACER\fP (Linux 3.4 以降) |
218 | 210 | .\" commit 2d514487faf188938a4ee4fb3464eeecfbdcf8eb |
219 | 211 | .\" commit bf06189e4d14641c0148bea16e9dd24943862215 |
220 | -This is meaningful only when the Yama LSM is enabled and in mode 1 | |
221 | -("restricted ptrace", visible via \fI/proc/sys/kernel/yama/ptrace_scope\fP). | |
222 | -When a "ptracer process ID" is passed in \fIarg2\fP, the caller is declaring | |
223 | -that the ptracer process can \fBptrace\fP(2) the calling process as if it were | |
224 | -a direct process ancestor. Each \fBPR_SET_PTRACER\fP operation replaces the | |
225 | -previous "ptracer process ID". Employing \fBPR_SET_PTRACER\fP with \fIarg2\fP set | |
226 | -to 0 clears the caller's "ptracer process ID". If \fIarg2\fP is | |
227 | -\fBPR_SET_PTRACER_ANY\fP, the ptrace restrictions introduced by Yama are | |
228 | -effectively disabled for the calling process. | |
212 | +この設定は Yama LSM が有効になっていてモード 1 ("restricted ptrace") の場合のみに意味を持つ (モードは | |
213 | +\fI/proc/sys/kernel/yama/ptrace_scope\fP で参照可能)。 "ptrace プロセス ID" が \fIarg2\fP | |
214 | +で渡された場合、 呼び出し元は ptracer プロセスがそのプロセスが直接のプロセスの先祖であるかのよう呼び出したプロセスを \fBptrace\fP | |
215 | +できる、 と宣言しているということだ。 \fBPR_SET_PTRACER\fP 操作を行う毎に、 直前の "ptracer プロセス ID" | |
216 | +は置きかえられる。 \fIarg2\fP で \fBPR_SET_PTRACER\fP を 0 に設定すると、 呼び出し元の "ptracer プロセス ID" | |
217 | +がクリアされる。 \fIarg2\fP が \fBPR_SET_PTRACER\fP の場合、 Yama が導入した ptrace | |
218 | +の制限は呼び出し元プロセスに対しては無効になる。 | |
229 | 219 | |
230 | 220 | 詳しい情報は、カーネルソースファイル \fIDocumentation/security/Yama.txt\fP を参照。 |
231 | 221 | .TP |
@@ -296,35 +286,28 @@ transparent huge pages を無効にする手段が提供される。 "THP disabl | ||
296 | 286 | .\" commit 6976675d94042fbd446231d1bd8b7de71a980ada |
297 | 287 | .\" It seems that it's not possible to set the timer slack to zero; |
298 | 288 | .\" The minimum value is 1? Seems a little strange. |
299 | -Set the current timer slack for the calling thread to the nanosecond value | |
300 | -supplied in \fIarg2\fP. If \fIarg2\fP is less than or equal to zero, reset the | |
301 | -current timer slack to the thread's default timer slack value. The timer | |
302 | -slack is used by the kernel to group timer expirations for the calling | |
303 | -thread that are close to one another; as a consequence, timer expirations | |
304 | -for the thread may be up to the specified number of nanoseconds late (but | |
305 | -will never expire early). Grouping timer expirations can help reduce system | |
306 | -power consumption by minimizing CPU wake\-ups. | |
289 | +呼び出し元スレッドの現在の timer slack を \fIarg2\fP で指定されたナノ秒に設定する。 \fIarg2\fP が 0 以下の場合、 現在の | |
290 | +timer slack をそのスレッドのデフォルトの timer slack 値にリセットする。 カーネルは timer slack を使って、 | |
291 | +呼び出し元スレッドのタイマー満了のうち、どのくらい近いものグルーピングする (一纏めにする) かを決める。 その結果、 | |
292 | +そのスレッドのタイマーの満了は最大で指定されたナノ秒分だけ遅れる場合がある。 タイマー満了をグルーピングすることで、 CPU | |
293 | +を起こす回数が最小化されシステムの消費電力を減らすことができる。 | |
307 | 294 | |
308 | 295 | .\" List obtained by grepping for futex usage in glibc source |
309 | -The timer expirations affected by timer slack are those set by \fBselect\fP(2), | |
310 | -\fBpselect\fP(2), \fBpoll\fP(2), \fBppoll\fP(2), \fBepoll_wait\fP(2), \fBepoll_pwait\fP(2), | |
311 | -\fBclock_nanosleep\fP(2), \fBnanosleep\fP(2), and \fBfutex\fP(2) (and thus the | |
312 | -library functions implemented via futexes, including | |
313 | -\fBpthread_cond_timedwait\fP(3), \fBpthread_mutex_timedlock\fP(3), | |
314 | -\fBpthread_rwlock_timedrdlock\fP(3), \fBpthread_rwlock_timedwrlock\fP(3), and | |
315 | -\fBsem_timedwait\fP(3)). | |
296 | +timer slack の影響を受けるのは、 システムコール \fBselect\fP(2), \fBpselect\fP(2), \fBpoll\fP(2), | |
297 | +\fBppoll\fP(2), \fBepoll_wait\fP(2), \fBepoll_pwait\fP(2), \fBclock_nanosleep\fP(2), | |
298 | +\fBnanosleep\fP(2), \fBfutex\fP(2) により設定されたタイマー満了である | |
299 | +(また、 futex を使って実装されているライブラリ関数 \fBpthread_cond_timedwait\fP(3), | |
300 | +\fBpthread_mutex_timedlock\fP(3), \fBpthread_rwlock_timedrdlock\fP(3), | |
301 | +\fBpthread_rwlock_timedwrlock\fP(3), \fBsem_timedwait\fP(3) も影響を受ける)。 | |
316 | 302 | |
317 | -Timer slack is not applied to threads that are scheduled under a real\-time | |
318 | -scheduling policy (see \fBsched_setscheduler\fP(2)). | |
303 | +timer slack はリアルタイムスケジューリングポリシーでスケジューリングされるスレッドには提供されない | |
304 | +(\fBsched_setscheduler\fP(2) 参照)。 | |
319 | 305 | |
320 | -Each thread has two associated timer slack values: a "default" value, and a | |
321 | -"current" value. The current value is the one that governs grouping of | |
322 | -timer expirations. When a new thread is created, the two timer slack values | |
323 | -are made the same as the current value of the creating thread. Thereafter, | |
324 | -a thread can adjust its current timer slack value via \fBPR_SET_TIMERSLACK\fP | |
325 | -(the default value can't be changed). The timer slack values of \fIinit\fP | |
326 | -(PID 1), the ancestor of all processes, are 50,000 nanoseconds (50 | |
327 | -microseconds). The timer slack values are preserved across \fBexecve\fP(2). | |
306 | +各スレッドには timer slack に関連する値が 2 つある。 「デフォルト値」と「現在値」である。 | |
307 | +現在値はタイマー満了のグルーピングを制御する。 新しいスレッドが作成される際、 2 つの timer slack | |
308 | +値はそのスレッドを作成したスレッドの現在値と同じに設定される。 その後、 スレッドは \fBPR_SET_TIMERSLACK\fP で現在の timer | |
309 | +slack 値を調整できる (デフォルト値は変更できない)。 すべてのプロセスの先祖となる \fIinit\fP (PID 1) の timer slack | |
310 | +値は 50,000 ナノ秒 (50 ミリ秒) である。 timer slack 値は \fBexecve\fP(2) の前後で保持される。 | |
328 | 311 | .TP |
329 | 312 | \fBPR_GET_TIMERSLACK\fP (Linux 2.6.28 以降) |
330 | 313 | 呼び出し元スレッドの現在のタイマーのスラック値を (関数の結果として) 返す。 |
@@ -378,24 +361,21 @@ microseconds). The timer slack values are preserved across \fBexecve\fP(2). | ||
378 | 361 | arg2\fP が指す場所に格納して返す。 |
379 | 362 | .TP |
380 | 363 | \fBPR_MCE_KILL\fP (Linux 2.6.32 以降) |
381 | -Set the machine check memory corruption kill policy for the current thread. | |
382 | -If \fIarg2\fP is \fBPR_MCE_KILL_CLEAR\fP, clear the thread memory corruption kill | |
383 | -policy and use the system\-wide default. (The system\-wide default is defined | |
384 | -by \fI/proc/sys/vm/memory_failure_early_kill\fP; see \fBproc\fP(5).) If \fIarg2\fP | |
385 | -is \fBPR_MCE_KILL_SET\fP, use a thread\-specific memory corruption kill policy. | |
386 | -In this case, \fIarg3\fP defines whether the policy is \fIearly kill\fP | |
387 | -(\fBPR_MCE_KILL_EARLY\fP), \fIlate kill\fP (\fBPR_MCE_KILL_LATE\fP), or the | |
388 | -system\-wide default (\fBPR_MCE_KILL_DEFAULT\fP). Early kill means that the | |
389 | -thread receives a \fBSIGBUS\fP signal as soon as hardware memory corruption is | |
390 | -detected inside its address space. In late kill mode, the process is killed | |
391 | -only when it accesses a corrupted page. See \fBsigaction\fP(2) for more | |
392 | -information on the \fBSIGBUS\fP signal. The policy is inherited by children. | |
393 | -The remaining unused \fBprctl\fP() arguments must be zero for future | |
394 | -compatibility. | |
364 | +現在のスレッドの machine check memory corruption kill ポリシーを設定する。 \fIarg2\fP が | |
365 | +\fBPR_MCE_KILL_CLEAR\fP の場合、 このスレッドの memory corruption kill ポリシーをクリアし、 | |
366 | +システム全体のデフォルト値を使用する (システム全体のデフォルトは \fI/proc/sys/vm/memory_failure_early_kill\fP | |
367 | +で定義される。 \fBproc\fP(5) 参照)。 \fIarg2\fP が \fBPR_MCE_KILL_SET\fP の場合、 スレッド固有の memory | |
368 | +corruption kill ポリシーを使用する。 この場合、 \fIarg3\fP によりこのポリシーが \fIearly kill\fP | |
369 | +(\fBPR_MCE_KILL_EARLY\fP か、 \fIlate kill\fP (\fBPR_MCE_KILL_LATE\fP) か、 システム全体のデフォルト値 | |
370 | +(\fBPR_MCE_KILL_DEFAULT\fP) が指定される。 early kill は、 ハードウェアメモリー破壊 (corruption) | |
371 | +がスレッドのアドレス空間内で検出されるとすぐに、 そのスレッドが \fBSIGBUS\fP シグナルを受信することを意味する。 late kill | |
372 | +モードでは、 メモリー破壊が起こったページにアクセスした場合にのみ、 そのプロセスが kill される。 \fBSIGBUS\fP シグナルの詳細は | |
373 | +\fBsigaction\fP(2) を参照。 このポリシーは子プロセスに継承される。 未使用の残りの \fBprctl\fP() の引き数は将来の互換性のため 0 | |
374 | +にしなければならない。 | |
395 | 375 | .TP |
396 | 376 | \fBPR_MCE_KILL_GET\fP (Linux 2.6.32 以降) |
397 | -Return the current per\-process machine check kill policy. All unused | |
398 | -\fBprctl\fP() arguments must be zero. | |
377 | +現在のプロセス単位の machine check kill ポリシーを返す。 未使用の \fBprctl\fP() の引き数はすべて 0 | |
378 | +にしなければならない。 | |
399 | 379 | .TP |
400 | 380 | \fBPR_SET_MM\fP (Linux 3.3 以降) |
401 | 381 | .\" commit 028ee4be34a09a6d48bdf30ab991ae933a7bc036 |
@@ -475,46 +455,34 @@ Return the current per\-process machine check kill policy. All unused | ||
475 | 455 | .\" commit fe3d197f84319d3bce379a9c0dc17b1f48ad358c |
476 | 456 | .\" See also http://lwn.net/Articles/582712/ |
477 | 457 | .\" See also https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler |
478 | -Enable or disable kernel management of Memory Protection eXtensions (MPX) | |
479 | -bounds tables. | |
458 | +Memory Protection eXtensions (MPX) の境界テーブル (bounds table) | |
459 | +のカーネル管理の有効化/無効化を行う。 | |
480 | 460 | |
481 | -MPX is a hardware\-assisted mechanism for performing bounds checking on | |
482 | -pointers. It consists of a set of registers storing bounds information and | |
483 | -a set of special instruction prefixes that tell the CPU on which | |
484 | -instructions it should do bounds enforcement. There is a limited number of | |
485 | -these registers and when there are more pointers than registers, their | |
486 | -contents must be "spilled" into a set of tables. These tables are called | |
487 | -"bounds tables" and the MPX \fBprctl\fP() operations control whether the | |
488 | -kernel manages their allocation and freeing. | |
461 | +MPX は、 ポインターの境界チェックを行うハードウェア支援機構である。 この機能は、 境界情報を格納するレジスター群と、 | |
462 | +境界チェックをどの命令に課すかを CPU に教えるための特別な命令プレフィックスの集合で構成される。 これらのレジスター数は限られており、 | |
463 | +レジスター数よりも多くのポインターがある場合には、 その内容をテーブル群に退避する (spilled) 必要がある。 これらのテーブル群は「境界テーブル | |
464 | +(bounds tables)」と呼ばれ、 MPX \fBprctl\fP 命令はカーネルがこれらの割り当てと解放を行うかどうかを制御する。 | |
489 | 465 | |
490 | -When management is enabled, the kernel will take over allocation and freeing | |
491 | -of the bounds tables. It does this by trapping the #BR exceptions that | |
492 | -result at first use of missing bounds tables and instead of delivering the | |
493 | -exception to user space, it allocates the table and populates the bounds | |
494 | -directory with the location of the new table. For freeing, the kernel | |
495 | -checks to see if bounds tables are present for memory which is not | |
496 | -allocated, and frees them if so. | |
466 | +管理が有効になっている場合、 カーネルが境界テーブルの割り当てと解放を担当する。 最初に存在しない境界テーブルを使おうとした際に上がる #BR | |
467 | +例外を捕捉し、 ユーザー空間に例外を配送せずに、 テーブルの割り当てを行い、 新しいテーブルに境界情報 (bounds directory) | |
468 | +を書き込む。 解放に関しては、 カーネルが割り当てられていないメモリーに対応する境界テーブルが存在するかを確認し、 そうであれば解放を行う。 | |
497 | 469 | |
498 | -Before enabling MPX management using \fBPR_MPX_ENABLE_MANAGEMENT\fP, the | |
499 | -application must first have allocated a user\-space buffer for the bounds | |
500 | -directory and placed the location of that directory in the \fIbndcfgu\fP | |
501 | -register. | |
470 | +\fBPR_MPX_ENABLE_MANAGEMENT\fP を使って MPX 管理を有効にする前に、 | |
471 | +アプリケーションはまず境界情報管理用のユーザー空間バッファーを割り当て、 その管理情報の場所を \fIbndcfgu\fP | |
472 | +レジスターに設定しなければならない。 | |
502 | 473 | |
503 | -These calls will fail if the CPU or kernel does not support MPX. Kernel | |
504 | -support for MPX is enabled via the \fBCONFIG_X86_INTEL_MPX\fP configuration | |
505 | -option. You can check whether the CPU supports MPX by looking for the 'mpx' | |
506 | -CPUID bit, like with the following command: | |
474 | +CPU やカーネルが MPX をサポートしていない場合、 これらの呼び出しは失敗する。 カーネルによる MPX のサポートは | |
475 | +\fBCONFIG_X86_INTEL_MPX\fP 設定オプションで有効にできる。 CPU が MPX をサポートしているかを確認するには、 以下のように | |
476 | +\&'mpx' CPUID ビットを見ればよい。 | |
507 | 477 | |
508 | 478 | cat /proc/cpuinfo | grep ' mpx ' |
509 | 479 | |
510 | -A thread may not switch in or out of long (64\-bit) mode while MPX is | |
511 | -enabled. | |
480 | +MPX が有効になっている間は、 スレッドはロング (64 ビット) モードのオン/オフの切り替えはできない。 | |
512 | 481 | |
513 | -All threads in a process are affected by these calls. | |
482 | +プロセス内のすべてのスレッドがこれらの呼び出しの影響を受ける。 | |
514 | 483 | |
515 | -The child of a \fBfork\fP(2) inherits the state of MPX management. During | |
516 | -\fBexecve\fP(2), MPX management is reset to a state as if | |
517 | -\fBPR_MPX_DISABLE_MANAGEMENT\fP had been called. | |
484 | +\fBfork\fP(2) で作成された子プロセスは MPX 管理の状態を継承する。 \fBexecve\fP(2) の中で、 MPX 管理は | |
485 | +\fBPR_MPX_DISABLE_MANAGEMENT\fP が呼ばれた場合と同じ状態がリセットされる。 | |
518 | 486 | |
519 | 487 | .\" |
520 | 488 | Intel MPX についての詳しい情報は、カーネルソースファイル \fIDocumentation/x86/intel_mpx.txt\fP を参照。 |
@@ -1,5 +1,4 @@ | ||
1 | 1 | # pagename,#complete,#remaining,#all |
2 | -prctl.2,210,8,218 | |
3 | 2 | rt_sigqueueinfo.2,30,18,48 |
4 | 3 | s390_runtime_instr.2,20,11,31 |
5 | 4 | timer_create.2,68,38,106 |
@@ -271,7 +271,7 @@ | ||
271 | 271 | ○:LDP man-pages:3.78:2014/09/06:poll:2:2015/01/24::amotoki@gmail.com:Akihiro Motoki: |
272 | 272 | ○:LDP man-pages:3.78:2014/12/31:posix_fadvise:2:2015/01/24::amotoki@gmail.com:Akihiro Motoki: |
273 | 273 | @:LDP man-pages:3.78:2014/09/06:ppoll:2:poll:2: |
274 | -☆:LDP man-pages:3.40=>3.78:2014/12/31:prctl:2:2012/05/26::amotoki@gmail.com:Akihiro Motoki: | |
274 | +○:LDP man-pages:3.78:2014/12/31:prctl:2:2015/01/26::amotoki@gmail.com:Akihiro Motoki: | |
275 | 275 | ○:LDP man-pages:3.78:2013/06/21:pread:2:2015/01/24::amotoki@gmail.com:Akihiro Motoki: |
276 | 276 | @:LDP man-pages:3.78:2013/06/21:pread64:2:pread:2: |
277 | 277 | @:LDP man-pages:3.78:2015/01/22:preadv:2:readv:2: |
@@ -50,7 +50,6 @@ | ||
50 | 50 | <TR><TD>cpuset.7</TD><TD>210/314</TD><TD>33.12</TD></TR> |
51 | 51 | <TR><TD>seccomp.2</TD><TD>65/144</TD><TD>54.86</TD></TR> |
52 | 52 | <TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>signal</B></TD></TR> |
53 | -<TR class="over80"><TD>prctl.2</TD><TD>8/218</TD><TD>96.33</TD></TR> | |
54 | 53 | <TR><TD>rt_sigqueueinfo.2</TD><TD>18/48</TD><TD>62.50</TD></TR> |
55 | 54 | <TR><TD>s390_runtime_instr.2</TD><TD>11/31</TD><TD>64.52</TD></TR> |
56 | 55 | <TR><TD>timer_create.2</TD><TD>38/106</TD><TD>64.15</TD></TR> |
@@ -63,6 +62,6 @@ | ||
63 | 62 | <TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>stdlib</B></TD></TR> |
64 | 63 | <TR><TD>getauxval.3</TD><TD>34/86</TD><TD>60.47</TD></TR> |
65 | 64 | <TR class="over80"><TD>vdso.7</TD><TD>8/184</TD><TD>95.65</TD></TR> |
66 | -<TR><TD COLSPAN=3>Total 39 pages</TD></TR> | |
65 | +<TR><TD COLSPAN=3>Total 38 pages</TD></TR> | |
67 | 66 | </TABLE> |
68 | 67 | </BODY></HTML> |