Manpages

名 前

prctl − プ ロ セ ス の 操 作 を 行 な う

書 式

#include <sys/prctl.h>

int prctl(int option, unsigned long arg2, unsigned long arg3,
unsigned long
arg4, unsigned long arg5);

説 明

prctl() の 動 作 は 最 初 の 引 き 数 に よ っ て 決 定 さ れ る (こ の 値 は <linux/prctl.h> に 定 義 さ れ て い る )。 残 り の 引 き 数 は 最 初 の 引 き 数 に よ っ て 変 化 す る 。 一 番 目 の 引 き 数 と し て 以 下 の も の を 指 定 で き る :
PR_CAPBSET_READ
(Linux 2.6.25 以 降 ) で 指 定 さ れ た ケ ー パ ビ リ テ ィ が 呼 び 出 し た ス レ ッ ド の ケ ー パ ビ リ テ ィ バ イ ン デ ィ ン グ セ ッ ト (capability bounding set) に 含 ま れ て い る 場 合 、 (関 数 の 結 果 と し て ) 1 を 返 し 、 そ う で な い 場 合 0 を 返 す (ケ ー パ ビ リ テ ィ 定 数 は <linux/capability.h> で 定 義 さ れ て い る )。 ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト は 、 execve(2) を 呼 び 出 し た 際 に 、 フ ァ イ ル の 許 可 (permitted) ケ ー パ ビ リ テ ィ の 中 で そ の プ ロ セ ス が 獲 得 で き る ケ ー パ ビ リ テ ィ を 指 示 す る も の で あ る 。

arg2 に 指 定 さ れ た ケ ー パ ビ リ テ ィ が 有 効 で な い 場 合 、 呼 び 出 し は エ ラ ー EINVAL で 失 敗 す る 。

PR_CAPBSET_DROP (Linux 2.6.25 以 降 ) 呼 び 出 し た ス レ ッ ド が ケ ー パ ビ リ テ ィ CAP_SETPCAP を 持 っ て い る 場 合 、 呼 び 出 し た ス レ ッ ド の ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト か ら arg2 で 指 定 さ れ た ケ ー パ ビ リ テ ィ を 外 す 。 呼 び 出 し た ス レ ッ ド の 子 プ ロ セ ス は 変 更 後 の バ ウ ン デ ィ ン グ セ ッ ト を 継 承 す る 。 呼 び 出 し た ス レ ッ ド が CAP_SETPCAP を 持 っ て い な い 場 合 、 呼 び 出 し は エ ラ ー EPERM で 失 敗 す る 。 arg2 に 指 定 さ れ た ケ ー パ ビ リ テ ィ が 有 効 で な い 場 合 、 EINVAL で 失 敗 す る 。 フ ァ イ ル ケ ー パ ビ リ テ ィ が カ ー ネ ル で 有 効 に な っ て い な い 場 合 (こ の 場 合 に は バ ウ ン デ ィ ン グ セ ッ ト が サ ポ ー ト さ れ な い )、 EINVAL で 失 敗 す る 。
PR_SET_CHILD_SUBREAPER
(Linux 3.4 以 降 )

arg2 が 0 以 外 の 場 合 、 呼 び 出 し 元 プ ロ セ ス の "child subreaper" 属 性 を セ ッ ト す る 。 arg2 が 0 の 場 合 、 こ の 属 性 を ク リ ア す る 。 プ ロ セ ス が child subreaper の マ ー ク が 付 い て い る 場 合 、 こ の プ ロ セ ス の 子 プ ロ セ ス や そ の 子 孫 に は す べ て subreaper の マ ー ク が 付 与 さ れ る 。 subreaper は 事 実 上 そ の 子 孫 の プ ロ セ ス に 対 し て init(1) の 役 割 を 果 た す 。 孤 児 に な っ た プ ロ セ ス (直 接 の 親 プ ロ セ ス が す で に 終 了 し て い る プ ロ セ ス ) が 終 了 し た 際 、 そ の プ ロ セ ス に subreaper の マ ー ク が 付 い て い る と 、 最 も 近 い 存 在 す る 先 祖 の subreaper プ ロ セ ス に SIGCHLD シ グ ナ ル が 送 ら れ 、 そ の プ ロ セ ス の wait を 使 っ て 終 了 ス テ ー タ ス を 知 る こ と が で き る 。

PR_GET_CHILD_SUBREAPER (Linux 3.4 以 降 ) 呼 び 出 し 元 の "child subreaper" 設 定 を 、 (int *) arg2 が 指 す 場 所 に 返 す 。
PR_SET_DUMPABLE
(Linux 2.3.20 以 降 )

(Linux 2.3.20 以 降 ) デ フ ォ ル ト の 振 る 舞 い で は コ ア ダ ン プ を 引 き 起 こ す よ う な シ グ ナ ル を 受 信 し た と き に 、 呼 び 出 し 元 の プ ロ セ ス で コ ア ダ ン プ を 生 成 す る か ど う か を 決 定 す る フ ラ グ を 設 定 す る (通 常 こ の フ ラ グ は 、 デ フ ォ ル ト で は セ ッ ト さ れ て い る が 、 set−user−ID あ る い は set−group−ID プ ロ グ ラ ム が 実 行 さ れ た り 、 さ ま ざ ま な シ ス テ ム コ ー ル に よ っ て プ ロ セ ス の UID や GID が 操 作 さ れ た と き に ク リ ア さ れ る )。 2.6.12 以 前 の カ ー ネ ル で は 、 arg2 は 0 (プ ロ セ ス は ダ ン プ 不 可 ) あ る い は 1 (プ ロ セ ス は ダ ン プ 可 能 ) の ど ち ら か で な け れ ば な ら な い 。 2.6.13 か ら 2.6.17 ま で の カ ー ネ ル で は 、 値 2 も 認 め ら れ て い た 。 こ の 値 を 指 定 す る と 、 通 常 は ダ ン プ さ れ な い バ イ ナ リ が root だ け が 読 み 込 み 可 能 な 形 で ダ ン プ さ れ た 。 セ キ ュ リ テ ィ 上 の 理 由 か ら 、 こ の 機 能 は 削 除 さ れ た (proc(5) の /proc/sys/fs/suid_dumpable の 説 明 も 参 照 )。 ダ ン プ 不 可 の プ ロ セ ス を ptrace(2) PTRACE_ATTACH 経 由 で 接 続 す る こ と は で き な い 。

PR_GET_DUMPABLE (Linux 2.3.20 以 降 )

(Linux 2.3.20 以 降 ) 呼 び 出 し 元 プ ロ セ ス に お け る ダ ン プ 可 能 フ ラ グ の 現 在 の 状 態 を (関 数 の 結 果 と し て ) 返 す 。

