- trixie-backports 4.31.0-1~bpo13+1
- testing 4.31.0-1
- unstable 4.31.0-1
| spu_create(2) | System Calls Manual | spu_create(2) |
الاسم¶
spu_create - إنشاء سياق spu جديد
المكتبة¶
مكتبة سي المعيارية (libc، -lc)
موجز¶
#include <sys/spu.h> /* تعريف ثوابت SPU_* */ #include <sys/syscall.h> /* تعريف ثوابت SYS_* */ #include <unistd.h>
int syscall(SYS_spu_create, const char *pathname, unsigned int flags,
mode_t mode, int neighbor_fd);
ملاحظة: لا توفر glibc غلافًا لـ spu_create()، مما يستلزم استخدام syscall(2).
الوصف¶
استدعاء النظام spu_create() يُستخدم على أجهزة PowerPC التي تنفذ بنية Cell Broadband Engine للوصول إلى وحدات المعالجة التآزرية (SPUs). ينشئ سياقًا منطقيًا جديدًا لـ SPU في pathname ويعيد واصف ملف مرتبط به. يجب أن يشير pathname إلى دليل غير موجود في نقطة الوصل لنظام ملفات SPU (spufs). إذا نجح spu_create()، يتم إنشاء دليل في pathname ويتم ملؤه بالملفات الموصوفة في spufs(7).
عند إنشاء سياق، يمكن تمرير واصف الملف المُعاد فقط إلى spu_run(2)، أو استخدامه كوسيطة dirfd لعائلة استدعاءات النظام *at (مثل openat(2))، أو إغلاقه؛ العمليات الأخرى غير معرفة. يتم تدمير سياق SPU المنطقي (مع جميع الملفات المنشأة داخل دليل pathname للسياق) بمجرد زوال المرجع الأخير للسياق؛ يحدث هذا عادةً عند إغلاق واصف الملف المُعاد بواسطة spu_create().
يحدد وسيط mode (مطروحًا منه أي بتات مضبوطة في umask(2) للعملية) الأذونات المستخدمة لإنشاء الدليل الجديد في spufs. راجع stat(2) للحصول على قائمة كاملة بقيم mode الممكنة.
يُستخدم neighbor_fd فقط عند تحديد العلم SPU_CREATE_AFFINITY_SPU؛ انظر أدناه.
يمكن أن يكون وسيط flags صفرًا أو أي مجموعة OR-ed بت-wise من الثوابت التالية:
- SPU_CREATE_EVENTS_ENABLED
- بدلاً من استخدام الإشارات للإبلاغ عن أخطاء DMA، استخدم وسيط event لـ spu_run(2).
- SPU_CREATE_GANG
- إنشاء عصابة SPU بدلاً من سياق. (العصابة هي مجموعة من سياقات SPU المرتبطة وظيفيًا ببعضها البعض والتي تشارك معلمات جدولة مشتركة—الأولوية والسياسة. في المستقبل، قد يُنفذ جدولة العصابة مما يتسبب في تبديل المجموعة كوحدة واحدة.)
- سيتم إنشاء دليل جديد في الموقع المحدد بواسطة وسيطة pathname. يمكن استخدام هذه المجموعة لاحتواء سياقات SPU أخرى، من خلال توفير اسم مسار داخل دليل المجموعة لاستدعاءات لاحقة لـ spu_create().
- SPU_CREATE_NOSCHED
- إنشاء سياق لا يتأثر بجدولة SPU. بمجرد تشغيل السياق، لن يُجدول خارجًا حتى يُدمر بواسطة العملية المنشئة.
- نظرًا لعدم إمكانية إزالة السياق من SPU، تُعطل بعض الوظائف لسياقات SPU_CREATE_NOSCHED. ستتوفر مجموعة فرعية فقط من الملفات في دليل السياق هذا في spufs. بالإضافة إلى ذلك، لا يمكن لسياقات SPU_CREATE_NOSCHED تفريغ ملف أساسي عند التعطل.
- يتطلب إنشاء سياقات SPU_CREATE_NOSCHED القدرة CAP_SYS_NICE.
- SPU_CREATE_ISOLATE
- إنشاء سياق SPU معزول. السياقات المعزولة محمية من بعض عمليات PPE (عنصر معالجة PowerPC)، مثل الوصول إلى المخزن المحلي لـ SPU وسجل NPC.
- يتطلب إنشاء سياقات SPU_CREATE_ISOLATE أيضًا العلم SPU_CREATE_NOSCHED.
- SPU_CREATE_AFFINITY_SPU (منذ Linux 2.6.23)
- إنشاء سياق بتقارب مع سياق SPU آخر. تُستخدم معلومات التقارب هذه داخل خوارزمية جدولة SPU. يتطلب استخدام هذا العلم تمرير واصف ملف يشير إلى سياق SPU الآخر في وسيط neighbor_fd.
- SPU_CREATE_AFFINITY_MEM (منذ Linux 2.6.23)
- إنشاء سياق بتقارب مع ذاكرة النظام. تُستخدم معلومات التقارب هذه داخل خوارزمية جدولة SPU.
قيمة الإرجاع¶
عند النجاح، يُعيد spu_create() واصف ملف جديد. عند الفشل، يُعاد -1، ويُضبط errno للإشارة إلى الخطأ.
الأخطاء¶
- EACCES
- ليس لدى المستخدم الحالي صلاحية الكتابة إلى نقطة وصل spufs(7).
- EEXIST
- يوجد سياق SPU بالفعل في اسم المسار المُعطى.
- EFAULT
- pathname ليس مؤشر سلسلة صالحًا في مساحة عنوان العملية المستدعية.
- EINVAL
- pathname ليس دليلاً في نقطة الوصل لـ spufs(7)، أو تم توفير أعلام غير صالحة.
- ELOOP
- تم العثور على عدد كبير جدًا من الروابط الرمزية أثناء تحليل pathname.
- EMFILE
- وُصل إلى الحد الأقصى لواصفات الملفات المفتوحة لكل عملية.
- ENAMETOOLONG
- مسار الملف pathname طويل جداً.
- ENFILE
- وُصل إلى الحد الأقصى لإجمالي عدد الملفات المفتوحة على مستوى النظام.
- ENODEV
- تم طلب سياق معزول، لكن العتاد لا يدعم عزل SPU.
- ENOENT
- تعذر تحليل جزء من pathname.
- ENOMEM
- تعذر على النواة تخصيص جميع الموارد المطلوبة.
- ENOSPC
- لا توجد موارد SPU كافية متاحة لإنشاء سياق جديد أو تم الوصول إلى الحد الخاص بالمستخدم لعدد سياقات SPU.
- ENOSYS
- هذه الوظيفة غير مقدمة من قبل النظام الحالي، لأن الأجهزة لا توفر وحدات SPUs أو لأن وحدة spufs غير محملة.
- ENOTDIR
- جزء من pathname ليس دليلاً.
- EPERM
- تم إعطاء العلم SPU_CREATE_NOSCHED، لكن المستخدم لا يمتلك القدرة CAP_SYS_NICE.
الملفات¶
يجب أن يشير pathname إلى موقع أسفل نقطة الوصل لـ spufs. حسب الاصطلاح، يتم وصله في /spu.
المعايير¶
لينكس على PowerPC.
التاريخ¶
لينكس 2.6.16.
قبل إضافة العلم SPU_CREATE_AFFINITY_SPU في لينكس 2.6.23، كانت استدعاء النظام spu_create() تأخذ ثلاث وسائط فقط (أي، لم يكن هناك وسيطة neighbor_fd).
ملاحظات¶
spu_create() مخصص للاستخدام من المكتبات التي تنفذ واجهة أكثر تجريدًا لـ SPUs، وليس للاستخدام من التطبيقات العادية. انظر http://www.bsc.es/projects/deepcomputing/linuxoncell/ للمكتبات الموصى بها.
أمثلة¶
انظر spu_run(2) لمثال على استخدام spu_create()
انظر أيضًا¶
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| 2 مايو 2024 | صفحات دليل لينكس 6.9.1 |