getauxval(3)

الاسم
getauxval - استرداد قيمة من المتجه المساعد

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

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

unsigned long getauxval(unsigned long type);

الوصف
الدالة getauxval() تسترد القيم من المتجه المساعد، وهي آلية يستخدمها محمل الثنائيات ELF في النواة لتمرير معلومات معينة إلى مساحة المستخدم عند تنفيذ برنامج.

يتكون كل إدخال في المتجه المساعد من زوج من القيم: نوع يحدد ما يمثله هذا الإدخال، وقيمة لذلك النوع. عند إعطاء المعامل type، تُرجع getauxval() القيمة المقابلة.

القيمة المُعادة لكل type مذكورة في القائمة التالية. ليست كل قيم type موجودة في جميع البنى.

AT_BASE
    العنوان الأساسي لمفسر البرنامج (عادةً، الرابط الديناميكي).

AT_BASE_PLATFORM
    مؤشر إلى سلسلة محارف (فقط PowerPC و MIPS). في PowerPC، يُحدد هذا المنصة الحقيقية؛ قد يختلف عن AT_PLATFORM. في MIPS، يُحدد هذا مستوى ISA (منذ Linux 5.7).

AT_CLKTCK
    التردد الذي يحسب به times(2). يمكن الحصول على هذه القيمة أيضًا عبر sysconf(_SC_CLK_TCK).

AT_DCACHEBSIZE
    حجم كتلة خبيئة البيانات.

AT_EGID
    معرف المجموعة الفعّال للخيط.

AT_ENTRY
    عنوان الدخول للملف التنفيذي.

AT_EUID
    معرف المستخدم الفعّال للخيط.

AT_EXECFD
    واصف ملف البرنامج.

AT_EXECFN
    مؤشر إلى سلسلة محارف تحتوي على اسم المسار المستخدم لتنفيذ البرنامج.

AT_FLAGS
    أعلام (غير مستخدمة).

AT_FPUCW
    كلمة تحكم FPU المستخدمة (فقط لمعمارية SuperH). يعطي هذا بعض المعلومات عن تهيئة FPU التي نفذها النواة.

AT_GID
    معرف المجموعة الحقيقي للخيط.

AT_HWCAP
    قناع بتات يعتمد على المعمارية وواجهة ABI، تشير إعداداته إلى قدرات المعالج التفصيلية. محتويات قناع البتات تعتمد على العتاد (على سبيل المثال، انظر ملف مصدر النواة arch/x86/include/asm/cpufeature.h للتفاصيل المتعلقة بمعمارية Intel x86؛ القيمة المعادة هي أول كلمة 32 بت من المصفوفة الموصوفة هناك). نسخة قابلة للقراءة البشرية من نفس المعلومات متاحة عبر /proc/cpuinfo.

AT_HWCAP2 (منذ glibc 2.18)
    تلميحات إضافية تعتمد على الآلة حول قدرات المعالج.

AT_ICACHEBSIZE
    حجم كتلة خبيئة التعليمات.

AT_L1D_CACHEGEOMETRY
    هندسة خبيئة البيانات L1، مُرمَّزة بحجم سطر الخبيئة بالبايتات في البتات الـ16 السفلية وترابطية الخبيئة في البتات الـ16 التالية. الترابطية بحيث إذا كانت N هي القيمة 16 بت، فإن الخبيئة هي ترابطية مجموعة ذات N مسار.

AT_L1D_CACHESIZE
    حجم خبيئة البيانات L1.

AT_L1I_CACHEGEOMETRY
    هندسة خبيئة التعليمات L1، مُرمَّزة كما في AT_L1D_CACHEGEOMETRY.

AT_L1I_CACHESIZE
    حجم خبيئة التعليمات L1.

AT_L2_CACHEGEOMETRY
    هندسة خبيئة L2، مُرمَّزة كما في AT_L1D_CACHEGEOMETRY.

AT_L2_CACHESIZE
    حجم خبيئة L2.

AT_L3_CACHEGEOMETRY
    هندسة خبيئة L3، مُرمَّزة كما في AT_L1D_CACHEGEOMETRY.

