.\" -*- 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" "صفحات دليل لينكس 6.18" .SH الاسم get_robust_list, set_robust_list \- الحصول/تعيين قائمة futexes القوية .SH المكتبة مكتبة سي المعيارية (\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 الوصف تتعامل استدعاءات النظام هذه مع قوائم futex القوية لكل خيط. تُدار هذه القوائم في مساحة المستخدم: لا يعرف النواة سوى موقع رأس القائمة. يمكن للخيط إعلام النواة بموقع قائمة futex القوية الخاصة به باستخدام \fBset_robust_list\fP(). يمكن الحصول على عنوان قائمة futex القوية للخيط باستخدام \fBget_robust_list\fP(). .P الغرض من قائمة futex القوية هو ضمان أنه إذا فشل خيط عن طريق الخطأ في إلغاء قفل futex قبل إنهائه أو استدعاء \fBexecve\fP(2)، يتم إعلام خيط آخر ينتظر على ذلك futex بأن المالك السابق للـ futex قد مات. يتكون هذا الإعلام من جزأين: يتم تعيين بت \fBFUTEX_OWNER_DIED\fP في كلمة futex، وتقوم النواة بتنفيذ عملية \fBfutex\fP(2) \fBFUTEX_WAKE\fP على أحد الخيوط المنتظرة على الـ futex. .P يقوم استدعاء النظام \fBget_robust_list\fP() بإرجاع رأس قائمة futex القوية للخيط الذي تم تحديد معرف الخيط الخاص به في \fIpid\fP. إذا كان \fIpid\fP يساوي 0، يتم إرجاع رأس القائمة للخيط المستدعي. يتم تخزين رأس القائمة في الموقع المشار إليه بواسطة \fIhead_ptr\fP. يتم تخزين حجم الكائن المشار إليه بواسطة \fI**head_ptr\fP في \fIsizep\fP. .P يخضع الإذن لاستخدام \fBget_robust_list\fP() لفحص وضع الوصول ptrace \fBPTRACE_MODE_READ_REALCREDS\fP؛ انظر \fBptrace\fP(2). .P يطلب استدعاء النظام \fBset_robust_list\fP() من النواة تسجيل رأس قائمة futexes القوية المملوكة للخيط المستدعي. الوسيطة \fIhead\fP هي رأس القائمة المراد تسجيلها. يجب أن تكون الوسيطة \fIsize\fP مساوية لـ \fIsizeof(*head)\fP. .SH "قيمة الإرجاع" يقوم استدعاءا النظام \fBset_robust_list\fP() و \fBget_robust_list\fP() بإرجاع صفر عند نجاح العملية، أو رمز خطأ بخلاف ذلك. .SH الأخطاء يمكن أن يفشل استدعاء النظام \fBset_robust_list\fP() مع الخطأ التالي: .TP \fBEINVAL\fP لا يساوي \fIsize\fP \fIsizeof(struct\ robust_list_head)\fP. .P يمكن أن يفشل استدعاء النظام \fBget_robust_list\fP() مع الأخطاء التالية: .TP \fBEFAULT\fP لا يمكن تخزين رأس قائمة futex القوية في الموقع \fIhead\fP. .TP \fBEPERM\fP لا يمتلك الاستدعاء الحالي الإذن لرؤية قائمة futex القوية للخيط ذي معرف الخيط \fIpid\fP، ولا يمتلك القدرة \fBCAP_SYS_PTRACE\fP. .TP \fBESRCH\fP لم يتم العثور على خيط بمعرف الخيط \fIpid\fP. .SH الإصدارات أُضيفت استدعاءات النظام هذه في Linux 2.6.17. .SH ملاحظات لا تحتاج التطبيقات العادية إلى استدعاءات النظام هذه. .P يمكن أن يمتلك الخيط قائمة futex قوية واحدة فقط؛ لذلك يجب على التطبيقات التي ترغب في استخدام هذه الوظيفة استخدام كائنات المزامنة القوية المقدمة من glibc. .P .\" commit 8141c7f3e7aee618312fa1c15109e1219de784a7 في التنفيذ الأولي، كان يتم إعلام الخيط المنتظر على futex بأن المالك قد مات فقط إذا أنهى المالك. بدءًا من Linux 2.6.28، تم توسيع الإعلام ليشمل الحالة التي يقوم فيها المالك بتنفيذ \fBexecve\fP(2). .P معرفات الخيوط المذكورة في النص الرئيسي هي معرفات خيوط \fIkernel\fP من النوع الذي يتم إرجاعه بواسطة \fBclone\fP(2) و \fBgettid\fP(2). .SH "انظر أيضًا" \fBfutex\fP(2), \fBpthread_mutexattr_setrobust\fP(3) .P \fIDocumentation/robust\-futexes.rst\fP و \fIDocumentation/robust\-futex\-ABI.rst\fP في شجرة مصدر نواة Linux .\" http://lwn.net/Articles/172149/ .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .