set_tid_addressのヘルプ・マニュアル
日本語 英語
set_tid_address --help
man set_tid_address
SET_TID_ADDRESS(2) Linux Programmer’s Manual SET_TID_ADDRESS(2)
名前
set_tid_address - スレッド ID へのポインタを設定する
書式
#include
long set_tid_address(int *tidptr);
説明
カ ーネルは各プロセスについて 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 を返す。
エラー
set_tid_address() は常に成功する。
バージョン
この呼び出しは Linux 2.5.48 以降で存在する。ここで書かれた詳細は Linux
2.5.49 以降で有効である。
準拠
このシステムコールは Linux 独自である。
関連項目
clone(2), futex(2)
Linux 2004-09-10 SET_TID_ADDRESS(2)
SET_TID_ADDRESS(2) Linux Programmer’s Manual SET_TID_ADDRESS(2)
NAME
set_tid_address - set pointer to thread ID
SYNOPSIS
#include
long set_tid_address(int *tidptr);
DESCRIPTION
The kernel keeps for each process two values called set_child_tid and
clear_child_tid that are NULL by default.
set_child_tid
If a process is started using clone(2) with the CLONE_CHILD_SETTID
flag, set_child_tid is set to child_tidptr, the fifth argument of that
system call.
When set_child_tid is set, the very first thing the new process does is
writing its PID at this address.
clear_child_tid
If a process is started using clone(2) with the CLONE_CHILD_CLEARTID
flag, clear_child_tid is set to child_tidptr, the fifth argument of
that system call.
The system call set_tid_address() sets the clear_child_tid value for
the calling process to tidptr.
When clear_child_tid is set, and the process exits, and the process was
sharing memory with other processes or threads, then 0 is written at
this address, and a futex(child_tidptr, FUTEX_WAKE, 1, NULL, NULL, 0);
call is done. (That is, wake a single process waiting on this futex.)
Errors are ignored.
RETURN VALUE
set_tid_address() always returns the PID of the calling process.
ERRORS
set_tid_address() always succeeds.
VERSIONS
This call is present since Linux 2.5.48. Details as given here are
valid since Linux 2.5.49.
CONFORMING TO
This system call is Linux-specific.
SEE ALSO
clone(2), futex(2)
COLOPHON
This page is part of release 3.22 of the Linux man-pages project. A
description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.
Linux 2004-09-10 SET_TID_ADDRESS(2)