.\" -*- coding: UTF-8 -*- .\" Copyright 2014, Michael Kerrisk .\" Copyright 2014, Peter Zijlstra .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH sched_setattr 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم sched_setattr, sched_getattr \- ضبط وجلب سياسة الجدولة وسماتها .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP /* Definition of \fBSCHED_*\fP constants */ \fB#include \fP /* Definition of \fBSYS_*\fP constants */ \fB#include \fP .P \fBint syscall(SYS_sched_setattr, pid_t \fP\fIpid\fP\fB, struct sched_attr *\fP\fIattr\fP\fB,\fP \fB unsigned int \fP\fIflags\fP\fB);\fP \fBint syscall(SYS_sched_getattr, pid_t \fP\fIpid\fP\fB, struct sched_attr *\fP\fIattr\fP\fB,\fP \fB unsigned int \fP\fIsize\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP .fi .\" FIXME . Add feature test macro requirements .P \fIملاحظة\fP: لا توفر glibc أغلفة لنداءات النظام هذه، مما يستلزم استخدام \fBsyscall\fP(2). .SH الوصف .SS sched_setattr() استدعاء النظام \fBsched_setattr\fP() يضبط سياسة الجدولة والسمات المرتبطة بها للخيط الذي يُحدد معرفه في \fIpid\fP. إذا كان \fIpid\fP يساوي صفرًا، تُضبط سياسة الجدولة وسمات الخيط المستدعي. .P حاليًا، يدعم لينكس سياسات الجدولة "العادية" (أي غير الحقيقية) التالية كقيم يمكن تحديدها في \fIpolicy\fP: .TP 14 \fBSCHED_OTHER\fP .\" In the 2.6 kernel sources, SCHED_OTHER is actually called .\" SCHED_NORMAL. سياسة تقاسم الوقت القياسية (round\-robin)؛ .TP \fBSCHED_BATCH\fP لتنفيذ العمليات بأسلوب "الدفعة"؛ و .TP \fBSCHED_IDLE\fP لتشغيل وظائف خلفية ذات أولوية منخفضة \fIجدًا\fP. .P تُدعم أيضًا سياسات "وقت حقيقي" متنوعة، للتطبيقات الخاصة ذات الوقت الحرج التي تحتاج إلى تحكم دقيق في الطريقة التي تُختار بها الخيوط القابلة للتشغيل للتنفيذ. للقواعد التي تحكم متى يمكن لعملية استخدام هذه السياسات، انظر \fBsched\fP(7). سياسات الوقت الحقيقي التي يمكن تحديدها في \fIpolicy\fP هي: .TP 14 \fBSCHED_FIFO\fP سياسة الوارد أولاً، يخرج أولاً؛ و .TP \fBSCHED_RR\fP سياسة الدوري (round\-robin). .P يوفر لينكس أيضًا السياسة التالية: .TP 14 \fBSCHED_DEADLINE\fP سياسة جدولة بالموعد النهائي؛ انظر \fBsched\fP(7) للتفاصيل. .P الوسيط \fIattr\fP هو مؤشر إلى بنية تُعرّف سياسة الجدولة الجديدة وسماتها للخيط المُحدد. هذه البنية لها الشكل التالي: .P .in +4n .EX struct sched_attr { u32 size; /* Size of this structure */ u32 sched_policy; /* Policy (SCHED_*) */ u64 sched_flags; /* Flags */ s32 sched_nice; /* Nice value (SCHED_OTHER, SCHED_BATCH) */ u32 sched_priority; /* Static priority (SCHED_FIFO, SCHED_RR) */ /* For SCHED_DEADLINE */ u64 sched_runtime; u64 sched_deadline; u64 sched_period; \& /* Utilization hints */ u32 sched_util_min; u32 sched_util_max; }; .EE .in .P حقول بنية \fIsched_attr\fP هي كما يلي: .TP \fBsize\fP يجب ضبط هذا الحقل على حجم البنية بالبايت، كما في \fIsizeof(struct sched_attr)\fP. إذا كانت البنية المُقدمة أصغر من بنية النواة، يُفترض أن أي حقول إضافية هي '0'. إذا كانت البنية المُقدمة أكبر من بنية النواة، تتحقق النواة من أن جميع الحقول الإضافية هي 0؛ إذا لم تكن كذلك، يفشل \fBsched_setattr\fP() مع الخطأ \fBE2BIG\fP ويُحدّث \fIsize\fP لاحتواء حجم بنية النواة. .IP السلوك أعلاه عندما لا يتطابق حجم بنية \fIsched_attr\fP في مساحة المستخدم مع حجم بنية النواة يسمح بقابلية توسعة الواجهة في المستقبل. التطبيقات غير السليمة التي تمرر بنيات كبيرة جدًا لن تتعطل في المستقبل إذا زاد حجم بنية \fIsched_attr\fP في النواة. في المستقبل، قد يسمح أيضًا للتطبيقات التي تعرف بنية \fIsched_attr\fP أكبر في مساحة المستخدم بتحديد ما إذا كانت تعمل على نواة أقدم لا تدعم البنية الأكبر. .TP \fIsched_policy\fP يُحدد هذا الحقل سياسة الجدولة، كأحد قيم \fBSCHED_*\fP المُدرجة أعلاه. .TP \fIsched_flags\fP يحتوي هذا الحقل على صفر أو أكثر من الأعلام التالية التي تُجمع بعملية OR للتحكم في سلوك الجدولة: .RS .TP \fBSCHED_FLAG_RESET_ON_FORK\fP الأطفال المُنشأون بواسطة \fBfork\fP(2) لا يرثون سياسات الجدولة المميزة. انظر \fBsched\fP(7) للتفاصيل. .TP \fBSCHED_FLAG_RECLAIM\fP (منذ لينكس 4.13) .\" 2d4283e9d583a3ee8cfb1cbb9c1270614df4c29d .\" Bandwidth reclaim is done via the GRUB algorithm; see .\" Documentation/scheduler/sched-deadline.rst يسمح هذا العلم لخيط \fBSCHED_DEADLINE\fP باستعادة عرض النطاق غير المستخدم من قبل خيوط الوقت الحقيقي الأخرى. .TP \fBSCHED_FLAG_DL_OVERRUN\fP (منذ لينكس 4.16) .\" commit 34be39305a77b8b1ec9f279163c7cdb6cc719b91 يسمح هذا العلم لتطبيق بالحصول على إعلام حول تجاوزات وقت التشغيل في خيوط \fBSCHED_DEADLINE\fP. قد تحدث هذه التجاوزات بسبب (على سبيل المثال) محاسبة وقت تنفيذ تقريبية أو تعيين معاملات غير صحيح. يأخذ الإعلام شكل إشارة \fBSIGXCPU\fP التي تُولد عند كل تجاوز. .IP إشارة \fBSIGXCPU\fP هذه هي \fIموجهة للعملية\fP (انظر \fBsignal\fP(7)) بدلاً من كونها موجهة للخيط. هذا ربما يكون خطأ برمجي. من ناحية، يُستخدم \fBsched_setattr\fP() لضبط سمة لكل خيط. من ناحية أخرى، إذا تم تسليم الإشارة الموجهة للعملية إلى خيط داخل العملية غير الخيط الذي حدث له تجاوز وقت التشغيل، فلا يوجد لدى التطبيق طريقة لمعرفة أي خيط تجاوز. .TP \fBSCHED_FLAG_UTIL_CLAMP_MIN\fP .TQ \fBSCHED_FLAG_UTIL_CLAMP_MAX\fP (كلاهما منذ لينكس 5.3) تشير هذه الأعلام إلى أن الحقلين \fIsched_util_min\fP أو \fIsched_util_max\fP، على التوالي، موجودان، ويمثلان الحد الأدنى والحد الأقصى المتوقعين لاستخدام الخيط. .IP توفر سمات الاستخدام للمجدول حدودًا يجب أن يُجدول الخيط ضمنها، مما يُعلم قراراته بشأن وضع المهمة واختيار التردد. .RE .TP \fIsched_nice\fP يُحدد هذا الحقل قيمة نايس التي يجب ضبطها عند تحديد \fIsched_policy\fP كـ \fBSCHED_OTHER\fP أو \fBSCHED_BATCH\fP. قيمة نايس هي رقم في النطاق \-20 (أولوية عالية) إلى +19 (أولوية منخفضة)؛ انظر \fBsched\fP(7). .TP \fIsched_priority\fP يُحدد هذا الحقل الأولوية الثابتة التي يجب ضبطها عند تحديد \fIsched_policy\fP كـ \fBSCHED_FIFO\fP أو \fBSCHED_RR\fP. يمكن تحديد النطاق المسموح به للأولويات لهذه السياسات باستخدام \fBsched_get_priority_min\fP(2) و \fBsched_get_priority_max\fP(2). بالنسبة للسياسات الأخرى، يجب تحديد هذا الحقل كـ 0. .TP \fIsched_runtime\fP يُحدد هذا الحقل معامل "Runtime" لجدولة الموعد النهائي. يُعبر عن القيمة بالنانو ثانية. هذا الحقل، والحقلان التاليان، يُستخدمان فقط لجدولة \fBSCHED_DEADLINE\fP؛ لمزيد من التفاصيل، انظر \fBsched\fP(7). .TP \fIsched_deadline\fP يُحدد هذا الحقل معامل "Deadline" لجدولة الموعد النهائي. يُعبر عن القيمة بالنانو ثانية. .TP \fIsched_period\fP يُحدد هذا الحقل معامل "Period" لجدولة الموعد النهائي. يُعبر عن القيمة بالنانو ثانية. .TP \fIsched_util_min\fP .TQ \fIsched_util_max\fP (كلاهما منذ لينكس 5.3) يُحدد هذان الحقلان الحد الأدنى والحد الأقصى المتوقعين للاستخدام، على التوالي. يتم تجاهلهما ما لم يتم ضبط العلم المقابل \fBSCHED_FLAG_UTIL_CLAMP_MIN\fP أو \fBSCHED_FLAG_UTIL_CLAMP_MAX\fP في \fIsched_flags\fP. .IP الاستخدام هو قيمة في النطاق [0, 1024]، تمثل النسبة المئوية لوقت وحدة المعالجة المركزية المستخدمة من قبل مهمة عند التشغيل بأقصى تردد على أعلى سعة وحدة معالجة مركزية في النظام. هذا تمثيل نقطة ثابتة، حيث 1024 تقابل 100%، و0 تقابل 0%. على سبيل المثال، مهمة استخدام 20% هي مهمة تعمل لمدة 2 مللي ثانية كل 10 مللي ثانية بأقصى تردد وتمثل بقيمة استخدام \fI0.2\ *\ 1024\ =\ 205\fP. .IP مهمة ذات قيمة استخدام دنيا أكبر من 0 من المرجح أن تُجدول على وحدة معالجة مركزية بسعة كافية لاستيعاب القيمة المحددة. مهمة ذات قيمة استخدام قصوى أصغر من 1024 من المرجح أن تُجدول على وحدة معالجة مركزية لا تتجاوز سعتها القيمة المحددة. .IP يمكن إعادة تعيين حد استخدام المهمة بتعيين حقلها إلى \fBUINT32_MAX\fP (منذ لينكس 5.11). .P .\" .\" وسيطة \fIflags\fP مُوفرة للسماح بتمديدات مستقبلية للواجهة؛ في التنفيذ الحالي يجب تحديدها كـ 0. .SS sched_getattr() استدعاء النظام \fBsched_getattr\fP() يجلب سياسة الجدولة والسمات المرتبطة بها للخيط الذي يُحدد معرفه في \fIpid\fP. إذا كان \fIpid\fP يساوي صفرًا، فسيتم استرداد سياسة الجدولة وسمات الخيط المستدعي. .P يجب تعيين وسيطة \fIsize\fP إلى حجم بنية \fIsched_attr\fP كما هو معروف لمساحة المستخدم. يجب أن تكون القيمة على الأقل بحجم بنية \fIsched_attr\fP المنشورة مبدئيًا، أو يفشل الاستدعاء مع الخطأ \fBEINVAL\fP. .P تُوضع سمات الجدولة المستردة في حقول بنية \fIsched_attr\fP التي يشير إليها \fIattr\fP. يضبط النواة \fIattr.size\fP على حجم بنية \fIsched_attr\fP الخاصة به. .P إذا كانت مخبأة \fIattr\fP المقدمة من المستدعي أكبر من بنية \fIsched_attr\fP للنواة، فلن تُلمس البايتات الإضافية في بنية مساحة المستخدم. إذا كانت البنية المقدمة من المستدعي أصغر من بنية \fIsched_attr\fP للنواة، فلن تُرجع النواة بصمت أي قيم قد تُخزن خارج المساحة المقدمة. كما هو الحال مع \fBsched_setattr\fP()، تسمح هذه الدلالات بتمديد الواجهة مستقبلًا. .P وسيطة \fIflags\fP مُوفرة للسماح بتمديدات مستقبلية للواجهة؛ في التنفيذ الحالي يجب تحديدها كـ 0. .SH "قيمة الإرجاع" عند النجاح، تُرجع \fBsched_setattr\fP() و \fBsched_getattr\fP() 0. عند الخطأ، تُرجع \-1، ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء يمكن أن تفشل كل من \fBsched_getattr\fP() و \fBsched_setattr\fP() للأسباب التالية: .TP \fBEINVAL\fP \fIattr\fP هو NULL؛ أو \fIpid\fP سالب؛ أو \fIflags\fP ليس صفرًا. .TP \fBESRCH\fP تعذر العثور على الخيط (thread) الذي معرفه \fIpid\fP. .P بالإضافة إلى ذلك، يمكن أن تفشل \fBsched_getattr\fP() للأسباب التالية: .TP \fBE2BIG\fP المخبأة المحددة بواسطة \fIsize\fP و \fIattr\fP صغيرة جدًا. .TP \fBEINVAL\fP \fIsize\fP غير صالح؛ أي أنه أصغر من الإصدار الأولي لبنية \fIsched_attr\fP (48 بايت) أو أكبر من حجم صفحة النظام. .P بالإضافة إلى ذلك، يمكن أن تفشل \fBsched_setattr\fP() للأسباب التالية: .TP \fBE2BIG\fP المخبأة المحددة بواسطة \fIsize\fP و \fIattr\fP أكبر من بنية النواة، وواحد أو أكثر من البايتات الزائدة غير صفري. .TP \fBEBUSY\fP فشل التحكم في القبول \fBSCHED_DEADLINE\fP، انظر \fBsched\fP(7). .TP \fBEINVAL\fP \fIattr.sched_policy\fP ليس إحدى السياسات المعترف بها. .TP \fBEINVAL\fP \fIattr.sched_flags\fP يحتوي على علم غير \fBSCHED_FLAG_RESET_ON_FORK\fP. .TP \fBEINVAL\fP \fIattr.sched_priority\fP غير صالح. .TP \fBEINVAL\fP \fIattr.sched_policy\fP هو \fBSCHED_DEADLINE\fP، ومعلمات جدولة الموعد النهائي في \fIattr\fP غير صالحة. .TP \fBEINVAL\fP \fIattr.sched_flags\fP يحتوي على \fBSCHED_FLAG_UTIL_CLAMP_MIN\fP أو \fBSCHED_FLAG_UTIL_CLAMP_MAX\fP، و \fIattr.sched_util_min\fP أو \fIattr.sched_util_max\fP خارج النطاق. .TP \fBEOPNOTSUPP\fP تم توفير \fBSCHED_FLAG_UTIL_CLAMP\fP، لكن النواة لم تُبنَ بدعم \fBCONFIG_UCLAMP_TASK\fP. .TP \fBEPERM\fP المستدعي لا يملك الامتيازات المناسبة. .TP \fBEPERM\fP قناع التقارب لوحدة المعالجة المركزية للخيط المحدد بواسطة \fIpid\fP لا يشمل جميع وحدات المعالجة المركزية في النظام (انظر \fBsched_setaffinity\fP(2)). .SH المعايير لينكس. .SH التاريخ .\" FIXME . Add glibc version لينكس 3.14. .SH ملاحظات لا توفر glibc أغلفة لاستدعاءات النظام هذه؛ استدعها باستخدام \fBsyscall\fP(2). .P توفر \fBsched_setattr\fP() مجموعة شاملة من وظائف \fBsched_setscheduler\fP(2)، \fBsched_setparam\fP(2)، \fBnice\fP(2)، و (بخلاف القدرة على ضبط أولوية جميع العمليات التابعة لمستخدم محدد أو جميع العمليات في مجموعة محددة) \fBsetpriority\fP(2). بالمثل، توفر \fBsched_getattr\fP() مجموعة شاملة من وظائف \fBsched_getscheduler\fP(2)، \fBsched_getparam\fP(2)، و (جزئيًا) \fBgetpriority\fP(2). .SH العلل .\" FIXME . patch sent to Peter Zijlstra في إصدارات لينكس حتى 3.15، فشلت \fBsched_setattr\fP() مع الخطأ \fBEFAULT\fP بدلاً من \fBE2BIG\fP للحالة الموصوفة في الأخطاء. .P .\" In Linux versions up to up 3.15, .\" FIXME . patch from Peter Zijlstra pending .\" .BR sched_setattr () .\" allowed a negative .\" .I attr.sched_policy .\" value. حتى لينكس 5.3، فشلت \fBsched_getattr\fP() مع الخطأ \fBEFBIG\fP إذا كانت بنية \fIsched_attr\fP داخل النواة أكبر من \fIsize\fP الممررة من مساحة المستخدم. .SH "انظر أيضًا" .ad l .nh \fBchrt\fP(1), \fBnice\fP(2), \fBsched_get_priority_max\fP(2), \fBsched_get_priority_min\fP(2), \fBsched_getaffinity\fP(2), \fBsched_getparam\fP(2), \fBsched_getscheduler\fP(2), \fBsched_rr_get_interval\fP(2), \fBsched_setaffinity\fP(2), \fBsched_setparam\fP(2), \fBsched_setscheduler\fP(2), \fBsched_yield\fP(2), \fBsetpriority\fP(2), \fBpthread_getschedparam\fP(3), \fBpthread_setschedparam\fP(3), \fBpthread_setschedprio\fP(3), \fBcapabilities\fP(7), \fBcpuset\fP(7), \fBsched\fP(7) .ad .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .