.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2004 Andries Brouwer (aeb@cwi.nl) .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH set_tid_address 2 "30 октября 2022 г." "Linux man\-pages 6.03" .SH ИМЯ set_tid_address \- устанавливает указатель идентификатора нити .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP /* определения констант \fBSYS_*\fP */ \fB#include \fP .PP \fBpid_t syscall(SYS_set_tid_address, int *\fP\fItidptr\fP\fB);\fP .fi .PP \fINote\fP: glibc provides no wrapper for \fBset_tid_address\fP(), necessitating the use of \fBsyscall\fP(2). .SH ОПИСАНИЕ В ядре для каждой нити хранится два атрибута (адреса): \fIset_child_tid\fP и \fIclear_child_tid\fP. Их значение по умолчанию равно NULL. .TP \fIset_child_tid\fP Если нить запущена с помощью \fBclone\fP(2) с флагом \fBCLONE_CHILD_SETTID\fP, то значение \fIset_child_tid\fP устанавливается равным аргументу системного вызова \fIctid\fP. .IP Если \fIset_child_tid\fP присвоено значение, то самое первое действие, которое выполняется для новой нити, это запись ID нити по этому адресу. .TP \fIclear_child_tid\fP Если нить запущена с помощью \fBclone\fP(2) с флагом \fBCLONE_CHILD_CLEARTID\fP, то значение \fIclear_child_tid\fP устанавливается равным аргументу системного вызова \fIctid\fP. .PP Системный вызов \fBset_tid_address\fP() устанавливает у вызывающей нити значение \fIclear_child_tid\fP равным \fItidptr\fP. .PP Если нить, чьё значение \fIclear_child_tid\fP не равно NULL, завершается и если нить использовала общую память с другими нитями, то по адресу, указанному в \fIclear_child_tid\fP, записывается 0 и ядро выполняет следующую операцию: .PP .in +4n .EX futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0); .EE .in .PP Действие этой операции в том, что она пробуждает единственную нить, выполнявшую ожидание futex на расположение памяти. Ошибки операции пробуждения futex игнорируются. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" Вызов \fBset_tid_address\fP() всегда возвращает ID вызывающей нити. .SH ОШИБКИ Вызов \fBset_tid_address\fP() всегда завершается без ошибок. .SH ВЕРСИИ Данный вызов появился в Linux 2.5.48. Представленное здесь описание соответствует вызову, начиная с Linux 2.5.49. .SH СТАНДАРТЫ Данный вызов есть только в Linux. .SH "СМ. ТАКЖЕ" \fBclone\fP(2), \fBfutex\fP(2), \fBgettid\fP(2) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Alexander Golubev , Azamat Hackimov , Hotellook, Nikita , Spiros Georgaras , Vladislav , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .