iopl(2)

الاسم
iopl - تغيير مستوى صلاحية الإدخال/الإخراج

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <sys/io.h>

[[deprecated]] int iopl(int level);

الوصف
تغير iopl() مستوى صلاحية الإدخال/الإخراج للخيط المستدعي، كما هو محدد بواسطة أقل بتين دلالة في level.

مستوى صلاحية الإدخال/الإخراج للخيط العادي هو 0. الأذونات موروثة من الآباء إلى الأبناء.

هذه الاستدعاء مهملة، وهي أبطأ بشكل ملحوظ من ioperm(2)، ويتم توفيرها فقط لخوادم X القديمة التي تتطلب الوصول إلى جميع منافذ الإدخال/الإخراج البالغ عددها 65536. وهي مخصصة بشكل أساسي لمعمارية i386. في العديد من المعماريات الأخرى، لا توجد أو ستعيد خطأ دائمًا.

قيمة الإرجاع
عند النجاح، يُعاد الصفر. وعند حدوث خطأ، يُعاد الرقم -1، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء

EINVAL
    level أكبر من 3.

ENOSYS
    هذا الاستدعاء غير منفذ.

EPERM
    الخيط المستدعي ليس لديه صلاحية كافية لاستدعاء iopl()؛ القدرة CAP_SYS_RAWIO مطلوبة لرفع مستوى صلاحية الإدخال/الإخراج فوق قيمته الحالية.

الإصدارات
glibc2 يحتوي على نموذج أولي في كل من <sys/io.h> و <sys/perm.h>. تجنب الأخير، فهو متاح فقط على i386.

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

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

قبل لينكس 3.7، في بعض المعماريات (مثل i386)، كانت الأذونات تُورث بواسطة الطفل الناتج عن fork(2) وكانت تُحتفظ بها عبر execve(2). تم تغيير هذا السلوك عن غير قصد في لينكس 3.7، ولن يُعاد.

انظر أيضًا
ioperm(2), outb(2), capabilities(7)

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

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

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