.\" -*- coding: UTF-8 -*- .\" Copyright 2003, Andi Kleen .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH arch_prctl 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم arch_prctl \- ضبط حالة الخيط الخاصة بالمعمارية .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP /* تعريف ثوابت \fBARCH_*\fP */ \fB#include \fP /* تعريف ثوابت \fBSYS_*\fP */ \fB#include \fP .P \fBint syscall(SYS_arch_prctl, int \fP\fIop\fP\fB, unsigned long \fP\fIaddr\fP\fB);\fP \fBint syscall(SYS_arch_prctl, int \fP\fIop\fP\fB, unsigned long *\fP\fIaddr\fP\fB);\fP .fi .P \fIملاحظة\fP: لا توفر glibc غلافًا لـ \fBarch_prctl\fP()، مما يستلزم استخدام \fBsyscall\fP(2). .SH الوصف تضبط \fBarch_prctl\fP() حالة العملية أو الخيط الخاصة بالمعمارية. يختار \fIop\fP عملية ويمرر الوسيطة \fIaddr\fP إليها؛ تُفسر \fIaddr\fP إما كـ \fIunsigned long\fP لعمليات "الضبط"، أو كـ \fIunsigned long\ *\fP لعمليات "الجلب". .P الدوال الفرعية لكل من x86 و x86\-64 هي: .TP \fBARCH_SET_CPUID\fP (منذ لينكس 4.12) .\" commit e9ea1e7f53b852147cbd568b0568c7ad97ec21a3 تفعيل (\fIaddr != 0\fP) أو تعطيل (\fIaddr == 0\fP) تعليمة \fIcpuid\fP للخيط المستدعي. التعليمة مفعلة مبدئيًا. إذا عُطلت، أي تنفيذ لتعليمة \fIcpuid\fP سيولد بدلاً من ذلك إشارة \fBSIGSEGV\fP. يمكن استخدام هذه الميزة لمحاكاة نتائج \fIcpuid\fP تختلف عما كانت ستنتجه العتاد الأساسي (مثلًا، في إعداد شبه افتراضي). .IP يُحفظ إعداد \fBARCH_SET_CPUID\fP عبر \fBfork\fP(2) و \fBclone\fP(2) لكن يُعاد ضبطه إلى المبدئي (أي \fIcpuid\fP مفعل) عند \fBexecve\fP(2). .TP \fBARCH_GET_CPUID\fP (منذ لينكس 4.12) إرجاع إعداد العلم الذي يُعالج بواسطة \fBARCH_SET_CPUID\fP كنتيجة لاستدعاء النظام (1 للمفعل، 0 للمعطل). يُتجاهل \fIaddr\fP. .TP الدوال الفرعية لـ x86\-64 فقط هي: .TP \fBARCH_SET_FS\fP ضبط القاعدة 64\-بت لمسجل \fIFS\fP إلى \fIaddr\fP. .TP \fBARCH_GET_FS\fP إرجاع قيمة القاعدة 64\-بت لمسجل \fIFS\fP للخيط المستدعي في \fIunsigned long\fP المشار إليه بواسطة \fIaddr\fP. .TP \fBARCH_SET_GS\fP ضبط القاعدة 64\-بت لمسجل \fIGS\fP إلى \fIaddr\fP. .TP \fBARCH_GET_GS\fP إرجاع قيمة القاعدة 64\-بت لمسجل \fIGS\fP للخيط المستدعي في \fIunsigned long\fP المشار إليه بواسطة \fIaddr\fP. .SH "قيمة الإرجاع" عند النجاح، تُرجع \fBarch_prctl\fP() 0؛ عند الخطأ، تُرجع \-1، ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEFAULT\fP يشير \fIaddr\fP إلى عنوان غير معين أو خارج مساحة عنوان العملية. .TP \fBEINVAL\fP \fIop\fP ليس عملية صالحة. .TP \fBENODEV\fP طُلب \fBARCH_SET_CPUID\fP، لكن العتاد الأساسي لا يدعم خطأ CPUID. .TP \fBEPERM\fP .\" .SH AUTHOR .\" Man page written by Andi Kleen. \fIaddr\fP خارج مساحة عنوان العملية. .SH المعايير لينكس/x86\-64. .SH ملاحظات \fBarch_prctl\fP() مدعومة فقط على لينكس/x86\-64 للبرامج 64\-بت حاليًا. .P تتغير القاعدة 64\-بت عند تحميل محدد مقطع 32\-بت جديد. .P \fBARCH_SET_GS\fP معطل في بعض الأنوية. .P تبديلات السياق لقواعد المقاطع 64\-بت مكلفة جدًا. كتحسين، إذا تم استخدام عنوان قاعدة TLS 32\-بت، فقد يستخدم \fBarch_prctl\fP() إدخال TLS حقيقي كما لو تم استدعاء \fBset_thread_area\fP(2)، بدلاً من معالجة سجل قاعدة المقطع مباشرة. يمكن تخصيص ذاكرة في أول 2 جيجابايت من مساحة العنوان باستخدام \fBmmap\fP(2) مع العلم \fBMAP_32BIT\fP. .P بسبب التحسين المذكور أعلاه، فإن استخدام \fBarch_prctl\fP() و \fBset_thread_area\fP(2) في نفس الخيط خطير، حيث قد يكتبان فوق إدخالات TLS الخاصة ببعضهما البعض. .P قد يكون \fIFS\fP مستخدمًا بالفعل من قبل مكتبة الخيوط. البرامج التي تستخدم \fBARCH_SET_FS\fP مباشرة معرضة جدًا للانهيار. .SH "انظر أيضًا" \fBmmap\fP(2)، \fBmodify_ldt\fP(2)، \fBprctl\fP(2)، \fBset_thread_area\fP(2) .P دليل مبرمج AMD X86\-64 .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .