Provided by: manpages-ja-dev_0.5.0.0.20140515+dfsg-2_all
名前
set_tid_address - スレッド ID へのポインタを設定する
書式
#include <linux/unistd.h> long set_tid_address(int *tidptr);
説明
各プロセスについて、カーネルは 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 が設定された場合、一番最初に新しいプロセスが行うことは、 このアドレス に自身の PID を書き込むことである。 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() は常に現在のプロセスの PID を返す。
エラー
set_tid_address() は常に成功する。
バージョン
この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux 2.5.49 以降で有効 である。
準拠
このシステムコールは Linux 固有である。
関連項目
clone(2), futex(2)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。