restart_syscall(2)

الاسم
restart_syscall - إعادة استدعاء نظام بعد مقاطعته بإشارة توقف

موجز
long restart_syscall(void);

ملاحظة: لا يوجد مغلف glibc لنداء النظام هذا؛ انظر NOTES.

الوصف
استدعاء النظام restart_syscall() يُستخدم لإعادة استدعاءات نظام معينة بعد أن تُستأنف عملية أوقفتها إشارة (مثل SIGSTOP أو SIGTSTP) لاحقًا بعد استقبال إشارة SIGCONT. صُمم استدعاء النظام هذا للاستخدام الداخلي فقط بواسطة النواة.

يُستخدم restart_syscall() لإعادة استدعاءات النظام فقط التي، عند إعادة تشغيلها، يجب أن تضبط معاملاتها الزمنية—وهي poll(2) (منذ Linux 2.6.24)، nanosleep(2) (منذ Linux 2.6)، clock_nanosleep(2) (منذ Linux 2.6)، و futex(2)، عند استخدامها مع عمليات FUTEX_WAIT (منذ Linux 2.6.22) و FUTEX_WAIT_BITSET (منذ Linux 2.6.31). يعيد restart_syscall() استدعاء النظام المتقطع مع وسيط زمني مضبوط بشكل مناسب لمراعاة الوقت المنقضي بالفعل (بما في ذلك الوقت الذي أوقفت فيه العملية بإشارة). بدون آلية restart_syscall()، لن تخصم إعادة تشغيل استدعاءات النظام هذه الوقت المنقضي بالفعل بشكل صحيح عند استمرار تنفيذ العملية.

قيمة الإرجاع
قيمة الإرجاع لـ restart_syscall() هي قيمة الإرجاع لأي استدعاء نظام يُعاد تشغيله.

الأخطاء
يُضبط errno وفقًا للأخطاء لأي استدعاء نظام يُعاد تشغيله بواسطة restart_syscall().

المعايير
لينكس.

التاريخ
Linux 2.6.

ملاحظات
لا يوجد غلاف glibc لاستدعاء النظام هذا، لأنه مخصص للاستخدام فقط بواسطة النواة ولا ينبغي أبدًا استدعاؤه بواسطة التطبيقات.

تستخدم النواة restart_syscall() لضمان أنه عند إعادة تشغيل استدعاء نظام بعد أن أوقفت إشارة عملية ثم استؤنفت بواسطة SIGCONT، فإن الوقت الذي قضته العملية في الحالة الموقوفة يُحتسب ضمن فترة المهلة المحددة في استدعاء النظام الأصلي. في حالة استدعاءات النظام التي تأخذ وسيط مهلة وتُعاد تشغيلها آليًا بعد إشارة توقف بالإضافة إلى SIGCONT، ولكنها لا تحتوي على آلية restart_syscall() المضمنة، فإنه بعد استئناف تنفيذ العملية، الوقت الذي قضته العملية في حالة التوقف لا يُحتسب ضمن قيمة المهلة. الأمثلة البارزة لاستدعاءات النظام التي تعاني من هذه المشكلة هي ppoll(2)، select(2)، و pselect(2).

من مساحة المستخدم، تكون عملية restart_syscall() غير مرئية إلى حد كبير: بالنسبة للعملية التي أجرت استدعاء النظام الذي يُعاد تشغيله، يبدو كما لو أن استدعاء النظام هذا نُفذ وعاد بالطريقة المعتادة.

انظر أيضًا
sigaction(2), sigreturn(2), signal(7)

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

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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