posix_madvise(3)

الاسم
posix_madvise - تقديم نصح حول أنماط استخدام الذاكرة

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

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

int posix_madvise(size_t size;
                  void addr[size], size_t size, int advice);

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

posix_madvise():
    _POSIX_C_SOURCE >= 200112L

الوصف
تسمح الدالة posix_madvise() للتطبيق بتقديم نصح للنظام حول أنماط استخدامه المتوقعة للذاكرة في نطاق العناوين الذي يبدأ من addr ويستمر لـ size بايت. النظام حر في استخدام هذا النصح لتحسين أداء الوصولات إلى الذاكرة (أو تجاهل النصح بالكامل)، لكن استدعاء posix_madvise() لا يؤثر على دلالات الوصول إلى الذاكرة في النطاق المحدد.

المعامل advice هو أحد ما يلي:

POSIX_MADV_NORMAL
    ليس لدى التطبيق نصح خاص بخصوص أنماط استخدامه للذاكرة لنطاق العناوين المحدد. هذا هو السلوك المبدئي.

POSIX_MADV_SEQUENTIAL
    يتوقع التطبيق الوصول إلى نطاق العناوين المحدد بشكل تسلسلي، منتقلاً من العناوين المنخفضة إلى العناوين المرتفعة. وبالتالي، يمكن قراءة الصفحات في هذه المنطقة بشكل استباقي، وقد تُحرر بعد الوصول إليها بفترة قصيرة.

POSIX_MADV_RANDOM
    يتوقع التطبيق الوصول إلى نطاق العناوين المحدد بشكل عشوائي. وبالتالي، قد تكون القراءة الاستباقية أقل فائدة من المعتاد.

POSIX_MADV_WILLNEED
    يتوقع التطبيق الوصول إلى نطاق العناوين المحدد في المستقبل القريب. وبالتالي، قد تكون القراءة الاستباقية مفيدة.

POSIX_MADV_DONTNEED
    يتوقع التطبيق أنه لن يصل إلى نطاق العناوين المحدد في المستقبل القريب.

قيمة الإرجاع
عند النجاح، تُرجع posix_madvise() 0. عند الفشل، تُرجع رقم خطأ موجب.

الأخطاء

EINVAL
    addr ليس مضاعفاً لحجم صفحة النظام أو size سالب.

EINVAL
    advice غير صالح.

ENOMEM
    العناوين في النطاق المحدد جزئياً أو كلياً خارج مساحة عناوين المستدعي.

الإصدارات
يسمح POSIX.1 للتنفيذ بتوليد خطأ إذا كان size يساوي 0. في لينكس، يُسمح بتحديد size كـ 0 (كعملية لا شيء ناجحة).

في glibc، تُنفَّذ هذه الدالة باستخدام madvise(2). لكن، منذ glibc 2.6، يُعامل POSIX_MADV_DONTNEED كعملية عدمية، لأن القيمة المقابلة في madvise(2)، MADV_DONTNEED، لها دلالات تدميرية.

المعايير
POSIX.1-2008.

التاريخ
glibc 2.2. POSIX.1-2001.

انظر أيضًا
madvise(2)، posix_fadvise(2)

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

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

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