PR_SVE_SET_VL(2const)

الاسم
PR_SVE_SET_VL - تعيين طول متجه SVE للخيط

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

موجز
#include <linux/prctl.h>  /* تعريف ثوابت PR_* */
#include <sys/prctl.h>

int prctl(PR_SVE_SET_VL, unsigned long val);

الوصف
تكوين طول متجه SVE للخيط، كما هو محدد بواسطة val.

يجب تعيين بتات val المقابلة لـ PR_SVE_VL_LEN_MASK إلى طول المتجه المطلوب بالبايت. يُفسر هذا كحد أعلى: ستختار النواة أكبر طول متجه متاح لا يتجاوز القيمة المحددة. على وجه الخصوص، تحديد SVE_VL_MAX (المعرف في <asm/sigcontext.h>) لبتات PR_SVE_VL_LEN_MASK يطلب أقصى طول متجه مدعوم.

بالإضافة إلى ذلك، يجب تعيين البتات الأخرى من val إلى إحدى تركيبات الأعلام التالية:

0L  تنفيذ التغيير فورًا. عند استدعاء execve(2) التالي في الخيط، سيتم إعادة تعيين طول المتجه إلى القيمة المكونة في /proc/sys/abi/sve_default_vector_length.

PR_SVE_VL_INHERIT
    تنفيذ التغيير فورًا. استدعاءات execve(2) اللاحقة ستحافظ على طول المتجه الجديد.

PR_SVE_SET_VL_ONEXEC
    تأجيل التغيير، بحيث يتم تنفيذه عند استدعاء execve(2) التالي في الخيط. استدعاءات execve(2) اللاحقة ستعيد تعيين طول المتجه إلى القيمة المكونة في /proc/sys/abi/sve_default_vector_length.

PR_SVE_SET_VL_ONEXEC | PR_SVE_VL_INHERIT
    تأجيل التغيير، بحيث يتم تنفيذه عند استدعاء execve(2) التالي في الخيط. استدعاءات execve(2) اللاحقة ستحافظ على طول المتجه الجديد.

في جميع الحالات، يتم إلغاء أي تغيير مؤجل معلق سابقًا.

عند النجاح، يتم إرجاع قيمة غير سالبة تصف التهيئة المختارة. إذا تم تضمين PR_SVE_SET_VL_ONEXEC في val، فإن التهيئة الموصوفة بقيمة الإرجاع ستصبح سارية المفعول عند استدعاء execve(2) التالي. بخلاف ذلك، تكون التهيئة سارية المفعول بالفعل عند عودة استدعاء PR_SVE_SET_VL. في كلتا الحالتين، يتم ترميز القيمة بنفس طريقة قيمة إرجاع PR_SVE_GET_VL. لاحظ أنه لا يوجد علم صريح في قيمة الإرجاع يقابل PR_SVE_SET_VL_ONEXEC.

يتم توريث التهيئة (بما في ذلك أي تغيير مؤجل معلق) عبر fork(2) و clone(2).

قيمة الإرجاع
عند النجاح، يُرجع PR_SVE_SET_VL القيمة غير السالبة الموصوفة أعلاه. عند الخطأ، يتم إرجاع -1، ويتم تعيين errno للإشارة إلى الخطأ.

الأخطاء

EINVAL
    SVE غير متاح على هذه المنصة.

EINVAL
    القيمة في بتات val المقابلة لـ PR_SVE_VL_LEN_MASK خارج النطاق [SVE_VL_MIN, SVE_VL_MAX] أو ليست من مضاعفات 16.

EINVAL
    البتات الأخرى من val غير صالحة أو غير مدعومة.

الملفات

/proc/sys/abi/sve_default_vector_length

المعايير
لينكس. arm64 فقط.

التاريخ
لينكس 4.15 (arm64).

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

انظر أيضًا
prctl(2), PR_SVE_GET_VL(2const)

لمزيد من المعلومات، راجع ملف مصدر النواة Documentation/arch/arm64/sve.rst.

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

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

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