.\" -*- coding: UTF-8 -*- .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH epoll_ctl 2 "25 ديسمبر 2025" "صفحات دليل لينكس 6.18" .SH الاسم epoll_ctl \- واجهة تحكم لوصف ملف epoll .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBint epoll_ctl(int \fP\fIepfd\fP\fB, int \fP\fIop\fP\fB, int \fP\fIfd\fP\fB,\fP \fB struct epoll_event *_Nullable \fP\fIevent\fP\fB);\fP .fi .SH الوصف تُستخدم استدعاء النظام هذا لإضافة أو تعديل أو إزالة إدخالات في قائمة الاهتمامات لمثيل \fBepoll\fP(7) المشار إليه بواصف الملف \fIepfd\fP. يطلب تنفيذ العملية \fIop\fP لواصف الملف الهدف \fIfd\fP. .P القيم الصالحة للوسيطة \fIop\fP هي: .TP \fBEPOLL_CTL_ADD\fP إضافة إدخال إلى قائمة الاهتمامات لواصف ملف epoll، \fIepfd\fP. يتضمن الإدخال واصف الملف \fIfd\fP، مرجعًا لوصف الملف المفتوح المقابل (انظر \fBepoll\fP(7) و\fBopen\fP(2))، والإعدادات المحددة في \fIevent\fP. .TP \fBEPOLL_CTL_MOD\fP تغيير الإعدادات المرتبطة بـ \fIfd\fP في قائمة الاهتمامات إلى الإعدادات الجديدة المحددة في \fIevent\fP. .TP \fBEPOLL_CTL_DEL\fP إزالة (إلغاء تسجيل) واصف الملف الهدف \fIfd\fP من قائمة الاهتمامات. يتم تجاهل الوسيطة \fIevent\fP ويمكن أن تكون NULL (ولكن انظر الأخطاء أدناه). .P تصف الوسيطة \fIevent\fP الكائن المرتبط بواصف الملف \fIfd\fP. يتم وصف \fIstruct epoll_event\fP في \fBepoll_event\fP(3type). .P يحدد العضو \fIdata\fP من بنية \fIepoll_event\fP البيانات التي يجب على النواة حفظها ثم إرجاعها (عبر \fBepoll_wait\fP(2)) عندما يصبح واصف الملف هذا جاهزًا. .P العضو \fIevents\fP من بنية \fIepoll_event\fP هو قناع بتات مكون من دمج صفر أو أكثر من أنواع الأحداث (التي تُرجعها \fBepoll_wait\fP(2)) وأعلام الإدخال التي تؤثر على سلوكها ولكنها لا تُرجع. أنواع الأحداث المتاحة هي: .TP \fBEPOLLIN\fP الملف المرتبط متاح لعمليات \fBread\fP(2). .TP \fBEPOLLOUT\fP الملف المرتبط متاح لعمليات \fBwrite\fP(2). .TP \fBEPOLLRDHUP\fP (منذ Linux 2.6.17) أغلق النظير لمقبس الدفق الاتصال، أو أوقف كتابة نصف الاتصال. (هذا العلم مفيد بشكل خاص لكتابة كود بسيط لاكتشاف إغلاق النظير عند استخدام المراقبة المحفزة بالحافة.) .TP \fBEPOLLPRI\fP يوجد حالة استثنائية على واصف الملف. انظر مناقشة \fBPOLLPRI\fP في \fBpoll\fP(2). .TP \fBEPOLLERR\fP حدثت حالة خطأ على واصف الملف المرتبط. يتم الإبلاغ عن هذا الحدث أيضًا لنهاية الكتابة للأنبوب عندما تكون نهاية القراءة قد أغلقت. .IP ستقوم \fBepoll_wait\fP(2) دائمًا بالإبلاغ عن هذا الحدث؛ ليس من الضروري تعيينه في \fIevents\fP عند استدعاء \fBepoll_ctl\fP(). .TP \fBEPOLLHUP\fP حدث إغلاق (Hang up) على واصف الملف المرتبط. .IP ستنتظر \fBepoll_wait\fP(2) دائمًا هذا الحدث؛ ليس من الضروري تعيينه في \fIevents\fP عند استدعاء \fBepoll_ctl\fP(). .IP لاحظ أنه عند القراءة من قناة مثل أنبوب أو مقبس دفق، يشير هذا الحدث فقط إلى أن النظير أغلق نهايته من القناة. ستُرجع القراءات اللاحقة من القناة 0 (نهاية الملف) فقط بعد استهلاك جميع البيانات المعلقة في القناة. .P وأعلام الإدخال المتاحة هي: .TP \fBEPOLLET\fP يطلب إعلامًا محفزًا بالحافة لواصف الملف المرتبط. السلوك المبدئي لـ \fBepoll\fP هو محفز بالمستوى. انظر \fBepoll\fP(7) لمزيد من المعلومات التفصيلية حول الإعلام المحفز بالحافة والمحفز بالمستوى. .TP \fBEPOLLONESHOT\fP (منذ Linux 2.6.2) يطلب إعلامًا لمرة واحدة لواصف الملف المرتبط. هذا يعني أنه بعد إعلام حدث لواصف الملف بواسطة \fBepoll_wait\fP(2)، يتم تعطيل واصف الملف في قائمة الاهتمامات ولن يتم الإبلاغ عن أي أحداث أخرى بواسطة واجهة \fBepoll\fP. يجب على المستخدم استدعاء \fBepoll_ctl\fP() مع \fBEPOLL_CTL_MOD\fP لإعادة تسليح واصف الملف بقناع حدث جديد. .TP \fBEPOLLWAKEUP\fP (منذ Linux 3.5) .\" commit 4d7e30d98939a0340022ccd49325a3d70f7e0238 إذا كانت \fBEPOLLONESHOT\fP و\fBEPOLLET\fP غير مضبوطتين وكانت العملية تمتلك القدرة \fBCAP_BLOCK_SUSPEND\fP، فتأكد من أن النظام لا يدخل في وضع "تعليق" أو "إسبات" أثناء تعليق هذا الحدث أو معالجته. يُعتبر الحدث قيد "المعالجة" من الوقت الذي يتم إرجاعه فيه بواسطة استدعاء \fBepoll_wait\fP(2) حتى الاستدعاء التالي لـ \fBepoll_wait\fP(2) على نفس واصف ملف \fBepoll\fP(7)، أو إغلاق واصف الملف ذلك، أو إزالة واصف ملف الحدث باستخدام \fBEPOLL_CTL_DEL\fP، أو مسح \fBEPOLLWAKEUP\fP لواصف ملف الحدث باستخدام \fBEPOLL_CTL_MOD\fP. انظر أيضًا الأخطاء. .TP \fBEPOLLEXCLUSIVE\fP (منذ Linux 4.5) يضبط وضع إيقاظ حصري لواصف ملف epoll الذي يتم إرفاقه بواصف الملف الهدف \fIfd\fP. عند حدوث حدث إيقاظ وإرفاق واصفات ملفات epoll متعددة بنفس الملف الهدف باستخدام \fBEPOLLEXCLUSIVE\fP، سيستقبل واحد أو أكثر من واصفات ملفات epoll حدثًا باستخدام \fBepoll_wait\fP(2). المبدئي في هذا السيناريو (عند عدم تعيين \fBEPOLLEXCLUSIVE\fP) هو أن تستقبل جميع واصفات ملفات epoll حدثًا. وبالتالي فإن \fBEPOLLEXCLUSIVE\fP مفيد لتجنب مشاكل الازدحام الجماعي في سيناريوهات معينة. .IP إذا كان نفس واصف الملف موجودًا في مثيلات epoll متعددة، بعضها مع العلم \fBEPOLLEXCLUSIVE\fP والبعض الآخر بدونه، فسيتم توفير الأحداث لجميع مثيلات epoll التي لم تحدد \fBEPOLLEXCLUSIVE\fP، وواحد على الأقل من مثيلات epoll التي حددت \fBEPOLLEXCLUSIVE\fP. .IP يمكن تحديد القيم التالية بالتزامن مع \fBEPOLLEXCLUSIVE\fP: \fBEPOLLIN\fP و\fBEPOLLOUT\fP و\fBEPOLLWAKEUP\fP و\fBEPOLLET\fP. يمكن أيضًا تحديد \fBEPOLLHUP\fP و\fBEPOLLERR\fP، ولكن هذا غير مطلوب: كالمعتاد، يتم الإبلاغ عن هذه الأحداث دائمًا في حالة حدوثها، بغض النظر عما إذا كانت محددة في \fIevents\fP. تؤدي محاولات تحديد قيم أخرى في \fIevents\fP إلى الخطأ \fBEINVAL\fP. .IP يمكن استخدام \fBEPOLLEXCLUSIVE\fP فقط في عملية \fBEPOLL_CTL_ADD\fP؛ تؤدي محاولات استخدامه مع \fBEPOLL_CTL_MOD\fP إلى خطأ. إذا تم تعيين \fBEPOLLEXCLUSIVE\fP باستخدام \fBepoll_ctl\fP()، فإن \fBEPOLL_CTL_MOD\fP لاحقًا على نفس الزوج \fIepfd\fP,\ \fIfd\fP يؤدي إلى خطأ. سيفشل أيضًا استدعاء \fBepoll_ctl\fP() الذي يحدد \fBEPOLLEXCLUSIVE\fP في \fIevents\fP ويحدد واصف الملف الهدف \fIfd\fP كمثيل epoll. الخطأ في كل هذه الحالات هو \fBEINVAL\fP. .SH "قيمة الإرجاع" عند النجاح، تُعيد \fBepoll_ctl\fP() صفرًا. عند حدوث خطأ، تُعيد \fBepoll_ctl\fP() \-1 ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEBADF\fP \fIepfd\fP أو \fIfd\fP ليسا واصف ملف صالحًا. .TP \fBEEXIST\fP كانت \fIop\fP هي \fBEPOLL_CTL_ADD\fP، وواصف الملف المُقدم \fIfd\fP مُسجل بالفعل مع مثيل epoll هذا. .TP \fBEINVAL\fP \fIepfd\fP ليس واصف ملف \fBepoll\fP، أو \fIfd\fP مطابق لـ \fIepfd\fP، أو العملية المطلوبة \fIop\fP غير مدعومة من هذه الواجهة. .TP \fBEINVAL\fP حُدد نوع حدث غير صالح مع \fBEPOLLEXCLUSIVE\fP في \fIevents\fP. .TP \fBEINVAL\fP كانت \fIop\fP هي \fBEPOLL_CTL_MOD\fP وتضمنت \fIevents\fP \fBEPOLLEXCLUSIVE\fP. .TP \fBEINVAL\fP كانت \fIop\fP هي \fBEPOLL_CTL_MOD\fP وقد طُبقت العلامة \fBEPOLLEXCLUSIVE\fP سابقًا على هذا الزوج \fIepfd\fP,\ \fIfd\fP. .TP \fBEINVAL\fP حُدد \fBEPOLLEXCLUSIVE\fP في \fIevent\fP ويشير \fIfd\fP إلى مثيل epoll. .TP \fBELOOP\fP يشير \fIfd\fP إلى مثيل epoll وستؤدي عملية \fBEPOLL_CTL_ADD\fP هذه إلى حلقة دائرية من مثيلات epoll تراقب بعضها البعض أو عمق تداخل لمثيلات epoll أكبر من 5. .TP \fBENOENT\fP كانت \fIop\fP هي \fBEPOLL_CTL_MOD\fP أو \fBEPOLL_CTL_DEL\fP، و\fIfd\fP غير مُسجل مع مثيل epoll هذا. .TP \fBENOMEM\fP كانت الذاكرة غير كافية لمعالجة عملية التحكم \fIop\fP المطلوبة. .TP \fBENOSPC\fP وُجد الحد المفروض بواسطة \fI/proc/sys/fs/epoll/max_user_watches\fP أثناء محاولة تسجيل (\fBEPOLL_CTL_ADD\fP) واصف ملف جديد على مثيل epoll. انظر \fBepoll\fP(7) لمزيد من التفاصيل. .TP \fBEPERM\fP الملف الهدف \fIfd\fP لا يدعم \fBepoll\fP. يمكن أن يحدث هذا الخطأ إذا كان \fIfd\fP يشير، على سبيل المثال، إلى ملف عادي أو دليل. .SH المعايير لينكس. .SH التاريخ .\" To be precise: Linux 2.5.44. .\" The interface should be finalized by Linux 2.5.66. لينكس 2.6، glibc 2.3.2. .SH ملاحظات واجهة \fBepoll\fP تدعم جميع واصفات الملفات التي تدعم \fBpoll\fP(2). .SH العلل قبل لينكس 2.6.9، تطلبت عملية \fBEPOLL_CTL_DEL\fP مؤشرًا غير فارغ في \fIevent\fP، على الرغم من تجاهل هذه الوسيطة. منذ لينكس 2.6.9، يمكن تحديد \fIevent\fP كـ NULL عند استخدام \fBEPOLL_CTL_DEL\fP. التطبيقات التي تحتاج إلى أن تكون محمولة على أنوية قبل لينكس 2.6.9 يجب أن تحدد مؤشرًا غير فارغ في \fIevent\fP. .P .\" commit a8159414d7e3af7233e7a5a82d1c5d85379bd75c (behavior change) .\" https://lwn.net/Articles/520198/ إذا حُدد \fBEPOLLWAKEUP\fP في \fIflags\fP، لكن المستدعي لا يمتلك القدرة \fBCAP_BLOCK_SUSPEND\fP، فإن العلامة \fBEPOLLWAKEUP\fP تُتجاهل \fIبصمت\fP. هذا السلوك المؤسف ضروري لأنه لم تُجرَ فحوصات صلاحية على وسيطة \fIflags\fP في التنفيذ الأصلي، وإضافة \fBEPOLLWAKEUP\fP مع فحص يتسبب في فشل الاستدعاء إذا لم يمتلك المستدعي القدرة \fBCAP_BLOCK_SUSPEND\fP تسبب في كسر تطبيق واحد على الأقل في مساحة المستخدم الذي صادف أنه حدد هذه البتة عشوائيًا (وبدون فائدة). لذلك يجب على التطبيق القوي التحقق مرة أخرى من امتلاكه القدرة \fBCAP_BLOCK_SUSPEND\fP إذا كان يحاول استخدام العلامة \fBEPOLLWAKEUP\fP. .SH "انظر أيضًا" \fBepoll_create\fP(2)، \fBepoll_wait\fP(2)، \fBioctl_eventpoll\fP(2)، \fBpoll\fP(2)، \fBepoll\fP(7) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .