lio_listio(3)

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

BIBLIOTECA
Biblioteca de timp real (librt, -lrt)

SINOPSIS
#include <aio.h>

int lio_listio(int n;
               int mode,
               struct aiocb *restrict const aiocb_list[restrict n],
               int n, struct sigevent *restrict sevp);

DESCRIERE
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:

LIO_WAIT
    Apelul se blochează până când toate operațiile sunt finalizate. Argumentul sevp este ignorat.

LIO_NOWAIT
    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 n 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ă:

LIO_READ
    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.

LIO_WRITE
    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.

LIO_NOP
    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)).

VALOAREA RETURNATĂ
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).

ERORI-IEȘIRE
Funcția lio_listio() poate eșua din următoarele motive:

EAGAIN
    Resurse insuficiente.

EAGAIN
    Numărul de operații de In/Ieș specificat de n ar duce la depășirea limitei AIO_MAX.

EINTR
    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ș).

EINVAL
    mode nu este valid sau n depășește limita AIO_LISTIO_MAX.

EIO 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ă.

ATRIBUTE
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

STANDARDE
POSIX.1-2008.

ISTORIC
glibc 2.1. POSIX.1-2001.

NOTE
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.

CONSULTAȚI ȘI
aio_cancel(3), aio_error(3), aio_fsync(3), aio_return(3), aio_suspend(3), aio_write(3), aio(7)

TRADUCERE
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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.