pkey_alloc(2)

الاسم
pkey_alloc, pkey_free - تخصيص أو تحرير مفتاح حماية

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

موجز
#define _GNU_SOURCE             /* انظر feature_test_macros(7) */
#include <sys/mman.h>

int pkey_alloc(unsigned int flags, unsigned int access_rights);
int pkey_free(int pkey);

الوصف
pkey_alloc() يخصص مفتاح حماية (pkey) ويسمح بتمريره إلى pkey_mprotect(2).

flags الخاصة بـ pkey_alloc() محجوزة للاستخدام المستقبلي ويجب دائمًا تحديدها حاليًا كـ 0.

وسيطة access_rights الخاصة بـ pkey_alloc() قد تحتوي على صفر أو أكثر من عمليات التعطيل:

PKEY_DISABLE_ACCESS
    تعطيل كل الوصول إلى البيانات للذاكرة المغطاة بمفتاح الحماية المُعاد.

PKEY_DISABLE_WRITE
    تعطيل وصول الكتابة إلى الذاكرة المغطاة بمفتاح الحماية المُعاد.

pkey_free() يحرر مفتاح حماية ويجعله متاحًا للتخصيصات اللاحقة. بعد تحرير مفتاح الحماية، لا يجوز استخدامه بعد الآن في أي عمليات متعلقة بمفتاح الحماية.

لا ينبغي للتطبيق استدعاء pkey_free() على أي مفتاح حماية تم تعيينه لنطاق عنوان بواسطة pkey_mprotect(2) ولا يزال قيد الاستخدام. السلوك في هذه الحالة غير محدد وقد يؤدي إلى خطأ.

قيمة الإرجاع
عند النجاح، pkey_alloc() يُرجع قيمة مفتاح حماية موجبة. عند النجاح، pkey_free() يُرجع صفرًا. عند الخطأ، يُرجع -1، ويتم تعيين errno للإشارة إلى الخطأ.

الأخطاء

EINVAL
    pkey أو flags أو access_rights غير صالح.

ENOSPC
    (pkey_alloc()) تم تخصيص جميع مفاتيح الحماية المتاحة للعملية الحالية. عدد المفاتيح المتاحة خاص بالمعمارية وخاص بالتطبيق وقد يقل بسبب استخدام النواة الداخلي لبعض المفاتيح. يوجد حاليًا 15 مفتاحًا متاحًا لبرامج المستخدم على x86.

    سيتم أيضًا إرجاع هذا الخطأ إذا كان المعالج أو نظام التشغيل لا يدعم مفاتيح الحماية. يجب على التطبيقات دائمًا أن تكون مستعدة للتعامل مع هذا الخطأ، حيث أن العوامل الخارجة عن سيطرة التطبيق يمكن أن تقلل عدد مفاتيح الحماية المتاحة.

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

التاريخ
لينكس 4.9، glibc 2.27.

ملاحظات
استدعاء pkey_alloc() آمن دائمًا بغض النظر عما إذا كان نظام التشغيل يدعم مفاتيح الحماية أم لا. يمكن استخدامه بدلاً من أي آلية أخرى لاكتشاف دعم pkey وسيفشل ببساطة مع الخطأ ENOSPC إذا لم يكن لدى نظام التشغيل دعم pkey.

تضمن النواة أن محتويات سجل الحقوق العتادي (PKRU) سيتم الحفاظ عليها فقط لمفاتيح الحماية المخصصة. في أي وقت يتم فيه إلغاء تخصيص مفتاح (سواء قبل الاستدعاء الأول الذي يُرجع ذلك المفتاح من pkey_alloc() أو بعد تحريره عبر pkey_free())، قد تقوم النواة بإجراء تغييرات عشوائية على أجزاء سجل الحقوق التي تؤثر على الوصول إلى ذلك المفتاح.

أمثلة
انظر pkeys(7).

انظر أيضًا
pkey_mprotect(2), pkeys(7)

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

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

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