Man page - set_tid_address(2)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

SET_TID_ADDRESS

名 前
書 式
説 明
返 り 値
エ ラ ー
バ ー ジ ョ ン
準 拠
注 意
関 連 項 目
こ の 文 書 に つ い て

名 前

set_tid_address - ス レ ッ ド ID へ の ポ イ ン タ ー を 設 定 す る

書 式

#include <linux/unistd.h>

pid_t set_tid_address(int * tidptr );

: こ の シ ス テ ム コ ー ル に は glibc の ラ ッ パ ー 関 数 は 存 在 し な い 。 「 注 意 」 の 節 を 参 照 。

説 明

各 ス レ ッ ド に つ い て 、 カ ー ネ ル は set_child_tid clear_child_tid と い う 2 つ の 属 性 を 保 持 す る 。 こ の 2 つ の 属 性 は デ フ ォ ル ト で は NULL で あ る 。
set_child_tid

ス レ ッ ド が CLONE_CHILD_SETTID フ ラ グ を 指 定 し た clone (2) に よ っ て 開 始 さ れ た 場 合 、 set_child_tid clone (2) の シ ス テ ム コ ー ル の ctid 引 数 で 渡 さ れ た 値 に 設 定 さ れ る 。

set_child_tid が 設 定 さ れ た 場 合 、 一 番 最 初 に 新 し い ス レ ッ ド が 行 う こ と は 、 こ の ア ド レ ス に 自 身 の ス レ ッ ド ID を 書 き 込 む こ と で あ る 。

clear_child_tid

ス レ ッ ド が CLONE_CHILD_CLEARTID フ ラ グ を 指 定 し た clone (2) に よ っ て 開 始 さ れ た 場 合 、 clear_child_tid clone (2) の シ ス テ ム コ ー ル の ctid 引 数 で 渡 さ れ た 値 に 設 定 さ れ る 。

シ ス テ ム コ ー ル set_tid_address () は 呼 び 出 し 元 ス レ ッ ド の clear_child_tid の 値 を tidptr に 設 定 す る 。

clear_child_tid が NULL で な い ス レ ッ ド が 終 了 す る と 、 そ の ス レ ッ ド が 他 の ス レ ッ ド と メ モ リ ー を 共 有 し て い れ ば 、 clear_child_tid で 指 定 さ れ た ア ド レ ス に 0 が 書 き 込 ま れ 、 カ ー ネ ル は 以 下 の 処 理 を 実 行 す る 。

futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);

こ の 処 理 の 結 果 、 こ の メ モ リ ー ア ド レ ス に 対 す る futex wait を 実 行 し て い る ス レ ッ ド を 一 つ 起 こ す (wake)。 futex wake 操 作 で の エ ラ ー は 無 視 さ れ る 。

返 り 値

set_tid_address () は 常 に 呼 び 出 し 元 の ス レ ッ ド ID を 返 す 。

エ ラ ー

set_tid_address () は 常 に 成 功 す る 。

バ ー ジ ョ ン

こ の 呼 び 出 し は Linux 2.5.48 以 降 で 存 在 す る 。 こ こ で 書 か れ た 詳 細 は Linux 2.5.49 以 降 で 有 効 で あ る 。

準 拠

こ の シ ス テ ム コ ー ル は Linux 固 有 で あ る 。

注 意

glibc は こ の シ ス テ ム コ ー ル に 対 す る ラ ッ パ ー 関 数 を 提 供 し て い な い 。 syscall (2) を 使 っ て 呼 び 出 す こ と 。

関 連 項 目

clone (2), futex (2), gettid (2)

こ の 文 書 に つ い て

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