lio_listio(3) Library Functions Manual lio_listio(3)

lio_listio - inițiază o listă de cereri de In/Ieș

Biblioteca de timp real (librt, -lrt)

#include <aio.h>
int lio_listio(int mode,
               struct aiocb *restrict const aiocb_list[restrict],
               int nitems, struct sigevent *restrict sevp);

Funcția lio_listio() inițiază lista de operații de intrare/ieșire descrise de matricea aiocb_list.

Operația mode are una dintre următoarele valori:

Apelul se blochează până când toate operațiile sunt finalizate. Argumentul sevp este ignorat.
Operațiile de In/Ieș sunt puse în coadă pentru procesare, iar apelul returnează imediat. Atunci când toate operațiile de intrare/ieșire se finalizează, are loc o notificare asincronă, după cum se specifică prin argumentul sevp; a se vedea sigevent(3type) pentru detalii. În cazul în care sevp este NULL, nu are loc nicio notificare asincronă.

Argumentul aiocb_list este o matrice de indicatori la structurile aiocb care descriu operațiile de In/Ieș. Aceste operații sunt executate într-o ordine nespecificată. Argumentul nitems specifică dimensiunea matricei aiocb_list. Se ignoră indicatoarele nule din aiocb_list.

În fiecare bloc de control din aiocb_list, câmpul aio_lio_opcode specifică operația de In/Ieș care urmează să fie inițiată, după cum urmează:

Inițiază o operație de citire. Operația este pusă în coada de așteptare ca pentru un apel la aio_read(3) care specifică acest bloc de control.
Inițiază o operație de scriere. Operația este pusă în coada de așteptare ca pentru un apel la aio_write(3) care specifică acest bloc de control.
Ignoră acest bloc de control.

Câmpurile rămase în fiecare bloc de control au aceleași semnificații ca și pentru aio_read(3) și aio_write(3). Câmpurile aio_sigevent din fiecare bloc de control pot fi utilizate pentru a specifica notificări pentru operațiile de In/Ieș individuale (a se vedea sigevent(7)).

Dacă mode este LIO_NOWAIT, lio_listio() returnează 0 dacă toate operațiile de In/Ieș sunt puse în coadă cu succes. În caz contrar, se returnează -1, iar errno este configurată pentru a indica eroarea.

Dacă mode este LIO_WAIT, lio_listio() returnează 0 atunci când toate operațiile de In/Ieș s-au finalizat cu succes. În caz contrar, se returnează -1, iar errno este configurată pentru a indica eroarea.

Starea de returnare din lio_listio() oferă informații numai despre apelul în sine, nu și despre operațiile individuale de In/Ieș. Una sau mai multe dintre operațiile de In/Ieș pot eșua, dar acest lucru nu împiedică finalizarea altor operații. Starea operațiilor individuale de In/Ieș din aiocb_list poate fi determinată cu ajutorul aio_error(3). Atunci când o operație s-a încheiat, starea de returnare a acesteia poate fi obținută folosind aio_return(3). Operațiile individuale de In/Ieș pot eșua din motivele descrise în aio_read(3) și aio_write(3).

Funcția lio_listio() poate eșua din următoarele motive:

Resurse insuficiente.
Numărul de operații de In/Ieș specificat de nitems ar duce la depășirea limitei AIO_MAX.
mode a fost LIO_WAIT și un semnal a fost captat înainte ca toate operațiunile de In/Ieș să se încheie; a se vedea signal(7); (acesta poate fi chiar unul dintre semnalele utilizate pentru notificarea asincronă a finalizării In/Ieș).
mode nu este valid sau nitems depășește limita AIO_LISTIO_MAX.
Una sau mai multe dintre operațiile specificate de aiocb_list au eșuat. Aplicația poate verifica starea fiecărei operații utilizând aio_return(3).

Dacă lio_listio() eșuează cu eroarea EAGAIN, EINTR sau EIO, atunci este posibil ca unele dintre operațiile din aiocb_list să fi fost inițiate. Dacă lio_listio() eșuează din orice alt motiv, atunci niciuna dintre operațiile In/Ieș nu a fost inițiată.

Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

Interfață Atribut Valoare
lio_listio() Siguranța firelor MT-Safe

POSIX.1-2008.

glibc 2.1. POSIX.1-2001.

Este o idee bună să se pună la zero blocurile de control înainte de utilizare. Blocurile de control nu trebuie să fie modificate în timp ce operațiile de In/Ieș sunt în curs de desfășurare. Zonele tampon în care se citește sau din care se scrie nu trebuie accesate în timpul operațiilor, altfel pot apărea rezultate nedefinite. Zonele de memorie implicate trebuie să rămână valide.

Operațiile de In/Ieș simultane care specifică aceeași structură aiocb produc rezultate nedefinite.

aio_cancel(3), aio_error(3), aio_fsync(3), aio_return(3), aio_suspend(3), aio_write(3), aio(7)

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

31 octombrie 2023 Pagini de manual de Linux 6.06