LIO_LISTIO(3)

NOM
lio_listio - Initier une liste de requêtes d'E/S

SYNOPSIS
#include <aio.h>
int lio_listio(int mode, struct aiocb *const aiocb_list[],
               int nitems, struct sigevent *sevp);
Effectuez l'édition des liens avec l'option -lrt.

DESCRIPTION
La fonction lio_listio initie la liste des opérations E/S décrite par le tableau aiocb_list. Le champ mode peut prendre une des valeurs suivantes :

LIO_WAIT
    L'appel est bloquant tant que toutes les opérations ne sont pas complétées. L'argument sevp est ignoré.

LIO_NOWAIT
    Les opérations d'E/S sont mises en file d'attente pour traitement et l'appel renvoie immédiatement. Lorsque les opérations d'E/S se terminent, une notification asynchrone est émise, comme spécifié dans le paramètre sevp ; consultez sigevent(7) pour plus de détails. Si sevp est NULL, aucune notification asynchrone n'est émise.

Le paramètre aiocb_list est un tableau de pointeurs vers des structures aiocb qui décrivent les opérations d'E/S. Ces opérations sont exécutées dans un ordre non spécifié. Le paramètre nitems spécifie la taille du tableau aiocb_list. Les pointeurs NULL dans aiocb_list sont ignorés. Dans chaque bloc de contrôle d'aiocb_list, le champ aio_lio_opcode spécifie l'opération d'E/S à initier comme ci-dessous :

LIO_READ
    Initier une opération de lecture. L'opération est mise en file d'attente comme lors d'un appel à aio_read(3) spécifiant ce bloc de contrôle.

LIO_WRITE
    Initier une opération d'écriture. L'opération est mise en file d'attente comme pour un appel à aio_write(3) spécifiant ce bloc de contrôle.

LIO_NOP
    Ignorer ce bloc de contrôle.

Les champs restants dans chaque bloc de contrôle ont le même sens que pour aio_read(3) et aio_write(3). Les champs aio_sigevent de chaque bloc de contrôle peuvent être utilisés pour spécifier des notifications pour chaque opération d'E/S (consultez sigevent(7)).

VALEUR RENVOYÉE
Si mode vaut LIO_NOWAIT, lio_listio() renvoie 0 si toutes les opérations d'E/S ont été mises avec succès en file d'attente. Sinon, elle renvoie -1 et définit errno en conséquence. Si mode vaut LIO_WAIT, lio_listio() renvoie 0 lorsque toutes les opérations d'E/S se sont terminées avec succès. Sinon, elle renvoie -1 et définit errno en conséquence. La valeur de retour de lio_listio() fournit seulement des informations à propos de l'appel lui-même, et non à propos de chaque opération d'E/S. Une ou plusieurs opérations peuvent échouer, mais cela n'empêche pas les autres opérations de se terminer. L'état de chaque opération d'E/S de aiocb_list peut être obtenu avec aio_error(3). Lorsqu'une opération s'est terminée, son code de retour peut être obtenu avec aio_return(3). Chaque opération d'E/S peut échouer pour les raisons décrites dans aio_read(3) et aio_write(3).

ERREURS
La fonction lio_listio() peut échouer pour les raisons suivantes :

EAGAIN
    Ressources insuffisantes.

EAGAIN
    Le nombre d'opérations d'E/S spécifié dans nitems dépasse la valeur limite AIO_MAX.

EINVAL
    mode est non valable, ou nitems dépasse la valeur limite AIO_LISTIO_MAX.

EINTR
    mode valait LIO_WAIT et un signal a été attrapé avant que toutes les opérations d'E/S ne soient terminées (il peut s'agir de l'un des signaux utilisés pour les notifications asynchrones de fin d'opération d'E/S).

EIO Une ou plusieurs opérations spécifiées dans aiocb_list ont échoué. L'application peut vérifier l'état de chaque opération avec aio_return(3).

Si lio_listio() échoue avec l'erreur EAGAIN, EINTR ou EIO, alors certaines des opérations définies dans aiocb_list peuvent avoir été initiées. Si lio_listio() échoue pour tout autre raison, alors aucune des opérations d'E/S n'aura été initiée.

VERSIONS
La fonction lio_listio() est disponible depuis la glibc 2.1.

CONFORMITÉ
POSIX.1-2001, POSIX.1-2008.

NOTES
C'est une bonne idée de mettre à zéro le bloc de contrôle avant de l'utiliser. Les blocs de contrôle ne doivent pas être changés pendant que des opérations d'E/S sont en cours. Les tampons qui seront lus ou écrits ne doivent pas être accédés durant les opérations ou des résultats indéterminés peuvent se produire. Les zones mémoires utilisées doivent rester valables. Des opérations d'E/S simultanées spécifiant la même structure aiocb produisent des résultats indéfinis.

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

COLOPHON
Cette page fait partie de la publication 3.40 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <URL:http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <URL:http://perkamon.alioth.debian.org/>.

Veuillez signaler toute erreur de traduction en écrivant à <perkamon-fr@traduc.org>.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».