PR_SET_ENDIAN (Linux 2.6.18 以 降 、 PowerPC の み ) 呼 び 出 し 元 プ ロ セ ス の エ ン デ ィ ア ン 設 定 (endian−ness) を arg2 で 指 定 さ れ た 値 に 設 定 す る 。 指 定 で き る 値 は PR_ENDIAN_BIG, PR_ENDIAN_LITTLE, PR_ENDIAN_PPC_LITTLE (PowerPC 擬 似 リ ト ル エ ン デ ィ ア ン ) の い ず れ か 一 つ で あ る 。
PR_GET_ENDIAN
(Linux 2.6.18 以 降 、 PowerPC の み ) 呼 び 出 し 元 プ ロ セ ス の エ ン デ ィ ア ン 設 定 (endian−ness) を (int *) arg2 が 指 す 場 所 に 格 納 し て 返 す 。
PR_SET_FPEMU
(Linux 2.4.18 以 降 , 2.5.9, ia64 の み ) 浮 動 小 数 点 エ ミ ュ レ ー シ ョ ン (floating−point emulation) 制 御 ビ ッ ト を arg2 で 指 定 さ れ た 値 に 設 定 す る 。 指 定 で き る 値 は PR_FPEMU_NOPRINT (浮 動 小 数 点 命 令 ア ク セ ス を 黙 っ て エ ミ ュ レ ー ト す る ) か PR_FPEMU_SIGFPE (浮 動 小 数 点 命 令 を エ ミ ュ レ ー ト せ ず 、 代 わ り に SIGFPE を 送 る ) で あ る 。
PR_GET_FPEMU
(Linux 2.4.18 以 降 , 2.5.9, ia64 の み ) 浮 動 小 数 点 エ ミ ュ レ ー シ ョ ン 制 御 ビ ッ ト の 値 を (int *) arg2 が 指 す 場 所 に 格 納 し て 返 す 。
PR_SET_FPEXC
(Linux 2.4.21 お よ び 2.5.32 以 降 、 PowerPC の み ) 浮 動 小 数 点 例 外 モ ー ド (floating−point exception mode) を arg2 で 指 定 さ れ た 値 に 設 定 す る 。 指 定 で き る の は 以 下 の 値 で あ る : PR_FP_EXC_SW_ENABLE (FPEXC で 浮 動 小 数 点 例 外 を 有 効 に す る )、 PR_FP_EXC_DIV (0 除 算 )、 PR_FP_EXC_OVF (オ ー バ ー フ ロ ー )、 PR_FP_EXC_UND (ア ン ダ ー フ ロ ー )、 PR_FP_EXC_RES (不 正 確 な 結 果 (inexact result))、 PR_FP_EXC_INV (不 正 な 命 令 (invalid operation))、 PR_FP_EXC_DISABLED (浮 動 小 数 点 例 外 を 無 効 に す る )、 PR_FP_EXC_NONRECOV (async nonrecoverable exception mode)、 PR_FP_EXC_ASYNC (async recoverable exception mode)、 PR_FP_EXC_PRECISE (precise exception mode)。
PR_GET_FPEXC
(Linux 2.4.21 お よ び 2.5.32 以 降 、 PowerPC の み ) 浮 動 小 数 点 例 外 モ ー ド の 値 を (int *) arg2 が 指 す 場 所 に 格 納 し て 返 す 。
PR_SET_KEEPCAPS
(Linux 2.2.18 以 降 ) ス レ ッ ド の 「 ケ ー パ ビ リ テ ィ 保 持 」 フ ラ グ を 設 定 す る 。 こ の フ ラ グ は 、 ス レ ッ ド の 実 UID、 実 効 UID、 保 存 set−user−ID の う ち 少 な く と も 一 つ が 0 で あ っ た 状 態 か ら 、 こ れ ら 全 て が 0 以 外 に 変 更 さ れ た と き 、 ス レ ッ ド の 許 可 ケ ー パ ビ リ テ ィ 集 合 が ク リ ア さ れ る か ど う か を 決 定 す る 。 デ フ ォ ル ト で は 、 こ の よ う な 変 更 が 行 わ れ た 場 合 、 許 可 ケ ー パ ビ リ テ ィ セ ッ ト は ク リ ア さ れ る 。 「 ケ ー パ ビ リ テ ィ 保 持 」 フ ラ グ を 設 定 す る と 、 許 可 ケ ー パ ビ リ テ ィ セ ッ ト は ク リ ア さ れ な く な る 。 arg2 は 0 (許 可 ケ ー パ ビ リ テ ィ を ク リ ア す る ) か 1 (許 可 ケ ー パ ビ リ テ ィ を 保 持 す る ) の ど ち ら か で な け れ ば な ら な い 。 (こ の よ う な ID の 変 更 が 行 わ れ た 場 合 、 「 ケ ー パ ビ リ テ ィ 保 持 」 フ ラ グ の 設 定 に 関 わ ら ず 、 ス レ ッ ド の 実 効 ケ ー パ ビ リ テ ィ セ ッ ト は 常 に ク リ ア さ れ る 。 ) execve(2) が 呼 び 出 さ れ る と 、 「 ケ ー パ ビ リ テ ィ 保 持 」 フ ラ グ は 0 に リ セ ッ ト さ れ る 。
PR_GET_KEEPCAPS
(Linux 2.2.18 以 降 ) 呼 び 出 し 元 ス レ ッ ド に お け る 「 ケ ー パ ビ リ テ ィ 保 持 」 フ ラ グ の 現 在 の 状 態 を (関 数 の 結 果 と し て ) 返 す 。
PR_SET_NAME
(Linux 2.6.9 以 降 ) 呼 び 出 し 元 ス レ ッ ド の プ ロ セ ス 名 を (char *) arg2 が 指 す 場 所 に 格 納 さ れ た 値 を 使 っ て 設 定 す る 。 名 前 は 終 端 の NULL バ イ ト を 含 め て 最 大 で 16 バ イ ト で あ る (終 端 の NULL バ イ ト を 含 め た 文 字 列 の 長 さ が 16 バ イ ト を 超 え る 場 合 、 文 字 列 は 黙 っ て 切 り 詰 め ら れ る )。 こ れ は 、 pthread_setname_np(3) で 設 定 で き 、 pthread_getname_np(3) で 取 得 で き る の と 同 じ 属 性 で あ る 。 同 様 に 、 tid が 呼 び 出 し 元 ス レ ッ ド の ID の 場 合 、 こ の 属 性 は /proc/self/task/[tid]/comm 経 由 で も ア ク セ ス 可 能 で あ る 。
PR_GET_NAME
(Linux 2.6.11 以 降 ) 呼 び 出 し 元 ス レ ッ ド の 名 前 を (char *) arg2 が 指 す 場 所 に 格 納 し て 返 す 。 バ ッ フ ァ ー は 最 大 で 16 バ イ ト を 格 納 で き る よ う に す べ き で あ る 。 返 さ れ る 文 字 列 は ヌ ル 終 端 さ れ る 。
PR_SET_NO_NEW_PRIVS
(Linux 3.5 以 降 ) 呼 び 出 し 元 プ ロ セ ス の no_new_privs ビ ッ ト を arg2 の 値 に 設 定 す る 。 no_new_privs が 1 に 設 定 さ れ る と 、 execve(2) は 、 execve(2) の 呼 び 出 し な し で は 実 行 で き な か っ た こ と に 対 す る 特 権 を 許 可 し な く な る (例 え ば 、 set−user−ID/set−group−ID 許 可 ビ ッ ト や フ ァ イ ル ケ ー パ ビ リ テ ィ が 動 作 し な く な る )。 一 度 設 定 さ れ る 、 こ の ビ ッ ト は 解 除 す る こ と が で き な い 。 こ の ビ ッ ト の 設 定 は fork(2)clone(2) で 作 成 さ れ た 子 プ ロ セ ス に 継 承 さ れ 、 execve(2) の 前 後 で 保 持 さ れ る 。 詳 し い 情 報 は 、 カ ー ネ ル ソ ー ス フ ァ イ ル Documentation/prctl/no_new_privs.txt を 参 照 。
PR_GET_NO_NEW_PRIVS
(Linux 3.5 以 降 ) 現 在 の プ ロ セ ス の no_new_privs ビ ッ ト の 値 を (関 数 の 結 果 と し て ) 返 す 。 値 0 は 通 常 の execve(2) の 動 作 を 意 味 す る 。 値 1 は execve(2) が 上 記 で 述 べ た 特 権 を 制 限 す る 動 作 を す る こ と を 示 す 。
PR_SET_PDEATHSIG
(Linux 2.1.57 以 降 ) 親 プ ロ セ ス 死 亡 シ グ ナ ル (parent process death signal) を arg2 に 設 定 す る (設 定 で き る シ グ ナ ル 値 の 範 囲 は 1..maxsig で あ り 、 0 は 通 知 の 解 除 で あ る )。 呼 び 出 し 元 プ ロ セ ス の 親 プ ロ セ ス が 死 ん だ 際 に 、 こ こ で 設 定 し た 値 が シ グ ナ ル と し て 通 知 さ れ る 。 こ の 値 は fork(2) の 子 プ ロ セ ス で は 解 除 さ れ る 。 (Linux 2.4.36 以 降 お よ び 2.6.23 以 降 で は ) set−user−ID も し く は set−group−ID さ れ た バ イ ナ リ を 実 行 し た 場 合 に も 、 こ の フ ラ グ は 解 除 さ れ る 。 こ の 値 は execve(2) の 前 後 で 保 持 さ れ る 。
PR_GET_PDEATHSIG
(Linux 2.3.15 以 降 ) 親 プ ロ セ ス 死 亡 シ グ ナ ル の 現 在 の 値 を (int *) arg2 が 指 す 場 所 に 格 納 し て 返 す 。
PR_SET_PTRACER
(Linux 3.4 以 降 ) こ の 設 定 は Yama LSM が 有 効 に な っ て い て モ ー ド 1 ("restricted ptrace") の 場 合 の み に 意 味 を 持 つ (モ ー ド は /proc/sys/kernel/yama/ptrace_scope で 参 照 可 能 )。 "ptrace プ ロ セ ス ID" が arg2 で 渡 さ れ た 場 合 、 呼 び 出 し 元 は ptracer プ ロ セ ス が そ の プ ロ セ ス が 直 接 の プ ロ セ ス の 先 祖 で あ る か の よ う 呼 び 出 し た プ ロ セ ス を ptrace で き る 、 と 宣 言 し て い る と い う こ と だ 。 PR_SET_PTRACER 操 作 を 行 う 毎 に 、 直 前 の "ptracer プ ロ セ ス ID" は 置 き か え ら れ る 。 arg2PR_SET_PTRACER を 0 に 設 定 す る と 、 呼 び 出 し 元 の "ptracer プ ロ セ ス ID" が ク リ ア さ れ る 。 arg2PR_SET_PTRACER の 場 合 、 Yama が 導 入 し た ptrace の 制 限 は 呼 び 出 し 元 プ ロ セ ス に 対 し て は 無 効 に な る 。 詳 し い 情 報 は 、 カ ー ネ ル ソ ー ス フ ァ イ ル Documentation/security/Yama.txt を 参 照 。
PR_SET_SECCOMP
(Linux 2.6.23 以 降 ) 呼 び 出 し た ス レ ッ ド の セ キ ュ ア コ ン ピ ュ ー テ ィ ン グ (seccomp) モ ー ド を 設 定 す る 。 最 近 の seccomp(2) シ ス テ ム コ ー ル は PR_SET_SECCOMP の 上 位 互 換 の 機 能 を 提 供 す る 。

seccomp モ ー ド は arg2 で 指 定 で き る (seccomp 定 数 は <linux/seccomp.h> で 定 義 さ れ て い る )。

arg2SECCOMP_MODE_STRICT に 設 定 す る と 、 そ の ス レ ッ ド が 呼 び 出 し を 許 可 さ れ る シ ス テ ム コ ー ル は read(2), write(2), _exit(2), sigreturn(2) だ け に な る 。 そ れ 以 外 の シ ス テ ム コ ー ル を 呼 び 出 す と 、 シ グ ナ ル SIGKILL が 配 送 さ れ る 。 パ イ プ や ソ ケ ッ ト か ら 読 み 込 ん だ 、 信 頼 で き な い バ イ ト コ ー ド を 実 行 す る 必 要 が あ る 大 量 の 演 算 を 行 う ア プ リ ケ ー シ ョ ン に お い て 、 strict secure computing モ ー ド は 役 立 つ 。 こ の 操 作 は 利 用 で き る の は 、 カ ー ネ ル が CONFIG_SECCOMP を 有 効 に し て 作 成 さ れ て い る 場 合 だ け で あ る 。

arg2SECCOMP_MODE_FILTER (Linux 3.5 以 降 ) に 設 定 す る と 、 許 可 さ れ る シ ス テ ム コ ー ル は arg3 で 渡 さ れ た Berkeley Packet Filter へ の ポ イ ン タ ー で 定 義 さ れ る 。 こ の 引 き 数 は struct sock_fprog へ の ポ イ ン タ ー で あ る 。 こ れ は 任 意 の シ ス テ ム コ ー ル や シ ス テ ム コ ー ル 引 き 数 を フ ィ ル タ リ ン グ す る た め に 設 計 さ れ た 。 こ の モ ー ド は カ ー ネ ル で CONFIG_SECCOMP_FILTER が 有 効 に な っ て い る 場 合 に の み 利 用 可 能 で あ る 。

SECCOMP_MODE_FILTER フ ィ ル タ ー で fork(2) が 許 可 さ れ て い る 場 合 、 seccomp モ ー ド は fork(2) で 作 成 さ れ た 子 プ ロ セ ス に 継 承 さ れ る 。 execve(2) が 許 可 さ れ て い る 場 合 、 seccomp モ ー ド は execve(2) の 前 後 で 維 持 さ れ る 。 フ ィ ル タ ー で prctl() コ ー ル が 許 可 さ れ て い る 場 合 、 追 加 で フ ィ ル タ ー が 定 義 さ れ 、 こ れ ら の フ ィ ル タ ー は 許 可 さ れ な い も の が 見 つ か る ま で 指 定 さ れ た 順 序 で 実 行 さ れ る 。 詳 し い 情 報 は 、 カ ー ネ ル ソ ー ス フ ァ イ ル Documentation/prctl/seccomp_filter.txt を 参 照 。

