Scroll to navigation

io_submit(2) System Calls Manual io_submit(2)

الاسم

io_submit - إرسال كتل الإدخال/الإخراج غير المتزامنة للمعالجة

المكتبة

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

بديلًا عن ذلك، مكتبة الإدخال/الإخراج غير المتزامنة (libaio،‏ -laio)؛ انظر VERSIONS.

موجز

#include <linux/aio_abi.h>          /* يعرّف الأنواع المطلوبة */
int io_submit(aio_context_t ctx_id, long nr, struct iocb **iocbpp);

ملاحظة: لا يوجد مغلف glibc لنداء النظام هذا؛ انظر VERSIONS.

الوصف

ملاحظة: تصف هذه الصفحة واجهة نداء نظام لينكس الخام. تستخدم دالة الغلاف التي توفرها libaio نوعًا مختلفًا لمعامل ctx_id. راجع VERSIONS.

استدعاء النظام io_submit() يطابور nr من كتل طلبات الإدخال/الإخراج للمعالجة في سياق AIO ctx_id. يجب أن تكون وسيطة iocbpp مصفوفة من nr كتل تحكم AIO، والتي ستُرسل إلى السياق ctx_id.

هيكل iocb (كتلة التحكم في الإدخال/الإخراج) المُعرّف في linux/aio_abi.h يُعرّف المعاملات التي تتحكم في عملية الإدخال/الإخراج.


#include <linux/aio_abi.h>
struct iocb {

__u64 aio_data;
__u32 PADDED(aio_key, aio_rw_flags);
__u16 aio_lio_opcode;
__s16 aio_reqprio;
__u32 aio_fildes;
__u64 aio_buf;
__u64 aio_nbytes;
__s64 aio_offset;
__u64 aio_reserved2;
__u32 aio_flags;
__u32 aio_resfd; };

حقول هذا الهيكل هي كالتالي:

تُنسخ هذه البيانات إلى حقل data من هيكل io_event عند اكتمال الإدخال/الإخراج (انظر io_getevents(2)).
هذا حقل داخلي يستخدمه النواة. لا تُعدّل هذا الحقل بعد استدعاء io_submit().
يُعرّف هذا أعلام القراءة/الكتابة الممررة مع الهيكل. القيم الصالحة هي:
إلحاق البيانات بنهاية الملف. انظر وصف العلم الذي يحمل نفس الاسم في pwritev2(2) وكذلك وصف O_APPEND في open(2). يُتجاهل حقل aio_offset. لا يتغير إزاحة الملف.
اكتمال عملية الكتابة وفقًا لمتطلبات سلامة بيانات الإدخال/الإخراج المتزامن. انظر وصف العلم الذي يحمل نفس الاسم في pwritev2(2) وكذلك وصف O_DSYNC في open(2).
طلب ذو أولوية عالية، استطلاع إذا أمكن
لا تنتظر إذا كان الإدخال/الإخراج سيمنع لعمليات مثل تخصيص كتل الملفات، أو مسح الصفحات المتسخة، أو أقفال المزامنة، أو جهاز كتلة مزدحم داخل النواة. إذا تحقق أي من هذه الشروط، تُعاد كتلة التحكم فورًا بقيمة إرجاع -EAGAIN في حقل res من هيكل io_event (انظر io_getevents(2)).
اكتمال عملية الكتابة وفقًا لمتطلبات سلامة ملف الإدخال/الإخراج المتزامن. انظر وصف العلم الذي يحمل نفس الاسم في pwritev2(2) وكذلك وصف O_SYNC في open(2).
يُعرّف هذا نوع الإدخال/الإخراج الذي سينفذه هيكل iocb. القيم الصالحة مُعرّفة بواسطة التعداد المُعرّف في linux/aio_abi.h:

enum {

IOCB_CMD_PREAD = 0,
IOCB_CMD_PWRITE = 1,
IOCB_CMD_FSYNC = 2,
IOCB_CMD_FDSYNC = 3,
IOCB_CMD_POLL = 5,
IOCB_CMD_NOOP = 6,
IOCB_CMD_PREADV = 7,
IOCB_CMD_PWRITEV = 8, };

يُعرّف هذا أولوية الطلبات.
واصف الملف الذي سيجري عليه الإدخال/الإخراج.
هذه هي الخبيئة المستخدمة لنقل البيانات لعملية قراءة أو كتابة.
هذا هو حجم الوسيط الذي يشير إليه aio_buf.
هذه هي إزاحة الملف التي ستُجرى عندها عملية الإدخال/الإخراج.
هذه مجموعة الأعلام المرتبطة بهيكل iocb. القيم الصالحة هي:
يجب أن يشير التحكم في الإدخال/الإخراج غير المتزامن إلى واصف الملف المذكور في aio_resfd عند الاكتمال.
فسّر حقل aio_reqprio كقيمة IOPRIO_VALUE كما هو معرّف في linux/ioprio.h.
وصف الملف للإشارة عند إكمال الإدخال/الإخراج غير المتزامن.

قيمة الإرجاع

عند النجاح، تُرجع io_submit() عدد كتل iocb المُرسلة (قد يكون أقل من nr، أو 0 إذا كان nr صفرًا). للإرجاع عند الفشل، انظر VERSIONS.

الأخطاء

الموارد المتاحة غير كافية لطابور أي كتل iocb.
وصف الملف المحدد في أول iocb غير صالح.
إحدى بنيات البيانات تشير إلى بيانات غير صالحة.
سياق AIO المحدد بواسطة ctx_id غير صالح. nr أقل من 0. كتلة iocb عند *iocbpp[0] غير مهيأة بشكل صحيح، العملية المحددة غير صالحة لوصف الملف في iocb، أو القيمة في حقل aio_reqprio غير صالحة.
io_submit() غير مطبّقة على هذه البنية.
حقل aio_reqprio مضبوط بالفئة IOPRIO_CLASS_RT، لكن سياق الإرسال لا يمتلك القدرة CAP_SYS_ADMIN.

الإصدارات

لا توفر glibc غلافًا لاستدعاء النظام هذا. يمكنك استدعاؤه باستخدام syscall(2). لكن بدلاً من ذلك، ربما تريد استخدام دالة الغلاف io_submit() المقدمة من libaio.

لاحظ أن دالة الغلاف libaio تستخدم نوعًا مختلفًا (io_context_t) للمعامل ctx_id. لاحظ أيضًا أن غلاف libaio لا يتبع اصطلاحات مكتبة C المعتادة للإشارة إلى الأخطاء: فعند حدوث خطأ، يُرجع رقم خطأ منفيًا (سالب إحدى القيم المدرجة في الأخطاء ERRORS). إذا استُدعي نداء النظام عبر syscall(2)، فإن القيمة المرجعة تتبع الاصطلاحات المعتادة للإشارة إلى الخطأ: -1، مع ضبط errno على قيمة (موجبة) تشير إلى الخطأ.

المعايير

لينكس.

التاريخ

لينكس 2.5.

انظر أيضًا

io_cancel(2), io_destroy(2), io_getevents(2), io_setup(2), aio(7)

ترجمة

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

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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

2 مايو 2024 صفحات دليل لينكس 6.9.1