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.65 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> ».