ioperm(2)

الاسم
ioperm - تعيين أذونات الإدخال/الإخراج للمنفذ

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

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

int ioperm(unsigned long from, unsigned long num, int turn_on);

الوصف
تضبط ioperm() بتات أذونات الوصول إلى المنفذ للخيط المستدعي لعدد num من البتات بدءًا من عنوان المنفذ from. إذا كانت turn_on غير صفرية، فسيتم تمكين الإذن للبتات المحددة؛ وإلا فسيتم تعطيله. إذا كانت turn_on غير صفرية، يجب أن يكون الخيط المستدعي مميزًا (CAP_SYS_RAWIO).

قبل لينكس 2.6.8، كان يمكن تحديد أول 0x3ff من منافذ الإدخال/الإخراج فقط بهذه الطريقة. للمزيد من المنافذ، كان يجب استخدام استدعاء النظام iopl(2) (بوسيطة level بقيمة 3). منذ لينكس 2.6.8، يمكن تحديد 65,536 منفذ إدخال/إخراج.

تُورث الأذونات بواسطة العملية التابعة المنشأة بواسطة fork(2) (لكن انظر التاريخ). تُحفظ الأذونات عبر execve(2)؛ هذا مفيد لإعطاء أذونات الوصول إلى المنفذ للبرامج غير المميزة.

هذا الاستدعاء مخصص بشكل أساسي لمعمارية i386. في العديد من المعماريات الأخرى، لا يوجد أو سيعيد دائمًا خطأ.

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

الأخطاء

EINVAL
    قيم غير صالحة لـ from أو num.

EIO (على PowerPC) هذا الاستدعاء غير مدعوم.

ENOMEM
    نفدت الذاكرة.

EPERM
    الخيط المستدعي لديه صلاحية غير كافية.

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

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

التاريخ
قبل لينكس 2.4، لم تكن الأذونات تُورث بواسطة عملية تابعة منشأة بواسطة fork(2).

ملاحظات
يظهر ملف /proc/ioports منافذ الإدخال/الإخراج المخصصة حاليًا على النظام.

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

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

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

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