OSDN Git Service

(split) LDP: Update original to LDP v3.50.
[linuxjm/LDP_man-pages.git] / original / man2 / set_tid_address.2
index 133502c..9bdbf12 100644 (file)
@@ -1,5 +1,6 @@
 .\" Copyright (C) 2004 Andries Brouwer (aeb@cwi.nl)
 .\"
+.\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" manual provided the copyright notice and this permission notice are
 .\" preserved on all copies.
@@ -19,8 +20,9 @@
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
 .\"
-.TH SET_TID_ADDRESS 2 2004-09-10 "Linux" "Linux Programmer's Manual"
+.TH SET_TID_ADDRESS 2 2012-07-19 "Linux" "Linux Programmer's Manual"
 .SH NAME
 set_tid_address \- set pointer to thread ID
 .SH SYNOPSIS
@@ -30,36 +32,38 @@ set_tid_address \- set pointer to thread ID
 .BI "long set_tid_address(int *" tidptr );
 .fi
 .SH DESCRIPTION
-The kernel keeps for each process two values called
+For each process, the kernel maintains two attributes (addresses) called
 .I set_child_tid
 and
-.I clear_child_tid
-that are NULL by default.
-.SS set_child_tid
+.IR clear_child_tid .
+These two attributes contain the value NULL by default.
+.TP
+.I set_child_tid
 If a process is started using
 .BR clone (2)
 with the
 .B CLONE_CHILD_SETTID
 flag,
 .I set_child_tid
-is set to
-.IR child_tidptr ,
-the fifth argument of that system call.
-.LP
+is set to the value passed in the
+.I ctid
+argument of that system call.
+.IP
 When
 .I set_child_tid
 is set, the very first thing the new process does
 is writing its PID at this address.
-.SS clear_child_tid
+.TP
+.I clear_child_tid
 If a process is started using
 .BR clone (2)
 with the
 .B CLONE_CHILD_CLEARTID
 flag,
 .I clear_child_tid
-is set to
-.IR child_tidptr ,
-the fifth argument of that system call.
+is set to the value passed in the
+.I ctid
+argument of that system call.
 .LP
 The system call
 .BR set_tid_address ()
@@ -68,16 +72,20 @@ sets the
 value for the calling process to
 .IR tidptr .
 .LP
-When
+When a process whose
+.I clear_child_tid
+is not NULL terminates, then,
+if the process is sharing memory with other processes or threads,
+then 0 is written at the address specified in
 .I 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
-.I 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.
-.SH "RETURN VALUE"
+and the kernel performs the following operation:
+
+    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);
+
+The effect of this operation is to wake a single process that
+is performing a futex wait on the memory location.
+Errors from the futex wake operation are ignored.
+.SH RETURN VALUE
 .BR set_tid_address ()
 always returns the PID of the calling process.
 .SH ERRORS
@@ -86,8 +94,8 @@ always succeeds.
 .SH VERSIONS
 This call is present since Linux 2.5.48.
 Details as given here are valid since Linux 2.5.49.
-.SH "CONFORMING TO"
+.SH CONFORMING TO
 This system call is Linux-specific.
-.SH "SEE ALSO"
+.SH SEE ALSO
 .BR clone (2),
 .BR futex (2)