.\" -*- coding: UTF-8 -*- '\" t .\" 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 pthread_attr_setguardsize 3 "17 مايو 2025" "صفحات دليل لينكس 6.18" .SH الاسم pthread_attr_setguardsize, pthread_attr_getguardsize \- تعيين/الحصول على سمة حجم الحارس في كائن سمات الخيط .SH المكتبة مكتبة مسالك POSIX (\fIlibpthread\fP،\ \fI\-lpthread\fP) .SH موجز .nf \fB#include \fP .P \fBint pthread_attr_setguardsize(pthread_attr_t *\fP\fIattr\fP\fB, size_t \fP\fIguardsize\fP\fB);\fP \fBint pthread_attr_getguardsize(const pthread_attr_t *restrict \fP\fIattr\fP\fB,\fP \fB size_t *restrict \fP\fIguardsize\fP\fB);\fP .fi .SH الوصف تضبط الدالة \fBpthread_attr_setguardsize\fP() سمة حجم الحارس لكائن سمات الخيط المشار إليه بواسطة \fIattr\fP إلى القيمة المحددة في \fIguardsize\fP. .P إذا كان \fIguardsize\fP أكبر من 0، فإنه لكل خيط جديد يُنشأ باستخدام \fIattr\fP يخصص النظام منطقة إضافية بحجم لا يقل عن \fIguardsize\fP بايت في نهاية مكدس الخيط لتكون منطقة حارس للمكدس (لكن انظر الأخطاء). .P إذا كان \fIguardsize\fP يساوي 0، فإن الخيوط الجديدة المنشأة باستخدام \fIattr\fP لن تحتوي على منطقة حارس. .P حجم الحارس المبدئي هو نفس حجم صفحة النظام. .P إذا تم تعيين سمة عنوان المكدس في \fIattr\fP (باستخدام \fBpthread_attr_setstack\fP(3) أو \fBpthread_attr_setstackaddr\fP(3))، مما يعني أن المستدعي يخصص مكدس الخيط، فإن سمة حجم الحارس تُتجاهل (أي لا تُنشأ منطقة حارس بواسطة النظام): تقع مسؤولية معالجة تجاوز سعة المكدس على عاتق التطبيق (ربما باستخدام \fBmprotect\fP(2) لتعريف منطقة حارس يدويًا في نهاية المكدس الذي خصصه). .P تُرجع الدالة \fBpthread_attr_getguardsize\fP() سمة حجم الحارس لكائن سمات الخيط المشار إليه بواسطة \fIattr\fP في المخزن المؤقت المشار إليه بواسطة \fIguardsize\fP. .SH "قيمة الإرجاع" عند النجاح، تُعيد هذه الدوال القيمة 0؛ وعند الخطأ، تُعيد رقم خطأ غير صفري. .SH الأخطاء يوثق POSIX.1 خطأ \fBEINVAL\fP إذا كان \fIattr\fP أو \fIguardsize\fP غير صالح. على لينكس تنجح هذه الدوال دائمًا (لكن التطبيقات المحمولة والمقاومة للمستقبل يجب أن تتعامل مع إرجاع خطأ محتمل). .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBpthread_attr_setguardsize\fP()، \fBpthread_attr_getguardsize\fP() T} سلامة الخيوط MT\-Safe .TE .SH المعايير POSIX.1\-2008. .SH التاريخ glibc 2.1. POSIX.1\-2001. .SH ملاحظات تتكون منطقة الحارس من صفحات ذاكرة افتراضية محمية لمنع الوصول للقراءة والكتابة. إذا تجاوز خيط مكدسه إلى منطقة الحارس، فإنه، على معظم البنى الصلبة، يستقبل إشارة \fBSIGSEGV\fP، مما يخبره بالتجاوز. تبدأ مناطق الحارس على حدود الصفحات، ويُقرّب حجم الحارس داخليًا إلى حجم صفحة النظام عند إنشاء خيط. (مع ذلك، تُرجع \fBpthread_attr_getguardsize\fP() حجم الحارس الذي تم تعيينه بواسطة \fBpthread_attr_setguardsize\fP().) .P قد يكون تعيين حجم حارس بقيمة 0 مفيدًا لتوفير الذاكرة في تطبيق ينشئ العديد من الخيوط ويعلم أن تجاوز سعة المكدس لا يمكن أن يحدث أبدًا. .P قد يكون اختيار حجم حارس أكبر من الحجم المبدئي ضروريًا لاكتشاف تجاوزات سعة المكدس إذا خصص خيط هياكل بيانات كبيرة على المكدس. .SH العلل اعتبارًا من glibc 2.8، يتضمن تنفيذ الخيوط NPTL منطقة الحارس ضمن تخصيص حجم المكدس، بدلاً من تخصيص مساحة إضافية في نهاية المكدس، كما يتطلب POSIX.1. (يمكن أن يؤدي هذا إلى خطأ \fBEINVAL\fP من \fBpthread_create\fP(3) إذا كانت قيمة حجم الحارس كبيرة جدًا، مما لا يترك مساحة للمكدس الفعلي.) .P .\" glibc includes the guardsize within the allocated stack size, .\" which looks pretty clearly to be in violation of POSIX. .\" .\" Filed bug, 22 Oct 2008: .\" https://www.sourceware.org/bugzilla/show_bug.cgi?id=6973 .\" .\" Older reports: .\" https//bugzilla.redhat.com/show_bug.cgi?id=435337 .\" Reportedly, LinuxThreads did the right thing, allocating .\" extra space at the end of the stack: .\" http://sourceware.org/ml/libc-alpha/2008-05/msg00086.html قام تنفيذ LinuxThreads القديم بالشيء الصحيح، بتخصيص مساحة إضافية في نهاية المكدس لمنطقة الحارس. .SH أمثلة انظر \fBpthread_getattr_np\fP(3). .SH "انظر أيضًا" \fBmmap\fP(2)، \fBmprotect\fP(2)، \fBpthread_attr_init\fP(3)، \fBpthread_attr_setstack\fP(3)، \fBpthread_attr_setstacksize\fP(3)، \fBpthread_create\fP(3)، \fBpthreads\fP(7) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .