SET_TID_ADDRESS(2) | Linux Programmer's Manual | SET_TID_ADDRESS(2) |
set_tid_address - スレッド ID へのポインターを設定する
#include <linux/unistd.h> long set_tid_address(int *tidptr);
各スレッドについて、カーネルは set_child_tid と clear_child_tid という 2 つの属性を保持する。この 2 つの属性はデフォルトでは NULL である。
システムコール 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 固有である。
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
2014-07-08 | Linux |