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 toutes 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.
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.44 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
<
http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande «
man -L C
<section> <page_de_man> ».