mincore(2)

الاسم
mincore - تحديد ما إذا كانت الصفحات مقيمة في الذاكرة

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

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

int mincore(size_t length;
            void addr[length], size_t length, unsigned char *vec);

    متطلبات ماكروات اختبار الميزات لـ glibc (انظر feature_test_macros(7)):

mincore():
    منذ glibc 2.19:
        _DEFAULT_SOURCE
    glibc 2.19 وما قبله:
        _BSD_SOURCE || _SVID_SOURCE

الوصف
ترجع mincore() متجهاً يشير إلى ما إذا كانت صفحات الذاكرة الافتراضية للعملية المستدعية مقيمة في النواة (RAM)، وبالتالي لن تسبب وصولاً للقرص (خطأ صفحة) إذا تمت الإشارة إليها. يرجع النواة معلومات الإقامة حول الصفحات التي تبدأ من العنوان addr، وتستمر لـ length بايت.

يجب أن تكون الوسيطة addr مضاعفاً لحجم صفحة النظام. لا يلزم أن تكون الوسيطة length مضاعفاً لحجم الصفحة، ولكن نظراً لأن معلومات الإقامة تُرجع لصفحات كاملة، فإن length تُقرّب فعلياً إلى المضاعف التالي لحجم الصفحة. يمكن الحصول على حجم الصفحة (PAGE_SIZE) باستخدام sysconf(_SC_PAGESIZE).

يجب أن تشير الوسيطة vec إلى مصفوفة تحتوي على الأقل (length+PAGE_SIZE-1) / PAGE_SIZE بايت. عند العودة، سيتم تعيين البت الأقل أهمية من كل بايت إذا كانت الصفحة المقابلة مقيمة حالياً في الذاكرة، وسيتم مسحها بخلاف ذلك. (إعدادات البتات الأخرى في كل بايت غير محددة؛ هذه البتات محجوزة للاستخدام المحتمل لاحقًا.) بالطبع المعلومات المرجعة في vec هي مجرد لقطة: الصفحات غير المقفلة في الذاكرة يمكن أن تأتي وتذهب في أي لحظة، وقد يكون محتوى vec قديماً بالفعل بحلول وقت عودة هذه الاستدعاء.

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

الأخطاء
EAGAIN النواة نفدت منها الموارد مؤقتاً.

EFAULT
    vec يشير إلى عنوان غير صالح.

EINVAL
    addr ليس مضاعفاً لحجم الصفحة.

ENOMEM
    length أكبر من (TASK_SIZE - addr). (يمكن أن يحدث هذا إذا تم تحديد قيمة سالبة لـ length، حيث سيتم تفسير تلك القيمة كعدد صحيح غير موقع كبير.) في Linux 2.6.11 والإصدارات الأقدم، كان الخطأ EINVAL يُرجع لهذه الحالة.

ENOMEM
    addr إلى addr + length احتوى على ذاكرة غير معينة.

المعايير
لا شيء.

التاريخ
SunOS 4.1, 4.4BSD, FreeBSD 2.2, Solaris 8, Linux 2.3.99pre1, glibc 2.2, NetBSD 1.5, OpenBSD 2.9, AIX 5.1.

العلل
قبل Linux 2.6.21، لم تُرجع mincore() معلومات صحيحة لتعيينات MAP_PRIVATE، أو لتعيينات غير خطية (المنشأة باستخدام remap_file_pages(2)).

انظر أيضًا
fincore(1), madvise(2), mlock(2), mmap(2), posix_fadvise(2), posix_madvise(3)

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

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

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