Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       set_tid_address - устанавливает указатель идентификатора нити

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <sys/syscall.h>      /* определения констант SYS_* */
       #include <unistd.h>

       pid_t syscall(SYS_set_tid_address, int *tidptr);

       Note: glibc provides no wrapper for set_tid_address(), necessitating the use of syscall(2).

ОПИСАНИЕ

       В  ядре  для  каждой нити хранится два атрибута (адреса): set_child_tid и clear_child_tid. Их значение по
       умолчанию равно NULL.

       set_child_tid
              Если нить запущена с помощью clone(2)  с  флагом  CLONE_CHILD_SETTID,  то  значение  set_child_tid
              устанавливается равным аргументу системного вызова ctid.

              Если  set_child_tid  присвоено  значение,  то самое первое действие, которое выполняется для новой
              нити, это запись ID нити по этому адресу.

       clear_child_tid
              Если нить запущена с помощью clone(2) с флагом CLONE_CHILD_CLEARTID, то  значение  clear_child_tid
              устанавливается равным аргументу системного вызова ctid.

       Системный вызов set_tid_address() устанавливает у вызывающей нити значение clear_child_tid равным tidptr.

       Если  нить, чьё значение clear_child_tid не равно NULL, завершается и если нить использовала общую память
       с другими нитями, то по адресу, указанному в clear_child_tid, записывается 0 и ядро  выполняет  следующую
       операцию:

           futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);

       Действие  этой  операции  в  том,  что  она  пробуждает  единственную нить, выполнявшую ожидание futex на
       расположение памяти. Ошибки операции пробуждения futex игнорируются.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       Вызов set_tid_address() всегда возвращает ID вызывающей нити.

ОШИБКИ

       Вызов set_tid_address() всегда завершается без ошибок.

ВЕРСИИ

       Данный вызов появился в Linux 2.5.48. Представленное здесь описание соответствует вызову, начиная с Linux
       2.5.49.

СТАНДАРТЫ

       Данный вызов есть только в Linux.

СМ. ТАКЖЕ

       clone(2), futex(2), gettid(2)

ПЕРЕВОД

       Русский перевод этой страницы  руководства  был  сделан  Alexander  Golubev  <fatzer2@gmail.com>,  Azamat
       Hackimov   <azamat.hackimov@gmail.com>,   Hotellook,   Nikita   <zxcvbnm3230@mail.ru>,  Spiros  Georgaras
       <sng@hellug.gr>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и  Иван  Павлов
       <pavia00@gmail.com>

       Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3
       или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо
       на man-pages-ru-talks@lists.sourceforge.net.

Linux man-pages 6.03                           30 октября 2022 г.                             set_tid_address(2)