.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2003 Free Software Foundation, Inc. .\" and Copyright (C) 2017 Goldwyn Rodrigues .\" .\" SPDX-License-Identifier: GPL-1.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH io_submit 2 "2 мая 2024 г." "Linux man\-pages 6.8" .SH ИМЯ io_submit \- отправляет асинхронные блоки ввода\-вывода для обработки .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .P Alternatively, Asynchronous I/O library (\fIlibaio\fP, \fI\-laio\fP); see VERSIONS. .SH СИНТАКСИС .nf \fB#include \fP /* определяет необходимые типы */ .P \fBint io_submit(aio_context_t \fP\fIctx_id\fP\fB, long \fP\fInr\fP\fB, struct iocb **\fP\fIiocbpp\fP\fB);\fP .fi .P \fINote\fP: There is no glibc wrapper for this system call; see VERSIONS. .SH ОПИСАНИЕ \fINote\fP: this page describes the raw Linux system call interface. The wrapper function provided by \fIlibaio\fP uses a different type for the \fIctx_id\fP argument. See VERSIONS. .P Системный вызов \fBio_submit\fP() ставит в очередь \fInr\fP запросов блоков ввода\-вывода для обработки в контексте AIO \fIctx_id\fP. Значение \fIiocbpp\fP должно быть массивом из \fInr\fP управляющих блоков AIO, которые будут отправлены в контекст \fIctx_id\fP. .P Структура \fIiocb\fP (блок управления вводом\-выводом), определённая в \fIlinux/aio_abi.h\fP, описывает параметры, которыми управляется операция ввода\-вывода. .P .in +4n .EX #include \& 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; }; .EE .in .P Поля этой структуры имеют следующее назначение: .TP \fIaio_data\fP Эти данные копируются в поле \fIdata\fP структуры \fIio_event\fP при завершении ввода\-вывода (смотрите \fBio_getevents\fP(2)). .TP \fIaio_key\fP Внутреннее поле, используется ядром. Не изменяйте это поле после вызова \fBio_submit\fP(). .TP \fIaio_rw_flags\fP Флаги чтения\-записи, передаваемые со структурой. Возможные значения: .RS .TP \fBRWF_APPEND\fP (начиная с Linux 4.16) .\" commit e1fc742e14e01d84d9693c4aca4ab23da65811fb Добавить данный в конец файла. Смотрите описание флага с таким же именем в \fBpwritev2\fP(2), а также описание \fBO_APPEND\fP в \fBopen\fP(2). Поле \fIaio_offset\fP игнорируется. Файловое смещение не изменяется. .TP \fBRWF_DSYNC\fP (начиная с Linux 4.13) Операция записи завершается согласно требованиям целостности данных синхронизированного ввода\-вывода. Смотрите описание флага с тем же именем в \fBpwritev2\fP(2), а также описание \fBO_DSYNC\fP в \fBopen\fP(2). .TP \fBRWF_HIPRI\fP (начиная с Linux 4.13) Запрос с высоким приоритетом; опросить, если возможно .TP \fBRWF_NOWAIT\fP (начиная с Linux 4.14) Не ждать, если ввод\-вывод блокирует операции, такие как выделение файловых блоков, очистка грязной страницы, блокировку мьютексов или вызывает перегрузку блочного устройства внутри ядра. Если имеется что\-то из этого, то управляющий блок возвращается немедленно со значением \fB\-EAGAIN\fP в поле \fIres\fP структуры \fIio_event\fP (смотрите \fBio_getevents\fP(2)). .TP \fBRWF_SYNC\fP (начиная с Linux 4.13) Операция записи завершается согласно требованиям целостности файла синхронизированного ввода\-вывода. Смотрите описание флага с тем же именем в \fBpwritev2\fP(2), а также описание \fBO_SYNC\fP в \fBopen\fP(2). .RE .TP \fIaio_lio_opcode\fP Тип ввода\-вывода, выполняемый структурой \fIiocb\fP. Возможные значения, определены перечислением в \fIlinux/aio_abi.h\fP: .IP .in +4n .EX 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, }; .EE .in .TP \fIaio_reqprio\fP Определяет приоритет запросов. .TP \fIaio_fildes\fP Файловый дескриптор, над которым будут выполняться операции ввода\-вывода. .TP \fIaio_buf\fP Буфер, используемый для пересылки данных при операции чтения или записи. .TP \fIaio_nbytes\fP Размер буфера, на который указывает \fIaio_buf\fP. .TP \fIaio_offset\fP Файловое смещение, начиная с которого будут выполняться операции ввода\-вывода. .TP \fIaio_flags\fP Набор флагов, связанный со структурой \fIiocb\fP. Допускаемые значения: .RS .TP \fBIOCB_FLAG_RESFD\fP Управление асинхронным вводом\-выводом должно сигнализировать файловому дескриптору в \fIaio_resfd\fP после выполнения. .TP \fBIOCB_FLAG_IOPRIO\fP (начиная с Linux 4.18) .\" commit d9a08a9e616beeccdbd0e7262b7225ffdfa49e92 Считать поле \fIaio_reqprio\fP как \fBIOPRIO_VALUE\fP, определённое в \fIlinux/ioprio.h\fP. .RE .TP \fIaio_resfd\fP Файловый дескриптор для сигнализации завершения асинхронного ввода\-вывода. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" On success, \fBio_submit\fP() returns the number of \fIiocb\fPs submitted (which may be less than \fInr\fP, or 0 if \fInr\fP is zero). For the failure return, see VERSIONS. .SH ОШИБКИ .TP \fBEAGAIN\fP Недостаточно ресурсов для постановки в очередь \fIiocb\fP. .TP \fBEBADF\fP Некорректный файловый дескриптор, указанный в первом \fIiocb\fP. .TP \fBEFAULT\fP Одна из структур данных указывает на некорректные данные. .TP \fBEINVAL\fP Некорректен контекст AIO, указанный \fIctx_id\fP. Значение \fInr\fP меньше 0. Значение \fIiocb\fP в \fI*iocbpp[0]\fP некорректно инициализировано, указанная операция некорректна для файлового дескриптора в \fIiocb\fP или некорректное значение в поле \fIaio_reqprio\fP. .TP \fBENOSYS\fP Вызов \fBio_submit\fP() не реализован для этой архитектуры. .TP \fBEPERM\fP Поле \fIaio_reqprio\fP содержит класс \fBIOPRIO_CLASS_RT\fP, но представляющий контекст не имеет мандата \fBCAP_SYS_ADMIN\fP. .SH ВЕРСИИ .\" http://git.fedorahosted.org/git/?p=libaio.git glibc does not provide a wrapper for this system call. You could invoke it using \fBsyscall\fP(2). But instead, you probably want to use the \fBio_submit\fP() wrapper function provided by \fIlibaio\fP. .P .\" But glibc is confused, since uses 'io_context_t' to declare .\" the system call. Заметим, что в обёрточной функции \fIlibaio\fP используется другой тип (\fIio_context_t\fP) аргумента \fIctx_id\fP. Также заметим, что \fIlibaio\fP не следует соглашениям обычной библиотеки C для возврата ошибок: при ошибке она возвращает отрицательный номер ошибки (из списка в разделе ОШИБКИ). Если системный вызов вызывается с помощью \fBsyscall\fP(2), то возвращаемое значение следует обычным соглашениям для указания на ошибку: возвращается \-1 и в \fIerrno\fP записывается (положительное) значение возникшей ошибки. .SH СТАНДАРТЫ Linux. .SH ИСТОРИЯ Linux 2.5. .SH "СМОТРИТЕ ТАКЖЕ" \fBio_cancel\fP(2), \fBio_destroy\fP(2), \fBio_getevents\fP(2), \fBio_setup\fP(2), \fBaio\fP(7) .\" .SH AUTHOR .\" Kent Yoder. .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал Azamat Hackimov , Dmitriy S. Seregin , Yuri Kozlov и Иван Павлов . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику по его адресу электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .