timer_settime(2)

الاسم
timer_settime, timer_gettime - تسليح/نزع سلاح وجلب حالة مؤقت لكل عملية في POSIX

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

موجز
#include <time.h>

int timer_gettime(timer_t timerid, struct itimerspec *curr_value);
int timer_settime(timer_t timerid, int flags,
                  const struct itimerspec *restrict new_value,
                  struct itimerspec *_Nullable restrict old_value);

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

timer_settime()، timer_gettime():
    _POSIX_C_SOURCE >= 199309L

الوصف
timer_settime() تسلح أو تنزع سلاح المؤقت المعرف بواسطة timerid. الوسيطة new_value هي مؤشر لبنية itimerspec تحدد القيمة الأولية الجديدة والفاصل الزمني الجديد للمؤقت. بنية itimerspec موصوفة في itimerspec(3type).

كل من البنى الفرعية لبنية itimerspec هي بنية timespec(3) تسمح بتحديد قيمة زمنية بالثواني والنانوثواني. تقاس هذه القيم الزمنية وفقًا للساعة التي حددت عند إنشاء المؤقت بواسطة timer_create(2).

إذا حدد new_value->it_value قيمة غير صفرية (أي، أي حقل فرعي غير صفري)، فإن timer_settime() تسلح (تبدأ) المؤقت، وتضبطه لينتهي مبدئيًا في الوقت المحدد. (إذا كان المؤقت مسلحًا بالفعل، فستُستبدل الإعدادات السابقة.) إذا حدد new_value->it_value قيمة صفرية (أي، كلا الحقلين الفرعيين صفريين)، فسيُنزع سلاح المؤقت.

حقل new_value->it_interval يحدد فترة المؤقت، بالثواني والنانوثواني. إذا كان هذا الحقل غير صفري، ففي كل مرة ينتهي فيها مؤقت مسلح، يُعاد تحميل المؤقت من القيمة المحددة في new_value->it_interval. إذا حدد new_value->it_interval قيمة صفرية، فإن المؤقت ينتهي مرة واحدة فقط، في الوقت المحدد بواسطة it_value.

مبدئيًا، يُفسر وقت الانتهاء الأولي المحدد في new_value->it_value بالنسبة للوقت الحالي على ساعة المؤقت وقت الاستدعاء. يمكن تعديل ذلك بتحديد TIMER_ABSTIME في flags، وفي هذه الحالة يُفسر new_value->it_value كقيمة مطلقة كما تُقاس على ساعة المؤقت؛ أي، سينتهي المؤقت عندما تصل قيمة الساعة إلى القيمة المحددة بواسطة new_value->it_value. إذا كان الوقت المطلق المحدد قد مضى بالفعل، فإن المؤقت ينتهي فورًا، وسيُضبط عدد التجاوز (انظر timer_getoverrun(2)) بشكل صحيح.

إذا ضُبطت قيمة ساعة CLOCK_REALTIME أثناء تسليح مؤقت مطلق مبني على تلك الساعة، فسيُضبط انتهاء المؤقت بشكل مناسب. التعديلات على ساعة CLOCK_REALTIME ليس لها تأثير على المؤقتات النسبية المبنية على تلك الساعة.

إذا لم يكن old_value NULL، فإنه يشير إلى مخزن مؤقت يُستخدم لإرجاع الفاصل الزمني السابق للمؤقت (في old_value->it_interval) ومقدار الوقت حتى كان سينتهي المؤقت سابقًا في المرة التالية (في old_value->it_value).

timer_gettime() تُرجع الوقت حتى الانتهاء التالي، والفاصل الزمني، للمؤقت المحدد بواسطة timerid، في المخزن المؤقت المشار إليه بواسطة curr_value. الوقت المتبقي حتى انتهاء المؤقت التالي يُعاد في curr_value->it_value؛ هذه دائمًا قيمة نسبية، بغض النظر عما إذا كانت علامة TIMER_ABSTIME قد استُخدمت عند تسليح المؤقت. إذا كانت القيمة المعادة في curr_value->it_value صفرًا، فإن المؤقت حاليًا منزوع السلاح. يُعاد الفاصل الزمني للمؤقت في curr_value->it_interval. إذا كانت القيمة المعادة في curr_value->it_interval صفرًا، فهذا مؤقت "أحادي الطلقة".

قيمة الإرجاع
عند النجاح، تُرجع timer_settime() و timer_gettime() 0. عند الخطأ، يُعاد -1، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء
قد تفشل هذه الدوال مع الأخطاء التالية:

EFAULT
    new_value، أو old_value، أو curr_value ليس مؤشراً صالحاً.

EINVAL
    timerid غير صالح.

قد تفشل timer_settime() مع الأخطاء التالية:

EINVAL
    new_value.it_value سالب؛ أو new_value.it_value.tv_nsec سالب أو أكبر من 999,999,999.

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

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

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

انظر أيضًا
timer_create(2)، timer_getoverrun(2)، timespec(3)، time(7)

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

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

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