.\" -*- coding: UTF-8 -*- .\" Copyright 2006, Red Hat, Inc .\" Copyright 2017, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" FIXME Something could be added to this page (or exit(2)) .\" about exit_robust_list processing .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH get_robust_list 2 "8 февраля 2026 г." "Linux man\-pages 6.18" .SH НАИМЕНОВАНИЕ get_robust_list, set_robust_list \- возвращает/назначает список надёжных фьютексов (futexes) .SH БИБЛИОТЕКА Стандартная библиотека языка C (\fIlibc\fP,\ \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP /* определения \fBstruct robust_list_head\fP */ \fB#include \fP /* определения констант \fBSYS_*\fP */ \fB#include \fP .P \fBlong syscall(SYS_get_robust_list, int \fP\fIpid\fP\fB,\fP \fB struct robust_list_head **\fP\fIhead_ptr\fP\fB, size_t *\fP\fIsizep\fP\fB);\fP \fBlong syscall(SYS_set_robust_list,\fP \fB struct robust_list_head *\fP\fIhead\fP\fB, size_t \fP\fIsize\fP\fB);\fP .fi .P \fIПримечание\fP: glibc не предоставляет обёрточных функций для этих системных вызовов, что делает необходимым использование \fBsyscall\fP(2). .SH ОПИСАНИЕ Данные системные вызовы служат для ведения понетевых списков надёжных фьютексов. Данные списки управляются из пользовательского пространства: ядро знает только расположение начала списка. Нить может информировать ядро о расположении своего списка надёжных фьютексов с помощью \fBset_robust_list\fP(). Адрес списка надёжных фьютексов нити можно получить с помощью \fBget_robust_list\fP(). .P Предназначением списка надёжных фьютексов является гарантия того, что если нить неожиданно из\-за ошибки не разблокирует фьютекс перед завершением или вызовом \fBexecve\fP(2), другая ожидающая этот фьютекс нить получит уведомление о том, что бывший владелец фьютекса прекратил работу. Данное уведомление состоит из двух частей: установленного бита \fBFUTEX_OWNER_DIED\fP в слове фьютекса и выполнение ядром \fBfutex\fP(2) с операцией \fBFUTEX_WAKE\fP для одной из нитей, ожидающих фьютекс. .P The \fBget_robust_list\fP() system call returns the head of the robust futex list of the thread whose thread ID is specified in \fIpid\fP. If \fIpid\fP is 0, the head of the list for the calling thread is returned. The list head is stored in the location pointed to by \fIhead_ptr\fP. The size of the object pointed to by \fI**head_ptr\fP is stored in \fIsizep\fP. .P Право вызывать \fBget_robust_list\fP() определяется проверкой режима доступа ptrace \fBPTRACE_MODE_READ_REALCREDS\fP; смотрите \fBptrace\fP(2). .P The \fBset_robust_list\fP() system call requests the kernel to record the head of the list of robust futexes owned by the calling thread. The \fIhead\fP argument is the list head to record. The \fIsize\fP argument should be \fIsizeof(*head)\fP. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" Системные вызовы \fBset_robust_list\fP() и \fBget_robust_list\fP() возвращают ноль при успешном выполнении и код ошибки в противном случае. .SH ОШИБКИ Системный вызов \fBpthread_setcancelstate\fP() может завершиться со следующей ошибкой: .TP \fBEINVAL\fP \fIsize\fP does not equal \fIsizeof(struct\ robust_list_head)\fP. .P Системный вызов \fBget_robust_list\fP() может завершиться со следующими ошибками: .TP \fBEFAULT\fP Начало списка надёжных фьютексов невозможно сохранить в расположение \fIhead\fP. .TP \fBEPERM\fP Вызывающий процесс не имеет прав на просмотр списка надёжных фьютексов нити с идентификатором \fIpid\fP и не имеет мандата \fBCAP_SYS_PTRACE\fP. .TP \fBESRCH\fP Нить с идентификатором \fIpid\fP не найдена. .SH ВЕРСИИ Данные системные вызовы были добавлены в Linux 2.6.17. .SH ПРИМЕЧАНИЯ Данные системные вызовы не нужны обычным приложениям. .P В нити может быть только один список надёжных фьютексов; поэтому приложения, которым требуется данное свойство, должны использовать мьютексы, предоставляемые glibc. .P .\" commit 8141c7f3e7aee618312fa1c15109e1219de784a7 В первоначальной реализации нить, ожидающая фьютекс, уведомлялась о кончине владельца только, если владелец прекращал работу. Начиная с Linux 2.6.28 уведомление также посылается при выполнении владельцем \fBexecve\fP(2). .P Идентификаторы нитей, упоминаемые в основном тексте, являются \fIядерными\fP идентификаторами нити, которые возвращаются из \fBclone\fP(2) и \fBgettid\fP(2). .SH "СМОТРИТЕ ТАКЖЕ" \fBfutex\fP(2), \fBpthread_mutexattr_setrobust\fP(3) .P \fIDocumentation/robust\-futexes.rst\fP and \fIDocumentation/robust\-futex\-ABI.rst\fP in the Linux kernel source tree .\" http://lwn.net/Articles/172149/ .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал(и) Azamat Hackimov , Dmitry Bolkhovskikh , Vladislav , Yuri Kozlov и Иван Павлов . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT debian-l10n-russian@lists.debian.org списка рассылки русских переводчиков .ME .