process_madvise(2)

الاسم
process_madvise - تقديم نصيحة حول استخدام الذاكرة لعملية

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

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

ssize_t process_madvise(size_t n;
                        int pidfd, const struct iovec iovec[n],
                        size_t n, int advice, unsigned int flags);

الوصف
استدعاء النظام process_madvise() يُستخدم لتقديم نصيحة أو توجيهات للنواة حول نطاقات العناوين لعملية أخرى أو لعملية الاستدعاء. يقدم النصيحة لنطاقات العناوين الموصوفة بواسطة iovec و n. الهدف من هذه النصيحة هو تحسين أداء النظام أو التطبيق.

الوسيطة pidfd هي واصف ملف PID (انظر pidfd_open(2)) الذي يحدد العملية التي ستُطبق عليها النصيحة.

المؤشر iovec يشير إلى مصفوفة من بنى iovec، الموصوفة في iovec(3type).

n يحدد عدد العناصر في مصفوفة بنى iovec. يجب أن تكون هذه القيمة أقل من أو تساوي IOV_MAX (المُعرّفة في <limits.h> أو القابلة للوصول عبر الاستدعاء sysconf(_SC_IOV_MAX)).

إذا تم التعامل مع عملية أخرى، أو قبل Linux 6.13، فإن الوسيطة advice تكون إحدى القيم التالية:

MADV_COLD
    انظر madvise(2).

MADV_COLLAPSE
    انظر madvise(2).

MADV_PAGEOUT
    انظر madvise(2).

MADV_WILLNEED
    انظر madvise(2).

منذ Linux 6.13، عند التعامل مع عملية الاستدعاء، يُسمح بأي علم نصيحة.

المعامل flags محجوز للاستخدام المستقبلي؛ حاليًا، يجب تحديد هذا المعامل كـ 0.

يتم فحص الوسيطتين n و iovec قبل تطبيق أي نصيحة. إذا كانت n كبيرة جدًا، أو iovec غير صالحة، فسيتم إرجاع خطأ فورًا ولن تُطبق أي نصيحة.

قد تُطبق النصيحة على جزء فقط من iovec إذا كان أحد عناصرها يشير إلى منطقة ذاكرة غير صالحة في العملية البعيدة. لن تتم معالجة أي عناصر إضافية بعد تلك النقطة. (انظر المناقشة حول النصيحة الجزئية في RETURN VALUE.)

منذ Linux 5.12، يُحكم الإذن بتطبيق النصيحة على عملية أخرى بواسطة فحص وضع الوصول ptrace PTRACE_MODE_READ_FSCREDS (انظر ptrace(2))؛ بالإضافة إلى ذلك، بسبب الآثار الأدائية لتطبيق النصيحة، يجب أن يمتلك المستدعي القدرة CAP_SYS_NICE (انظر capabilities(7)).

قيمة الإرجاع
عند النجاح، تُرجع process_madvise() عدد البايتات التي نُصحت. قد تكون هذه القيمة المرجعة أقل من إجمالي عدد البايتات المطلوبة، إذا حدث خطأ بعد معالجة بعض عناصر iovec. يجب على المستدعي التحقق من القيمة المرجعة لتحديد ما إذا حدثت نصيحة جزئية.

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

الأخطاء

EBADF
    pidfd ليس واصف ملف PID صالحاً.

EFAULT
    الذاكرة الموصوفة بواسطة iovec تقع خارج مساحة العناوين القابلة للوصول للعملية المشار إليها بواسطة pidfd.

EINVAL
    flags ليست 0.

EINVAL
    مجموع قيم iov_len لـ iovec يفيض قيمة ssize_t.

EINVAL
    n كبير جدًا.

ENOMEM
    تعذر تخصيص ذاكرة للنسخ الداخلية لهياكل iovec.

EPERM
    المستدعي لا يمتلك الإذن للوصول إلى مساحة العناوين للعملية pidfd.

ESRCH
    العملية الهدف غير موجودة (أي أنها أُنهيت وانتُظر اكتمالها).

انظر madvise(2) للأخطاء الخاصة بـ advice.

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

التاريخ
Linux 5.10، glibc 2.36.

الدعم لاستدعاء النظام هذا اختياري، اعتمادًا على إعداد خيار التهيئة CONFIG_ADVISE_SYSCALLS.

عندما ظهر استدعاء النظام هذا لأول مرة في Linux 5.10، كان الإذن بتطبيق النصيحة على عملية أخرى محكومًا بالكامل بواسطة فحص وضع الوصول ptrace PTRACE_MODE_ATTACH_FSCREDS (انظر ptrace(2)). تم تخفيف هذا المطلب في Linux 5.12 بحيث لا يحتاج المستدعي إلى سيطرة كاملة على العملية المستهدفة.

انظر أيضًا
madvise(2)، pidfd_open(2)، process_vm_readv(2)، process_vm_write(2)

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

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

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