personality(2)

الاسم
personality - ضبط نطاق تنفيذ العملية

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

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

int personality(unsigned long persona);

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

إذا لم يكن persona يساوي 0xffffffff، فإن personality() يضبط نطاق تنفيذ المتصل إلى القيمة المحددة بواسطة persona. تحديد persona كـ 0xffffffff يوفر طريقة لاسترجاع الشخصية الحالية دون تغييرها.

يمكن العثور على قائمة نطاقات التنفيذ المتاحة في <sys/personality.h>. نطاق التنفيذ هو قيمة 32 بت حيث تُخصص البايتات الثلاث العليا للأعلام التي تجعل النواة تعدل سلوك استدعاءات نظام معينة لمحاكاة الخصائص التاريخية أو المعمارية. البايت الأقل أهمية هو قيمة تحدد الشخصية التي يجب أن تفترضها النواة. قيم الأعلام هي كما يلي:

ADDR_COMPAT_LAYOUT (منذ لينكس 2.6.9)
    مع ضبط هذا العلم، توفير تخطيط مساحة عنوان افتراضية قديم.

ADDR_NO_RANDOMIZE (منذ لينكس 2.6.12)
    مع ضبط هذا العلم، تعطيل العشوائية في تخطيط مساحة العنوان.

ADDR_LIMIT_32BIT (منذ لينكس 2.2)
    تحديد مساحة العنوان إلى 32 بت.

ADDR_LIMIT_3GB (منذ لينكس 2.4.0)
    مع ضبط هذا العلم، استخدام 0xc0000000 كالإزاحة التي يُبحث عندها عن قطعة ذاكرة افتراضية في mmap(2)؛ وإلا استخدام 0xffffe000. ينطبق فقط على عمليات x86 ذات 32 بت.

FDPIC_FUNCPTRS (منذ لينكس 2.6.11)
    مؤشرات الدوال في مساحة المستخدم لمعالجات الإشارات تشير إلى واصفات. ينطبق فقط على ARM إذا كان BINFMT_ELF_FDPIC و SuperH.

MMAP_PAGE_ZERO (منذ لينكس 2.4.0)
    وصل الصفحة 0 كقراءة فقط (لدعم الملفات الثنائية التي تعتمد على هذا السلوك SVr4).

READ_IMPLIES_EXEC (منذ لينكس 2.6.8)
    مع ضبط هذا العلم، PROT_READ يستلزم PROT_EXEC لـ mmap(2).

SHORT_INODE (منذ لينكس 2.4.0)
    لا تأثير.

STICKY_TIMEOUTS (منذ لينكس 1.2.0)
    مع ضبط هذا العلم، select(2) و pselect(2) و ppoll(2) لا تعدل وسيطة المهلة المُعادة عند المقاطعة بواسطة معالج إشارة.

UNAME26 (منذ لينكس 3.1)
    جعل uname(2) يبلغ عن رقم إصدار 2.6.(40+x) بدلاً من رقم إصدار MAJOR.x. أُضيف كإجراء مؤقت لدعم التطبيقات المعطلة التي لم تستطع التعامل مع تبديل ترقيم إصدار النواة من لينكس 2.6.x إلى لينكس 3.x.

WHOLE_SECONDS (منذ لينكس 1.2.0)
    لا تأثير.

نطاقات التنفيذ المتاحة هي:

PER_BSD (منذ لينكس 1.2.0)
    BSD. (لا تأثيرات.)

PER_HPUX (منذ لينكس 2.4)
    دعم لـ HP/UX 32-بت. لم يكتمل هذا الدعم أبدًا، وأُسقط بحيث لا يكون لهذه القيمة أي تأثير منذ لينكس 4.0.

PER_IRIX32 (منذ لينكس 2.2)
    IRIX 5 32-بت. لم يعمل بكامل وظائفه أبدًا؛ أُسقط الدعم في لينكس 2.6.27. يستلزم STICKY_TIMEOUTS.

PER_IRIX64 (منذ لينكس 2.2)
    IRIX 6 64-بت. يستلزم STICKY_TIMEOUTS؛ وإلا فلا تأثير.

PER_IRIXN32 (منذ لينكس 2.2)
    IRIX 6 جديد 32-بت. يستلزم STICKY_TIMEOUTS؛ وإلا فلا تأثير.

