|
HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > s > set_tid_address - システムコールの説明 set_tid_address - システムコールの説明 - Linux コマンド集 一覧表名前set_tid_address - スレッド ID へのポインタを設定する 書式
#include <linux/unistd.h> 説明
カーネルは各プロセスについて
set_child_tidと
clear_child_tidという 2 つの値を保持する。
これらはデフォルトでは NULL である。
set_child_tidプロセスが CLONE_CHILD_SETTIDフラグを指定した clone(2) によって開始された場合、 set_child_tidは child_tidptrに設定される。 これは clone(2) のシステムコールの 5 番目の引き数である。 set_child_tidが設定された場合、一番最初に新しいプロセスが行うことは、
このアドレスに自身の PID を書き込むことである。
clear_child_tidプロセスが CLONE_CHILD_CLEARTIDフラグを指定した clone(2) によって開始された場合、 clear_child_tidは child_tidptrに設定される。 これは clone(2) のシステムコールの 5 番目の引き数である。 システムコール set_tid_address()は呼び出し元プロセスの clear_child_tidの値を tidptrに設定する。 clear_child_tidが設定されているときにプロセスが終了すると、 そのプロセスは他のプロセスまたはスレッドとメモリを共有しているので、 このアドレスに 0 が書き込まれ、 futex(child_tidptr, FUTEX_WAKE, 1, NULL, NULL, 0);の呼び出しが実行される (つまり、この futex で待っている 1 つのプロセスを起こす (wake))。 エラーは無視される。 返り値set_tid_address()は現在のプロセスの PID を返す。 履歴この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux 2.5.49 以降で有効である。 準拠このシステムコールは Linux 独自である。 関連項目
|
|