Scroll to navigation

set_tid_address(2) System Calls Manual set_tid_address(2)

الاسم

set_tid_address - ضبط المؤشر لمعرف الخيط

المكتبة

مكتبة سي المعيارية (libc، -lc)

موجز

#include <sys/syscall.h>      /* تعريف ثوابت SYS_* */
#include <unistd.h>
pid_t syscall(SYS_set_tid_address, int *tidptr);

ملاحظة: لا توفر glibc غلافًا لـ set_tid_address()، مما يستلزم استخدام syscall(2).

الوصف

لكل خيط، يحافظ النواة على سمتين (عناوين) تُدعيان set_child_tid و clear_child_tid. تحتوي هاتان السمتان على القيمة NULL مبدئيًا.

إذا بدأ خيط باستخدام clone(2) مع العلم CLONE_CHILD_SETTID، يُضبط set_child_tid إلى القيمة الممررة في وسيط ctid لتلك الاستدعاء النظامي.
عند ضبط set_child_tid، أول شيء يفعله الخيط الجديد هو كتابة معرف خيطه في هذا العنوان.
إذا بدأ خيط باستخدام clone(2) مع العلم CLONE_CHILD_CLEARTID، يُضبط clear_child_tid إلى القيمة الممررة في وسيط ctid لتلك الاستدعاء النظامي.

يضبط الاستدعاء النظامي set_tid_address() قيمة clear_child_tid للخيط المستدعي إلى tidptr.

عندما ينتهي خيط لا تكون قيمة clear_child_tid فيه NULL، فإنه، إذا كان الخيط يشارك الذاكرة مع خيوط أخرى، يُكتب 0 في العنوان المحدد في clear_child_tid وتُنفذ النواة العملية التالية:


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

تأثير هذه العملية هو إيقاظ خيط واحد يُنفذ انتظار futex على موقع الذاكرة. تُتجاهل الأخطاء من عملية إيقاظ futex.

قيمة الإرجاع

تُرجع set_tid_address() دائمًا معرف خيط المستدعي.

الأخطاء

تنجح set_tid_address() دائمًا.

المعايير

لينكس.

التاريخ

لينكس 2.5.48.

التفاصيل المقدمة هنا صالحة منذ لينكس 2.5.49.

انظر أيضًا

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

ترجمة

تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.

2 مايو 2024 صفحات دليل لينكس 6.9.1