sys_set_tid_address [kernel/fork.c]
Sets pointer to thread ID. 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 sys_clone with the CLONE_CHILD_SETTID flag, set_child_tid is set to the fifth parameter 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 sys_clone with the CLONE_CHILD_CLEARTID flag, clear_child_tid is set to the fifth parameter of that system call. The system call set_tid_address sets the clear_child_tid value for the calling process to a value pointed by ebx. 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 sys_futex with ebx=child_tidptr, edx=FUTEX_WAKE, edx=1; call is done. (That is, wake a single process waiting on this futex.) Errors are ignored. Arguments
eax | 258
ebx | Pointer to a value specifying the thread ID.
Return values This system call always succeeds and returns PID of the current process. Remarks n/a Compatibility n/a