Provided by: manpages-ja-dev_0.5.0.0.20140515+dfsg-2_all bug

名前

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

書式

       #include <linux/unistd.h>

       long set_tid_address(int *tidptr);

説明

       各プロセスについて、カーネルは  set_child_tidclear_child_tid という 2 つの属性を保持す
       る。この 2 つの属性はデフォルトでは NULL である。

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

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

       clear_child_tid
              プロセスが CLONE_CHILD_CLEARTID フラグを指定した clone(2)  によって開始された場合、
              clear_child_tidclone(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/ に書かれている。