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 |