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 مبدئيًا.

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

    عند ضبط set_child_tid، أول شيء يفعله الخيط الجديد هو كتابة معرف خيطه في هذا العنوان.

clear_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 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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