PER_ISCR4 (منذ لينكس 1.2.0)
    يستلزم STICKY_TIMEOUTS؛ وإلا فلا تأثير.

PER_LINUX (منذ لينكس 1.2.0)
    لينكس.

PER_LINUX32 (منذ لينكس 2.2)
    يُرجع uname(2) اسم المعمارية 32-بت في حقل machine ("i686" بدلاً من "x86_64"، إلخ.).

    تحت ia64 (Itanium)، لا تُفرض علامة O_LARGEFILE open(2) على العمليات بهذه الشخصية.

    تحت ARM 64-بت، يُحظر تعيين هذه الشخصية إذا كان execve(2) لعملية 32-بت محظورًا أيضًا (راجع معامل النواة allow_mismatched_32bit_el0 و Documentation/arm64/asymmetric-32bit.rst).

PER_LINUX32_3GB (منذ لينكس 2.4)
    مثل PER_LINUX32، لكن يستلزم ADDR_LIMIT_3GB.

PER_LINUX_32BIT (منذ لينكس 2.0)
    مثل PER_LINUX، لكن يستلزم ADDR_LIMIT_32BIT.

PER_LINUX_FDPIC (منذ لينكس 2.6.11)
    مثل PER_LINUX، لكن يستلزم FDPIC_FUNCPTRS.

PER_OSF4 (منذ لينكس 2.4)
    OSF/1 v4. لا تأثير منذ لينكس 6.1، الذي أزال دعم الثنائيات a.out. سابقًا، على alpha، كان يمسح أعلى 32 بت من iov_len في مخزن المستخدم للتوافق مع الإصدارات القديمة من OSF/1 حيث عُرّف iov_len كـ int.

PER_OSR5 (منذ لينكس 2.4)
    SCO OpenServer 5. يستلزم STICKY_TIMEOUTS و WHOLE_SECONDS؛ وإلا فلا تأثير.

PER_RISCOS (منذ لينكس 2.3.7؛ الماكرو منذ لينكس 2.3.13)
    Acorn RISC OS/Arthur (MIPS). لا تأثير. حتى لينكس 4.0، كان يعيّن الجذر البديل للمحاكاة إلى /usr/gnemul/riscos (راجع PER_SUNOS، أدناه). قبل ذلك، حتى لينكس 2.6.3، مجرد محاكاة Arthur.

PER_SCOSVR3 (منذ لينكس 1.2.0)
    SCO UNIX System V Release 3. مثل PER_OSR5، لكن يستلزم أيضًا SHORT_INODE.

PER_SOLARIS (منذ لينكس 2.4)
    سولاريس. يستلزم STICKY_TIMEOUTS؛ وإلا فلا تأثير.

PER_SUNOS (منذ لينكس 2.4.0)
    صن أو إس. مماثل لـ PER_BSD، لكن يستلزم STICKY_TIMEOUTS. قبل لينكس 2.6.26، حوّل عمليات بحث المكتبات والرابط الديناميكي إلى /usr/gnemul. معيب، غير مُصان إلى حد كبير، وغير مستخدم تقريبًا بالكامل.

PER_SVR3 (منذ لينكس 1.2.0)
    إيه تي آند تي يونكس سيستم في الإصدار 3. يستلزم STICKY_TIMEOUTS و SHORT_INODE؛ وإلا فلا تأثير.

PER_SVR4 (منذ لينكس 1.2.0)
    إيه تي آند تي يونكس سيستم في الإصدار 4. يستلزم STICKY_TIMEOUTS و MMAP_PAGE_ZERO؛ وإلا فلا تأثير.

PER_UW7 (منذ لينكس 2.4)
    يونيكس وير 7. يستلزم STICKY_TIMEOUTS و MMAP_PAGE_ZERO؛ وإلا فلا تأثير.

PER_WYSEV386 (منذ لينكس 1.2.0)
    وايز يونكس سيستم في/386. يستلزم STICKY_TIMEOUTS و SHORT_INODE؛ وإلا فلا تأثير.

PER_XENIX (منذ لينكس 1.2.0)
    إكسينكس. يستلزم STICKY_TIMEOUTS و SHORT_INODE؛ وإلا فلا تأثير.

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

الأخطاء

EINVAL
    تعذر على النواة تغيير الشخصية.

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

التاريخ
لينكس 1.1.20، جليبتك 2.3.

انظر أيضًا
setarch(8)

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

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

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