PR_GET_SECCOMP (Linux 2.6.23 以 降 ) 呼 び 出 し た ス レ ッ ド の secure computing モ ー ド を (関 数 の 結 果 と し て ) 返 す 。 呼 び 出 し た ス レ ッ ド が secure computing モ ー ド で な か っ た 場 合 、 こ の 操 作 は 0 を 返 し 、 呼 び 出 し た ス レ ッ ド が strict secure computing モ ー ド の 場 合 、 prctl() を 呼 び 出 す と シ グ ナ ル SIGKILL が そ の プ ロ セ ス に 送 信 さ れ る 。 呼 び 出 し た ス レ ッ ド が フ ィ ル タ モ ー ド で 、 こ の シ ス テ ム コ ー ル が seccomp フ ィ ル タ に よ り 許 可 さ れ て い る 場 合 、 2 を 返 し 、 そ う で な い 場 合 プ ロ セ ス は SIGKILL シ グ ナ ル で kill さ れ づ 。 こ の 操 作 が 利 用 で き る の は 、 カ ー ネ ル が CONFIG_SECCOMP を 有 効 に し て 作 成 さ れ て い る 場 合 だ け で あ る 。

Linux 3.8 以 降 で は 、 /proc/[pid]/statusseccomp フ ィ ー ル ド か ら も 同 じ 情 報 を 取 得 で き る 。 こ の 方 法 の 場 合 は プ ロ セ ス が kill さ れ る 危 険 は な い 。 proc(5) を 参 照 。

PR_SET_SECUREBITS (Linux 2.6.26 以 降 ) 呼 び 出 し た ス レ ッ ド の "securebits" フ ラ グ を arg2 で 渡 さ れ た 値 に 設 定 す る 。 capabilities(7) 参 照 。
PR_GET_SECUREBITS
(Linux 2.6.26 以 降 ) 呼 び 出 し た ス レ ッ ド の "securebits" フ ラ グ を (関 数 の 結 果 と し て ) 返 す 。 capabilities(7) 参 照 。
PR_SET_THP_DISABLE
(Linux 3.15 以 降 ) 呼 び 出 し た ス レ ッ ド の "THP disable" (THP 無 効 ) フ ラ グ の 状 態 を 設 定 す る 。 arg2 が 0 以 外 の 場 合 、 フ ラ グ は 有 効 に な り 、 そ う で な い 場 合 は ク リ ー ン さ れ る 。 こ の フ ラ グ を 設 定 す る 方 法 に よ り 、 コ ー ド を 変 更 で き な か っ た り madvise(2) の malloc hook を が 有 効 で は な い ジ ョ ブ (こ の 方 法 は 静 的 に 割 り 当 て ら れ た デ ー タ に は 有 効 で は な い )に 対 し て 、 transparent huge pages を 無 効 に す る 手 段 が 提 供 さ れ る 。 "THP disable" フ ラ グ の 設 定 は fork(2) で 作 成 さ れ た 子 プ ロ セ ス に 継 承 さ れ 、 execve の 前 後 で 維 持 さ れ る 。
PR_GET_THP_DISABLE
(Linux 3.15 以 降 ) 呼 び 出 し 元 ス レ ッ ド の "THP disable" フ ラ グ の 現 在 の 設 定 を (関 数 の 結 果 と し て ) 返 す 。 フ ラ グ が セ ッ ト さ れ て い る 場 合 は 1 が 、 セ ッ ト さ れ て い な い 場 合 は 0 が 返 る 。
PR_GET_TID_ADDRESS
(Linux 3.5 以 降 )

set_tid_address(2)clone(2) CLONE_CHILD_CLEARTID フ ラ グ で 設 定 さ れ た clear_child_tid を 取 得 し 、 (int **) arg2 が 指 す 場 所 に 格 納 し て 返 す 。 こ の 機 能 は カ ー ネ ル が CONFIG_CHECKPOINT_RESTORE オ プ シ ョ ン を 有 効 に し て 作 成 さ れ て い る 場 合 に の み 利 用 で き る 。

PR_SET_TIMERSLACK (Linux 2.6.28 以 降 ) 呼 び 出 し 元 ス レ ッ ド の 現 在 の timer slack を arg2 で 指 定 さ れ た ナ ノ 秒 に 設 定 す る 。 arg2 が 0 以 下 の 場 合 、 現 在 の timer slack を そ の ス レ ッ ド の デ フ ォ ル ト の timer slack 値 に リ セ ッ ト す る 。 カ ー ネ ル は timer slack を 使 っ て 、 呼 び 出 し 元 ス レ ッ ド の タ イ マ ー 満 了 の う ち 、 ど の く ら い 近 い も の グ ル ー ピ ン グ す る (一 纏 め に す る ) か を 決 め る 。 そ の 結 果 、 そ の ス レ ッ ド の タ イ マ ー の 満 了 は 最 大 で 指 定 さ れ た ナ ノ 秒 分 だ け 遅 れ る 場 合 が あ る 。 タ イ マ ー 満 了 を グ ル ー ピ ン グ す る こ と で 、 CPU を 起 こ す 回 数 が 最 小 化 さ れ シ ス テ ム の 消 費 電 力 を 減 ら す こ と が で き る 。

timer slack の 影 響 を 受 け る の は 、 シ ス テ ム コ ー ル select(2), pselect(2), poll(2), ppoll(2), epoll_wait(2), epoll_pwait(2), clock_nanosleep(2), nanosleep(2), futex(2) に よ り 設 定 さ れ た タ イ マ ー 満 了 で あ る (ま た 、 futex を 使 っ て 実 装 さ れ て い る ラ イ ブ ラ リ 関 数 pthread_cond_timedwait(3), pthread_mutex_timedlock(3), pthread_rwlock_timedrdlock(3), pthread_rwlock_timedwrlock(3), sem_timedwait(3) も 影 響 を 受 け る )。

timer slack は リ ア ル タ イ ム ス ケ ジ ュ ー リ ン グ ポ リ シ ー で ス ケ ジ ュ ー リ ン グ さ れ る ス レ ッ ド に は 提 供 さ れ な い (sched_setscheduler(2) 参 照 )。 各 ス レ ッ ド に は timer slack に 関 連 す る 値 が 2 つ あ る 。 「 デ フ ォ ル ト 値 」 と 「 現 在 値 」 で あ る 。 現 在 値 は タ イ マ ー 満 了 の グ ル ー ピ ン グ を 制 御 す る 。 新 し い ス レ ッ ド が 作 成 さ れ る 際 、 2 つ の timer slack 値 は そ の ス レ ッ ド を 作 成 し た ス レ ッ ド の 現 在 値 と 同 じ に 設 定 さ れ る 。 そ の 後 、 ス レ ッ ド は PR_SET_TIMERSLACK で 現 在 の timer slack 値 を 調 整 で き る (デ フ ォ ル ト 値 は 変 更 で き な い )。 す べ て の プ ロ セ ス の 先 祖 と な る init (PID 1) の timer slack 値 は 50,000 ナ ノ 秒 (50 ミ リ 秒 ) で あ る 。 timer slack 値 は execve(2) の 前 後 で 保 持 さ れ る 。

