.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2006 Red Hat, Inc. All Rights Reserved. .\" Written by Ivana Varekova .\" and Copyright (c) 2017, Michael Kerrisk .\" .\" 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 "31 октября 2023 г." "Linux man\-pages 6.06" .SH ИМЯ get_robust_list, set_robust_list \- возвращает/назначает список надёжных фьютексов (futexes) .SH LIBRARY Standard C library (\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\fIlen_ptr\fP\fB);\fP \fBlong syscall(SYS_set_robust_list,\fP \fB struct robust_list_head *\fP\fIhead\fP\fB, size_t \fP\fIlen\fP\fB);\fP .fi .P \fINote\fP: glibc provides no wrappers for these system calls, necessitating the use of \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 Системный вызов \fBget_robust_list\fP() возвращает начало списка надёжных фьютексов нити, идентификатор которой указан в \fIpid\fP. Если значение \fIpid\fP равно 0, то возвращается начало списка вызывающей нити. Начало списка сохраняется в расположение, указанное \fIhead_ptr\fP. Размер объекта, указываемый \fI**head_ptr\fP, сохраняется в \fIlen_ptr\fP. .P Право вызывать \fBget_robust_list\fP() определяется проверкой режима доступа ptrace \fBPTRACE_MODE_READ_REALCREDS\fP; смотрите \fBptrace\fP(2). .P Системный вызов \fBset_robust_list\fP() запрашивает ядро записать начало списка надёжных фьютексов, принадлежащего вызывающей нити. Аргумент \fIhead\fP содержит начало списка для записи. Аргумент \fIlen\fP должен быть равен \fIsizeof(*head)\fP. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" Системные вызовы \fBset_robust_list\fP() и \fBget_robust_list\fP() возвращают ноль при успешном выполнении и код ошибки в противном случае. .SH ОШИБКИ Системный вызов \fBpthread_setcancelstate\fP() может завершиться со следующей ошибкой: .TP \fBEINVAL\fP Значение \fIlen\fP не равно \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 ЗАМЕЧАНИЯ These system calls are not needed by normal applications. .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.txt\fP и \fIDocumentation/robust\-futex\-ABI.txt\fP в дереве исходного кода ядра Linux .\" http://lwn.net/Articles/172149/ .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Azamat Hackimov , Dmitry Bolkhovskikh , 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 .