AT_L3_CACHESIZE
    حجم خبيئة L3.

AT_PAGESZ
    حجم صفحة النظام (نفس القيمة التي يُرجعها sysconf(_SC_PAGESIZE)).

AT_PHDR
    عنوان رؤوس البرنامج للملف التنفيذي.

AT_PHENT
    حجم مدخل رأس البرنامج.

AT_PHNUM
    عدد رؤوس البرنامج.

AT_PLATFORM
    مؤشر إلى سلسلة محارف تحدد منصة العتاد التي يعمل عليها البرنامج. يستخدم الرابط الديناميكي هذا في تفسير قيم rpath.

AT_RANDOM
    عنوان ستة عشر بايتًا تحتوي على قيمة عشوائية.

AT_SECURE
    له قيمة غير صفرية إذا كان يجب معالجة هذا الملف التنفيذي بشكل آمن. في الغالب، تشير القيمة غير الصفرية إلى أن العملية تنفذ ملفًا ثنائيًا set-user-ID أو set-group-ID (بحيث تختلف معرفات المستخدم أو المجموعة الحقيقية والفعلية عن بعضها البعض)، أو أنها اكتسبت صلاحيات بتنفيذ ملف ثنائي له صلاحيات (انظر capabilities(7)). بدلاً من ذلك، قد تُثار قيمة غير صفرية بواسطة وحدة أمان لينكس. عندما تكون هذه القيمة غير صفرية، يعطل الرابط الديناميكي استخدام متغيرات بيئة معينة (انظر ld-linux.so(8)) ويغير glibc جوانب أخرى من سلوكه. (انظر أيضًا secure_getenv(3).)

AT_SYSINFO
    نقطة الدخول إلى دالة استدعاء النظام في vDSO. غير موجودة/مطلوبة على جميع البنى (مثلًا، غائبة على x86-64).

AT_SYSINFO_EHDR
    عنوان صفحة تحتوي على الكائن المشترك الديناميكي الافتراضي (vDSO) الذي ينشئه النواة لتوفير تطبيقات سريعة لبعض استدعاءات النظام.

AT_UCACHEBSIZE
    حجم كتلة الخبيئة الموحدة.

AT_UID
    معرف المستخدم الحقيقي للخيط.

قيمة الإرجاع
عند النجاح، تُرجع getauxval() القيمة المقابلة لـ type. إذا لم يُعثر على type، تُرجع 0.

الأخطاء

ENOENT (منذ glibc 2.19)
    لم يُعثر على إدخال مقابل لـ type في المتجه المساعد.

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
getauxval() | سلامة الخيوط | MT-Safe

المعايير
GNU.

التاريخ
glibc 2.16.

ملاحظات
المستهلك الرئيسي للمعلومات في المتجه المساعد هو الرابط الديناميكي، ld-linux.so(8). المتجه المساعد هو اختصار ملائم وفعال يسمح للنواة بإيصال مجموعة معينة من المعلومات القياسية التي يحتاجها الرابط الديناميكي عادةً أو دائمًا. في بعض الحالات، يمكن الحصول على نفس المعلومات بواسطة استدعاءات النظام، لكن استخدام المتجه المساعد أرخص.

يقع المتجه المساعد مباشرة فوق قائمة الوسائط والبيئة في مساحة عنوان العملية. يمكن عرض المتجه المساعد المقدم لبرنامج بتعيين متغير البيئة LD_SHOW_AUXV عند تشغيل برنامج:

    $ LD_SHOW_AUXV=1 sleep 1

يمكن الحصول على المتجه المساعد لأي عملية (رهنا بأذونات الملف) عبر /proc/pid/auxv؛ انظر proc(5) لمزيد من المعلومات.

العلل
قبل إضافة خطأ ENOENT في glibc 2.19، لم تكن هناك طريقة للتمييز بشكل لا لبس فيه بين الحالة التي لا يمكن فيها العثور على type والحالة التي كانت فيها القيمة المقابلة لـ type صفرًا.

انظر أيضًا
execve(2)، secure_getenv(3)، vdso(7)، ld-linux.so(8)

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

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

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