PR_GET_TIMERSLACK (Linux 2.6.28 以 降 ) 呼 び 出 し 元 ス レ ッ ド の 現 在 の タ イ マ ー の ス ラ ッ ク 値 を (関 数 の 結 果 と し て ) 返 す 。
PR_SET_TIMING
(Linux 2.6.0−test4 以 降 )

(通 常 の 、 伝 統 的 に 使 わ れ て き た ) 統 計 的 な プ ロ セ ス タ イ ミ ン グ を 使 用 す る か 、 正 確 な タ イ ム ス タ ン プ に 基 づ く プ ロ セ ス タ イ ミ ン グ を 使 用 す る か を 設 定 す る 。 arg2 に 指 定 で き る 値 は PR_TIMING_STATISTICALPR_TIMING_TIMESTAMP で あ る 。 PR_TIMING_TIMESTAMP は 現 在 の と こ ろ 実 装 さ れ て い な い (こ の モ ー ド に 設 定 し よ う と す る と エ ラ ー EINVAL が 起 こ る こ と だ ろ う )。

PR_GET_TIMING (Linux 2.6.0−test4 以 降 ) 現 在 使 用 中 の プ ロ セ ス タ イ ミ ン グ を 決 め る 方 法 を (関 数 の 結 果 と し て ) 返 す 。
PR_TASK_PERF_EVENTS_DISABLE
(Linux 2.6.31 以 降 ) 呼 び 出 し た プ ロ セ ス に 接 続 さ れ た す べ て の 性 能 カ ウ ン タ ー を 無 効 に す る 。 カ ウ ン タ ー が こ の プ ロ セ ス に よ り 作 成 さ れ た か 他 の プ ロ セ ス に よ り 作 成 さ れ た か は 関 係 な い 。 呼 び 出 し た プ ロ セ ス が 他 の プ ロ セ ス 用 に 作 成 し た 性 能 カ ウ ン タ ー は 影 響 を 受 け な い 。 性 能 カ ウ ン タ ー の 詳 細 に つ い て は Linux カ ー ネ ル ソ ー ス の tools/perf/design.txt を 参 照 。 以 前 は PR_TASK_PERF_COUNTERS_DISABLE と 呼 ば れ て い た 。 Linux 2.6.32 で 名 前 が 変 更 さ れ た (数 値 は 同 じ ま ま で あ る )。
PR_TASK_PERF_EVENTS_ENABLE
(Linux 2.6.31 以 降 )

PR_TASK_PERF_EVENTS_DISABLE の 逆 。 呼 び 出 し た プ ロ セ ス に 接 続 さ れ た 性 能 カ ウ ン タ ー を 有 効 に す る 。 以 前 は PR_TASK_PERF_COUNTERS_ENABLE と 呼 ば れ て い た 。 Linux 2.6.32 で 名 前 が 変 更 さ れ た 。

PR_SET_TSC (Linux 2.6.26 以 降 , x86 の み ) そ の プ ロ セ ス が タ イ ム ス タ ン プ カ ウ ン タ ー を 読 み 出 せ る か を 決 定 す る フ ラ グ の 状 態 を 設 定 す る 。 読 み 出 し を 許 可 す る 場 合 は arg2PR_TSC_ENABLE を 、 そ の プ ロ セ ス が タ イ ム ス タ ン プ カ ウ ン タ ー を 読 み 出 そ う と し た 際 に SIGSEGV を 発 生 さ せ る 場 合 に は PR_TSC_SIGSEGV を 渡 す 。
PR_GET_TSC
(Linux 2.6.26 以 降 , x86 の み ) そ の プ ロ セ ス が タ イ ム ス タ ン プ カ ウ ン タ ー を 読 み 出 せ る か を 決 定 す る フ ラ グ の 状 態 を (int *) arg2 が 指 す 場 所 に 格 納 し て 返 す 。
PR_SET_UNALIGN

(ia64 で は Linux 2.3.48 以 降 ; parisc で は Linux 2.6.15 以 降 ; PowerPC で は Linux 2.6.18 以 降 ; Alpha で は   Linux 2.6.22 以 降 ; こ れ ら の ア ー キ テ ク チ ャ ー の み ) unaligned ア ク セ ス 制 御 ビ ッ ト を arg2 で 指 定 さ れ た 値 に 設 定 す る 。 指 定 で き る 値 は PR_UNALIGN_NOPRINT (unaligned な ユ ー ザ ー ア ク セ ス を 黙 っ て 修 正 す る ) か PR_UNALIGN_SIGBUS (unaligned な ユ ー ザ ー ア ク セ ス が あ っ た 場 合 SIGBUS を 生 成 す る ) で あ る 。

PR_GET_UNALIGN

(バ ー ジ ョ ン と ア ー キ テ ク チ ャ ー の 情 報 は PR_SET_UNALIGN 参 照 ) unaligned ア ク セ ス 制 御 ビ ッ ト の 値 を (int *) arg2 が 指 す 場 所 に 格 納 し て 返 す 。

