subpage_prot(2)

الاسم
subpage_prot - تعريف حماية صفحة فرعية لنطاق عنوان

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

موجز
#include <sys/syscall.h>      /* تعريف ثوابت SYS_* */
#include <unistd.h>

int syscall(SYS_subpage_prot, unsigned long addr, unsigned long size,
            uint32_t *map);

ملاحظة: لا توفر glibc غلافًا لـ subpage_prot()، مما يستلزم استخدام syscall(2).

الوصف
استدعاء النظام الخاص بـ PowerPC subpage_prot() يوفر إمكانية التحكم في أذونات الوصول على الصفحات الفرعية الفردية بحجم 4 كيلوبايت على الأنظمة المهيأة بحجم صفحة 64 كيلوبايت.

يتم تطبيق خريطة الحماية على صفحات الذاكرة في المنطقة التي تبدأ من addr وتستمر لـ size بايت. يجب محاذاة كلتا الوسيطتين إلى حد 64 كيلوبايت.

يتم تحديد خريطة الحماية في المخزن المؤقت المشار إليه بـ map. تحتوي الخريطة على 2 بت لكل صفحة فرعية بحجم 4 كيلوبايت؛ وبالتالي تحدد كل كلمة 32 بت حماية 16 صفحة فرعية بحجم 4 كيلوبايت داخل صفحة بحجم 64 كيلوبايت (لذا، يجب أن يتساوى عدد الكلمات 32 بت المشار إليها بـ map مع عدد صفحات 64 كيلوبايت المحددة بـ size). كل حقل 2 بت في خريطة الحماية إما 0 للسماح بأي وصول، أو 1 لمنع الكتابة، أو 2 أو 3 لمنع جميع أنواع الوصول.

قيمة الإرجاع
عند النجاح، تُرجع subpage_prot() 0. وإلا، يُرجع أحد رموز الخطأ المحددة أدناه.

الأخطاء

EFAULT
    المخزن المؤقت المشار إليه بـ map غير قابل للوصول.

EINVAL
    الوسيطتان addr أو size غير صحيحتين. يجب محاذاة كلتا الوسيطتين إلى مضاعف لحجم صفحة النظام، ويجب ألا تشير إلى منطقة خارج مساحة عنوان العملية أو إلى منطقة تتكون من صفحات ضخمة.

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

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

التاريخ
لينكس 2.6.25 (PowerPC).

يتم توفير استدعاء النظام فقط إذا تم تكوين النواة بـ CONFIG_PPC_64K_PAGES.

ملاحظات
تنطبق حماية الصفحة العادية (على مستوى صفحة 64 كيلوبايت) أيضًا؛ آلية حماية الصفحة الفرعية هي قيد إضافي، لذا فإن وضع 0 في حقل 2 بت لن يسمح بالكتابة إلى صفحة محمية ضد الكتابة بخلاف ذلك.

  الأساس المنطقي
يتم توفير استدعاء النظام هذا للمساعدة في كتابة المحاكيات التي تعمل باستخدام صفحات 64 كيلوبايت على أنظمة PowerPC. عند محاكاة أنظمة مثل x86، التي تستخدم حجم صفحة أصغر، لم يعد بإمكان المحاكي استخدام وحدة إدارة الذاكرة (MMU) واستدعاءات النظام العادية للتحكم في حماية الصفحات. (يمكن للمحاكي محاكاة MMU عن طريق التحقق وربما إعادة تعيين العنوان لكل وصول إلى الذاكرة في البرنامج، لكن ذلك بطيء.) الفكرة هي أن المحاكي يوفر مصفوفة من أقنعة الحماية لتطبيقها على نطاق محدد من العناوين الافتراضية. يتم تطبيق هذه الأقنعة على المستوى الذي يتم فيه إدخال إدخالات جدول الصفحات (PTEs) للأجهزة في جدول صفحات الأجهزة بناءً على PTEs الخاصة بلينكس، لذا لا تتأثر PTEs الخاصة بلينكس. الضمني في هذا هو أن مناطق مساحة العنوان المحمية يتم تحويلها لاستخدام صفحات أجهزة بحجم 4 كيلوبايت بدلاً من صفحات أجهزة بحجم 64 كيلوبايت (على الأجهزة التي تدعم صفحات أجهزة بحجم 64 كيلوبايت).

انظر أيضًا
mprotect(2), syscall(2)

Documentation/admin-guide/mm/hugetlbpage.rst في شجرة مصدر نواة لينكس

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

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

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