timer_getoverrun(2)

الاسم
timer_getoverrun - الحصول على عدد التجاوزات لمؤقت لكل عملية بنظام POSIX

المكتبة
مكتبة الوقت الحقيقي (librt، -lrt)

موجز
#include <time.h>

int timer_getoverrun(timer_t timerid);

    متطلبات ماكروات اختبار الميزات لـ glibc (انظر feature_test_macros(7)):

timer_getoverrun():
    _POSIX_C_SOURCE >= 199309L

الوصف
ترجع timer_getoverrun() "عدد التجاوزات" للمؤقت المشار إليه بواسطة timerid. يمكن للتطبيق استخدام عدد التجاوزات لحساب عدد انتهاءات المؤقت التي كانت ستحدث خلال فترة زمنية معينة بدقة. يمكن أن تحدث تجاوزات المؤقت عند استقبال إشعارات الانتهاء عبر الإشارات (SIGEV_SIGNAL) وعبر الخيوط (SIGEV_THREAD).

عندما تُسلَّم إشعارات الانتهاء عبر إشارة، يمكن أن تحدث التجاوزات كما يلي. بغض النظر عما إذا كانت إشارة زمن حقيقي تُستخدم لإشعارات المؤقت أم لا، يقوم النظام بطابور إشارة واحدة على الأكثر لكل مؤقت. (هذا هو السلوك المحدد بواسطة POSIX.1. البديل، طابور إشارة واحدة لكل انتهاء مؤقت، قد يؤدي بسهولة إلى تجاوز الحدود المسموح بها للإشارات المُطابَرة على النظام.) بسبب تأخيرات جدولة النظام، أو لأن الإشارة قد تكون محظورة مؤقتًا، يمكن أن يكون هناك تأخير بين الوقت الذي تُنشأ فيه إشارة الإشعار والوقت الذي تُسلَّم فيه (مثلًا، يتم التقاطها بواسطة معالج إشارة) أو تُقبل (مثلًا، باستخدام sigwaitinfo(2)). في هذه الفترة، قد تحدث انتهاءات مؤقت إضافية. عدد تجاوزات المؤقت هو عدد انتهاءات المؤقت الإضافية التي حدثت بين الوقت الذي نُشئت فيه الإشارة وعندما سُلِّمت أو قُبلت.

يمكن أن تحدث تجاوزات المؤقت أيضًا عندما تُسلَّم إشعارات الانتهاء عبر استدعاء خيط، حيث قد يكون هناك تأخير عشوائي بين انتهاء المؤقت واستدعاء خيط الإشعار، وفي تلك الفترة الزمنية، قد تحدث انتهاءات مؤقت إضافية.

قيمة الإرجاع
عند النجاح، ترجع timer_getoverrun() عدد تجاوزات المؤقت المحدد؛ قد يكون هذا العدد 0 إذا لم تحدث أي تجاوزات. عند الفشل، تُرجع -1، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء

EINVAL
    timerid ليس معرف مؤقت صالح.

الإصدارات
عندما تُسلَّم إشعارات المؤقت عبر الإشارات (SIGEV_SIGNAL)، على لينكس يمكن أيضًا الحصول على عدد التجاوزات عبر حقل si_overrun من بنية siginfo_t (انظر sigaction(2)). يسمح هذا للتطبيق بتجنب الحمل الزائد لإجراء استدعاء نظام للحصول على عدد التجاوزات، لكنه امتداد غير محمول لـ POSIX.1.

يناقش POSIX.1 تجاوزات المؤقت فقط في سياق إشعارات المؤقت باستخدام الإشارات.

المعايير
POSIX.1-2024.

التاريخ
لينكس 2.6. POSIX.1-2001.

العلل
يحدد POSIX.1 أنه إذا كان عدد تجاوزات المؤقت يساوي أو أكبر من الحد الأقصى المُعرَّف بالتنفيذ، DELAYTIMER_MAX، فيجب أن ترجع timer_getoverrun() DELAYTIMER_MAX. ومع ذلك، قبل لينكس 4.19، إذا تجاوزت قيمة التجاوز الحد الأقصى للعدد الصحيح القابل للتمثيل، يدور العداد، ويبدأ مرة أخرى من القيم المنخفضة. منذ لينكس 4.19، ترجع timer_getoverrun() DELAYTIMER_MAX (المُعرَّف كـ INT_MAX في <limits.h>) في هذه الحالة (وتُعاد قيمة التجاوز إلى 0).

أمثلة
انظر timer_create(2).

انظر أيضًا
clock_gettime(2), sigaction(2), signalfd(2), sigwaitinfo(2), timer_create(2), timer_delete(2), timer_settime(2), signal(7), time(7)

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

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

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