PR_MCE_KILL (Linux 2.6.32 以 降 ) 現 在 の ス レ ッ ド の machine check memory corruption kill ポ リ シ ー を 設 定 す る 。 arg2PR_MCE_KILL_CLEAR の 場 合 、 こ の ス レ ッ ド の memory corruption kill ポ リ シ ー を ク リ ア し 、 シ ス テ ム 全 体 の デ フ ォ ル ト 値 を 使 用 す る (シ ス テ ム 全 体 の デ フ ォ ル ト は /proc/sys/vm/memory_failure_early_kill で 定 義 さ れ る 。 proc(5) 参 照 )。 arg2PR_MCE_KILL_SET の 場 合 、 ス レ ッ ド 固 有 の memory corruption kill ポ リ シ ー を 使 用 す る 。 こ の 場 合 、 arg3 に よ り こ の ポ リ シ ー が early kill (PR_MCE_KILL_EARLY か 、 late kill (PR_MCE_KILL_LATE) か 、 シ ス テ ム 全 体 の デ フ ォ ル ト 値 (PR_MCE_KILL_DEFAULT) が 指 定 さ れ る 。 early kill は 、 ハ ー ド ウ ェ ア メ モ リ ー 破 壊 (corruption) が ス レ ッ ド の ア ド レ ス 空 間 内 で 検 出 さ れ る と す ぐ に 、 そ の ス レ ッ ド が SIGBUS シ グ ナ ル を 受 信 す る こ と を 意 味 す る 。 late kill モ ー ド で は 、 メ モ リ ー 破 壊 が 起 こ っ た ペ ー ジ に ア ク セ ス し た 場 合 に の み 、 そ の プ ロ セ ス が kill さ れ る 。 SIGBUS シ グ ナ ル の 詳 細 は sigaction(2) を 参 照 。 こ の ポ リ シ ー は 子 プ ロ セ ス に 継 承 さ れ る 。 未 使 用 の 残 り の prctl() の 引 き 数 は 将 来 の 互 換 性 の た め 0 に し な け れ ば な ら な い 。
PR_MCE_KILL_GET
(Linux 2.6.32 以 降 ) 現 在 の プ ロ セ ス 単 位 の machine check kill ポ リ シ ー を 返 す 。 未 使 用 の prctl() の 引 き 数 は す べ て 0 に し な け れ ば な ら な い 。
PR_SET_MM
(Linux 3.3 以 降 ) 呼 び 出 し た プ ロ セ ス の カ ー ネ ル メ モ リ ー マ ッ プ デ ィ ス ク リ プ タ ー の フ ィ ー ル ド を 変 更 す る 。 こ れ ら の フ ィ ー ル ド は 通 常 カ ー ネ ル と 動 的 リ ン カ ー に よ り 設 定 さ れ る (詳 し い 情 報 は ld.so を 参 照 )。 通 常 の ア プ リ ケ ー シ ョ ン は こ の 機 能 を 利 用 す べ き で は な い 。 し か し な が ら 、 自 分 を 書 き 換 え る プ ロ グ ラ ム な ど 、 プ ロ グ ラ ム が 自 分 自 身 の メ モ リ ー マ ッ プ を 変 更 す る の が 有 用 な 場 面 も あ る 。 こ の 機 能 は カ ー ネ ル が CONFIG_CHECKPOINT_RESTORE オ プ シ ョ ン を 有 効 に し て 作 成 さ れ て い る 場 合 に の み 利 用 で き る 。 呼 び 出 し た プ ロ セ ス は CAP_SYS_RESOURCE ケ ー パ ビ リ テ ィ を 持 っ て い な け れ ば な ら な い 。 arg2 の 値 に は 以 下 の い ず れ か を 指 定 し 、 arg3 で そ の オ プ シ ョ ン の 新 し い 値 を 指 定 す る 。

PR_SET_MM_START_CODE プ ロ グ ラ ム テ キ ス ト を 実 行 で き る ア ド レ ス の 上 限 を 設 定 す る 。 対 応 す る メ モ リ ー 領 域 は 読 み 出 し 可 能 で 実 行 可 能 で な け れ ば な ら な い が 、 書 き 込 み 可 能 だ っ た り 共 有 可 能 だ っ た り し て は な ら な い (詳 し い 情 報 は mprotect(2)mmap(2) 参 照 )。
PR_SET_MM_END_CODE
プ ロ グ ラ ム テ キ ス ト を 実 行 で き る ア ド レ ス の 下 限 を 設 定 す る 。 対 応 す る メ モ リ ー 領 域 は 読 み 出 し 可 能 で 実 行 可 能 で な け れ ば な ら な い が 、 書 き 込 み 可 能 だ っ た り 共 有 可 能 だ っ た り し て は な ら な い 。
PR_SET_MM_START_DATA
初 期 化 済 デ ー タ や 未 初 期 化 (bss) デ ー タ を 配 置 す る 領 域 の ア ド レ ス 上 限 を 指 定 す る 。 対 応 す る メ モ リ ー 領 域 は 読 み 書 き 可 能 で な け れ ば な ら な い が 、 実 行 可 能 だ っ た り 共 有 可 能 だ っ た り し て は な ら な い 。
PR_SET_MM_END_DATA
初 期 化 済 デ ー タ や 未 初 期 化 (bss) デ ー タ を 配 置 す る 領 域 の ア ド レ ス 下 限 を 指 定 す る 。 対 応 す る メ モ リ ー 領 域 は 読 み 書 き 可 能 で な け れ ば な ら な い が 、 実 行 可 能 だ っ た り 共 有 可 能 だ っ た り し て は な ら な い 。
PR_SET_MM_START_STACK
ス タ ッ ク の 開 始 ア ド レ ス を 設 定 す る 。 対 応 す る メ モ リ ー 領 域 は 読 み 書 き 可 能 で な け れ ば な ら な い 。
PR_SET_MM_START_BRK

brk(2) コ ー ル で 拡 張 で き る プ ロ グ ラ ム の ヒ ー プ 領 域 の ア ド レ ス 上 限 を 設 定 す る 。 こ の ア ド レ ス は 、 プ ロ グ ラ ム の 現 在 の デ ー タ セ グ メ ン ト の 最 終 ア ド レ ス よ り 大 き く な け れ ば な ら な い 。 ま た 、 変 更 後 の ヒ ー プ と デ ー タ セ グ メ ン ト の サ イ ズ を 合 わ せ た サ イ ズ が RLIMIT_DATA リ ソ ー ス リ ミ ッ ト を 超 え る こ と は で き な い (setrlimit(2) 参 照 )。

PR_SET_MM_BRK 現 在 の brk(2) 値 を 設 定 す る 。 こ の ア ド レ ス の 要 件 は PR_SET_MM_START_BRK オ プ シ ョ ン と 同 じ で あ る 。 以 下 の オ プ シ ョ ン は Linux 3.5 以 降 で 利 用 で き る 。
PR_SET_MM_ARG_START
プ ロ グ ラ ム の コ マ ン ド ラ イ ン を 配 置 す る ア ド レ ス の 上 限 を 設 定 す る 。
PR_SET_MM_ARG_END
プ ロ グ ラ ム の コ マ ン ド ラ イ ン を 配 置 す る ア ド レ ス の 下 限 を 設 定 す る 。
PR_SET_MM_ENV_START
プ ロ グ ラ ム の 環 境 情 報 (environment) を 配 置 す る ア ド レ ス の 上 限 を 設 定 す る 。
PR_SET_MM_ENV_END
プ ロ グ ラ ム の 環 境 情 報 (environment) を 配 置 す る ア ド レ ス の 下 限 を 設 定 す る 。

PR_SET_MM_ARG_START, PR_SET_MM_ARG_END, PR_SET_MM_ENV_START, PR_SET_MM_ENV_END で 指 定 さ れ る ア ド レ ス は プ ロ セ ス の ス タ ッ ク 領 域 に 属 し て い る 必 要 が あ る 。 し た が っ て 、 こ れ ら の メ モ リ ー 領 域 は 読 み 書 き 可 能 で な け れ ば な ら な い 。 ま た 、 (カ ー ネ ル 設 定 に よ っ て は ) MAP_GROWSDOWN 属 性 が セ ッ ト さ れ て い な け れ ば な ら な い (mmap(2) 参 照 )。

PR_SET_MM_AUXV 新 し い 補 助 ベ ク ト ル (auxiliary vector) を 設 定 す る 。 arg3 引 き 数 は ベ ク ト ル の ア ド レ ス を 指 定 し 、 arg4 は ベ ク ト ル の サ イ ズ を 指 定 す る 。
PR_SET_MM_EXE_FILE

/proc/pid/exe シ ン ボ リ ッ ク リ ン ク を arg3 引 き 数 で 渡 さ れ た 新 し い 実 行 可 能 な フ ァ イ ル デ ィ ス ク リ プ タ ー を 指 す シ ン ボ リ ッ ク リ ン ク で 置 き 換 え る 。 フ ァ イ ル デ ィ ス ク リ プ タ ー は 通 常 の open(2) コ ー ル で 取 得 す べ き で あ る 。 シ ン ボ リ ッ ク リ ン ク を 変 更 す る に は 、 既 存 の 実 行 可 能 な メ モ リ ー 領 域 の す べ て を ア ン マ ッ プ す る 必 要 が あ る 。 こ れ に は カ ー ネ ル 自 身 が 作 成 し た 領 域 も 含 ま れ る (例 え ば 、 カ ー ネ ル は 通 常 ELF .text セ ク シ ョ ン に 少 な く と も 一 つ の 実 行 可 能 な メ モ リ ー 領 域 を 作 成 す る )。 二 つ 目 の 制 限 は 、 こ の よ う な 変 更 は プ ロ セ ス の 生 存 期 間 で 一 度 だ け 行 う こ と が で き る と い う 点 で あ る 。 一 度 変 更 を 行 っ た 後 で 変 更 を 行 お う と す る と 拒 否 さ れ る 。 こ の 動 作 は 、 シ ス テ ム 管 理 者 が 、 シ ス テ ム で 動 作 す る す べ て の プ ロ セ ス が 行 う 、 普 通 で な い シ ン ボ リ ッ ク リ ン ク の 変 更 を 監 視 す る の を 楽 に す る 。

PR_MPX_ENABLE_MANAGEMENT, PR_MPX_DISABLE_MANAGEMENT (Linux 3.19 以 降 )

Memory Protection eXtensions (MPX) の 境 界 テ ー ブ ル (bounds table) の カ ー ネ ル 管 理 の 有 効 化 /無 効 化 を 行 う 。 引 き 数 arg2, arg3, arg4, arg5 は 0 で な け れ ば な ら な い 。

MPX は 、 ポ イ ン タ ー の 境 界 チ ェ ッ ク を 行 う ハ ー ド ウ ェ ア 支 援 機 構 で あ る 。 こ の 機 能 は 、 境 界 情 報 を 格 納 す る レ ジ ス タ ー 群 と 、 境 界 チ ェ ッ ク を ど の 命 令 に 課 す か を CPU に 教 え る た め の 特 別 な 命 令 プ レ フ ィ ッ ク ス の 集 合 で 構 成 さ れ る 。 こ れ ら の レ ジ ス タ ー 数 は 限 ら れ て お り 、 レ ジ ス タ ー 数 よ り も 多 く の ポ イ ン タ ー が あ る 場 合 に は 、 そ の 内 容 を テ ー ブ ル 群 に 退 避 す る (spilled) 必 要 が あ る 。 こ れ ら の テ ー ブ ル 群 は 「 境 界 テ ー ブ ル (bounds tables)」 と 呼 ば れ 、 MPX prctl 命 令 は カ ー ネ ル が こ れ ら の 割 り 当 て と 解 放 を 行 う か ど う か を 制 御 す る 。 管 理 が 有 効 に な っ て い る 場 合 、 カ ー ネ ル が 境 界 テ ー ブ ル の 割 り 当 て と 解 放 を 担 当 す る 。 最 初 に 存 在 し な い 境 界 テ ー ブ ル を 使 お う と し た 際 に 上 が る #BR 例 外 を 捕 捉 し 、 ユ ー ザ ー 空 間 に 例 外 を 配 送 せ ず に 、 テ ー ブ ル の 割 り 当 て を 行 い 、 新 し い テ ー ブ ル に 境 界 情 報 (bounds directory) を 書 き 込 む 。 解 放 に 関 し て は 、 カ ー ネ ル が 割 り 当 て ら れ て い な い メ モ リ ー に 対 応 す る 境 界 テ ー ブ ル が 存 在 す る か を 確 認 し 、 そ う で あ れ ば 解 放 を 行 う 。

PR_MPX_ENABLE_MANAGEMENT を 使 っ て MPX 管 理 を 有 効 に す る 前 に 、 ア プ リ ケ ー シ ョ ン は ま ず 境 界 情 報 管 理 用 の ユ ー ザ ー 空 間 バ ッ フ ァ ー を 割 り 当 て 、 そ の 管 理 情 報 の 場 所 を bndcfgu レ ジ ス タ ー に 設 定 し な け れ ば な ら な い 。

CPU や カ ー ネ ル が MPX を サ ポ ー ト し て い な い 場 合 、 こ れ ら の 呼 び 出 し は 失 敗 す る 。 カ ー ネ ル に よ る MPX の サ ポ ー ト は CONFIG_X86_INTEL_MPX 設 定 オ プ シ ョ ン で 有 効 に で き る 。 CPU が MPX を サ ポ ー ト し て い る か を 確 認 す る に は 、 以 下 の よ う に ’mpx’ CPUID ビ ッ ト を 見 れ ば よ い 。

cat /proc/cpuinfo | grep ’ mpx ’

MPX が 有 効 に な っ て い る 間 は 、 ス レ ッ ド は ロ ン グ (64 ビ ッ ト ) モ ー ド の オ ン /オ フ の 切 り 替 え は で き な い 。 プ ロ セ ス 内 の す べ て の ス レ ッ ド が こ れ ら の 呼 び 出 し の 影 響 を 受 け る 。

fork(2) で 作 成 さ れ た 子 プ ロ セ ス は MPX 管 理 の 状 態 を 継 承 す る 。 execve(2) の 中 で 、 MPX 管 理 は PR_MPX_DISABLE_MANAGEMENT が 呼 ば れ た 場 合 と 同 じ 状 態 が リ セ ッ ト さ れ る 。

Intel MPX に つ い て の 詳 し い 情 報 は 、 カ ー ネ ル ソ ー ス フ ァ イ ル Documentation/x86/intel_mpx.txt を 参 照 。

返 り 値

成 功 す る と 、 PR_GET_DUMPABLE, PR_GET_KEEPCAPS, PR_GET_NO_NEW_PRIVS, PR_GET_THP_DISABLE, PR_CAPBSET_READ, PR_GET_TIMING, PR_GET_TIMERSLACK, PR_GET_SECUREBITS, PR_MCE_KILL_GET, PR_GET_SECCOMP は 上 述 の 負 で な い 値 を 返 す (な お 、 PR_GET_SECCOMP は 返 ら な い 場 合 も あ る )。 option が 他 の 値 の 場 合 は 成 功 時 に 0 を 返 す 。 エ ラ ー の 場 合 、 −1 を 返 し 、 errno に 適 切 な 値 を 設 定 す る 。

エ ラ ー

EFAULT

arg2 が 不 正 な ア ド レ ス で あ る 。

EFAULT

optionPR_SET_SECCOMP で 、 arg2SECCOMP_MODE_FILTER で 、 カ ー ネ ル が CONFIG_SECCOMP_FILTER を 有 効 に し て 作 成 さ れ て お り 、 arg3 が 無 効 な ア ド レ ス で あ る 。

EINVAL

option の 値 が 理 解 で き な い 。

EINVAL

optionPR_MCE_KILL, PR_MCE_KILL_GET, PR_SET_MM の い ず れ か で 、 か つ 未 使 用 の prctl() 引 き 数 に 0 が 指 定 さ れ て い な か っ た 。

EINVAL

arg2 が 指 定 さ れ た option で 有 効 な 値 で は な い 。

EINVAL

optionPR_SET_SECCOMPPR_GET_SECCOMP だ が 、 カ ー ネ ル が CONFIG_SECCOMP を 有 効 に し て 作 成 さ れ て い な か っ た 。

EINVAL

optionPR_SET_SECCOMP で 、 arg2SECCOMP_MODE_FILTER で 、 カ ー ネ ル が CONFIG_SECCOMP を 有 効 に し て 作 成 さ れ て い な か っ た 。

EINVAL

optionPR_SET_MM で 、 以 下 の い ず れ か が 真 で あ る 。

*

arg4arg5 で 0 以 外 で あ る 。

*

arg3TASK_SIZE よ り も 大 き い (TASK_SIZE は こ の ア ー キ テ ク チ ャ ー で ユ ー ザ ー 空 間 ア ド レ ス ス ペ ー ス の 最 大 サ イ ズ で あ る )。

*

arg2PR_SET_MM_START_CODE, PR_SET_MM_END_CODE, PR_SET_MM_START_DATA, PR_SET_MM_END_DATA, PR_SET_MM_START_STACK の ど れ か で 、 対 応 す る メ モ リ ー 領 域 の ア ク セ ス 許 可 が 要 件 を 満 た し て い な い 。

*

arg2PR_SET_MM_START_BRKPR_SET_MM_BRK で 、 arg3 デ ー タ セ グ メ ン ト の 末 尾 と 同 じ か そ れ よ り 前 か 、 arg3RLIMIT_DATA リ ソ ー ス リ ミ ッ ト を 超 え て し ま う よ う な 値 が 指 定 さ れ て い る 。

EINVAL

optionPR_SET_PTRACERarg2 が 0, PR_SET_PTRACER_ANY, 既 存 プ ロ セ ス の PID の い ず れ で も な い 。

EINVAL

optionPR_SET_PDEATHSIG で 、 arg2 で 指 定 さ れ た 値 は 無 効 な シ グ ナ ル 番 号 で あ る 。

EINVAL

optionPR_SET_DUMPABLE で 、 arg2SUID_DUMP_DISABLE で も SUID_DUMP_USER で も な い 。

EINVAL

optionPR_SET_TIMING で 、 arg2PR_TIMING_STATISTICAL で は な い 。

EINVAL

optionPR_SET_NO_NEW_PRIVS で 、 arg2 が 1 以 外 か 、 arg3, arg4, arg5 の ど れ か が 0 で は な い 。

EINVAL

optionPR_GET_NO_NEW_PRIVS で 、 arg2, arg3, arg4, arg5 の ど れ か が 0 で は な い 。

EINVAL

optionPR_SET_THP_DISABLEarg3, arg4, arg5 の ど れ か が 0 で は な い 。

EINVAL

optionPR_GET_THP_DISABLEarg2, arg3, arg4, arg5 の い ず れ が 0 で は な い 。

EPERM

optionPR_SET_SECUREBITS で 、 呼 び 出 し 元 が ケ ー パ ビ リ テ ィ CAP_SETPCAP を 持 っ て い な い 。 ま た は 、 "locked" フ ラ グ を 解 除 し よ う と し た 。 ま た は 、 locked フ ラ グ が セ ッ ト さ れ て い る フ ラ グ を セ ッ ト し よ う と し た (capabilities(7) 参 照 )。

EPERM

optionPR_SET_KEEPCAPS で 、 呼 び 出 し 元 の フ ラ グ SECURE_KEEP_CAPS_LOCKED が セ ッ ト さ れ て い る (capabilities(7) 参 照 )。

EPERM

optionPR_CAPBSET_DROP で 、 呼 び 出 し 元 が ケ ー パ ビ リ テ ィ CAP_SETPCAP を 持 っ て い な い 。

EPERM

optionPR_SET_MM で 、 呼 び 出 し 元 が ケ ー パ ビ リ テ ィ CAP_SYS_RESOURCE を 持 っ て い な い 。

EACCES

optionPR_SET_MM、 か つ arg3PR_SET_MM_EXE_FILE で 、 フ ァ イ ル が 実 行 可 能 で は な い 。

EBUSY

optionPR_SET_MM で 、 arg3PR_SET_MM_EXE_FILE で 、 /proc/pid/exe シ ン ボ リ ッ ク リ ン ク を 変 更 し よ う と し た が 、 禁 止 さ れ て い る 。

EBADF

optionPR_SET_MM で 、 arg3PR_SET_MM_EXE_FILE で 、 arg4 で 渡 さ れ た フ ァ イ ル デ ィ ス ク リ プ タ ー が 有 効 で は な い 。

ENXIO

optionPR_MPX_ENABLE_MANAGEMENTPR_MPX_DISABLE_MANAGEMENT で 、 カ ー ネ ル か CPU が MPX の 管 理 を サ ポ ー ト し て い な い 。 カ ー ネ ル と プ ロ セ ス が MPX を サ ポ ー ト し て い る か 確 認 す る こ と 。

バ ー ジ ョ ン

prctl() シ ス テ ム コ ー ル は Linux 2.1.57 で 導 入 さ れ た 。

準 拠

こ の コ ー ル は Linux 特 有 で あ る 。 IRIX に は prctl() シ ス テ ム コ ー ル が あ る が (MIPS ア ー キ テ ク チ ャ ー に お い て irix_prctl と し て Linux 2.1.44 で 同 様 に 導 入 さ れ た )、 そ の プ ロ ト タ イ プ は

ptrdiff_t prctl(int option, int arg2, int arg3); で あ る 。 ユ ー ザ ー 当 り の プ ロ セ ス 最 大 数 を 取 得 す る オ プ シ ョ ン 、 プ ロ セ ス の 使 用 で き る 最 大 プ ロ ッ サ ー 数 を 取 得 す る オ プ シ ョ ン 、 現 在 特 定 の プ ロ セ ス が 停 止 (block)さ せ ら れ て い る か ど う か 調 べ る オ プ シ ョ ン 、 ス タ ッ ク サ イ ズ の 最 大 値 の 取 得 や 設 定 を 行 な う オ プ シ ョ ン な ど が あ る 。

関 連 項 目

signal(2), core(5)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。