PR_SET_FP_MODE(2const)

الاسم
PR_SET_FP_MODE - تعيين وضع الفاصلة العائمة للعملية المستدعية

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

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

int prctl(PR_SET_FP_MODE, unsigned long mode);

الوصف
في بنية MIPS، يمكن بناء كود مساحة المستخدم باستخدام ABI يسمح بالربط مع كود لديه متطلبات فاصلة عائمة (FP) أكثر تقييدًا. على سبيل المثال، قد يُبنى كود مساحة المستخدم لاستهداف ABI O32 FPXX ويُربط مع كود مبني لأحد ABIs الأكثر تقييدًا FP32 أو FP64. عند ربط كود أكثر تقييدًا، يصبح المتطلب العام للعملية هو استخدام وضع الفاصلة العائمة الأكثر تقييدًا.

نظرًا لعدم امتلاك النواة وسيلة لمعرفة مسبقًا أي وضع يجب تنفيذ العملية به، ولأن هذه القيود قد تتغير على مدى عمر العملية، تُوفر عملية PR_SET_FP_MODE للسماح بالتحكم في وضع الفاصلة العائمة من مساحة المستخدم.

وسيطة mode هي قناع بت يصف وضع الفاصلة العائمة المستخدم:

PR_FP_MODE_FR
    عندما يكون هذا البت غير مضبوط (ما يُسمى وضع FR=0 أو FR0)، تكون سجلات الفاصلة العائمة الـ32 بعرض 32 بت، وتُمثل السجلات ذات 64 بت كزوج من السجلات (مرقمة زوجية وفردية، حيث يحتوي السجل ذو الرقم الزوجي على الـ32 بت السفلى، ويحتوي السجل ذو الرقم الفردي على الـ32 بت العليا).

    عندما يكون هذا البت مضبوطًا (على العتاد المدعوم)، تكون سجلات الفاصلة العائمة الـ32 بعرض 64 بت (ما يُسمى وضع FR=1 أو FR1). لاحظ أن تطبيقات MIPS الحديثة (MIPS R6 والأحدث) تدعم وضع FR=1 فقط.

    يمكن للتطبيقات التي تستخدم ABI O32 FP32 العمل فقط عندما يكون هذا البت غير مضبوط (FR=0؛ أو يمكن استخدامها مع تمكين FRE، انظر أدناه). يمكن للتطبيقات التي تستخدم ABI O32 FP64 (وABI O32 FP64A، الموجود لتوفير القدرة على العمل مع كود FP32 الحالي؛ انظر أدناه) العمل فقط عندما يكون هذا البت مضبوطًا (FR=1). يمكن للتطبيقات التي تستخدم ABI O32 FPXX العمل مع أي من FR=0 أو FR=1.

PR_FP_MODE_FRE
    تمكين محاكاة وضع الفاصلة العائمة 32 بت. عند تمكين هذا الوضع، يُحاكي عمليات الفاصلة العائمة 32 بت عن طريق رفع استثناء تعليمة محجوزة على كل تعليمة تستخدم تنسيقات 32 بت، ثم تعالج النواة التعليمة برمجيًا. (تكمن المشكلة في التناقض في معالجة السجلات الفردية التي هي الـ32 بت العليا من سجلات 64 بت ذات الأرقام الزوجية في وضع FR=0 والأجزاء السفلى 32 بت من سجلات 64 بت الفردية في وضع FR=1.) يكون تمكين هذا البت ضروريًا عندما يجب أن يعمل كود مع ABI O32 FP32 مع كود متوافق مع ABIs O32 FPXX أو O32 FP64A (التي تتطلب وضع FPU FR=1) أو عندما يُنفذ على عتاد أحدث (MIPS R6 فصاعدًا) يفتقر إلى دعم وضع FR=0 عند استخدام ثنائي مع ABI FP32.

    لاحظ أن هذا الوضع يكون منطقيًا فقط عندما تكون FPU في وضع 64 بت (FR=1).

    لاحظ أن استخدام المحاكاة بطبيعته له تأثير كبير على الأداء ويجب تجنبه إذا أمكن.

في ABI N32/N64، يُستخدم وضع الفاصلة العائمة 64 بت دائمًا، لذا لا تكون محاكاة FPU مطلوبة وتعمل FPU دائمًا في وضع FR=1.

هذه العملية مخصصة بشكل أساسي للاستخدام من قبل الرابط الديناميكي (ld.so(8)).

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

الأخطاء

EOPNOTSUPP
    تحتوي mode على قيمة غير صالحة أو غير مدعومة.

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

التاريخ
لينكس 4.0 (MIPS).

انظر أيضًا
prctl(2)، PR_GET_FP_MODE(2const)

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

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

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