io_getevents - Lire les événements d'E/S asynchrones de la file
des événements terminés
Bibliothèque C standard (
libc,
-lc)
#include <linux/aio_abi.h> /* Définition des types *io_* */
#include <sys/syscall.h> /* Définition des constantes SYS_* */
#include <unistd.h>
int syscall(SYS_io_getevents, aio_context_t ctx_id,
long min_nr, long nr, struct io_event *events,
struct timespec *timeout);
Note : la glibc ne fournit pas d'enveloppe autour de
io_getevents(), nécessitant l'utilisation de
syscall(2).
Remarque : cette page décrit l'interface de l'appel
système Linux brut. La fonction enveloppe fournie par
libaio
utilise un type différent pour le paramètre
ctx_id. Voir
les NOTES.
L'appel système
io_getevents() essaye de lire de
min_nr
à
nr événements de la file des
événements terminés du contexte d'entrées-sorties
asynchrones
ctx_id.
L'argument
timeout indique une durée maximale d'attente pour les
événements et est indiqué comme une limite de temps
relative dans une structure
timespec(3).
La durée indiquée sera arrondie à la granularité
supérieure de l'horloge système et elle a la garantie de ne pas
expirer plus tôt.
Indiquer
timeout comme NULL signifie bloquer indéfiniment
jusqu'à ce qu'au moins
min_nr événements aient
été obtenus.
io_getevents() renvoie le nombre d'événements lus,
zéro s'il n'y en a aucun, et moins de
min_nr si le délai
timeout a expiré. En cas d'interruption par un gestionnaire de
signaux, la valeur renvoyée pourrait être non nulle et
inférieure à
min_nr.
Pour les valeurs de retour en cas d'échec, consultez la section NOTES.
- EFAULT
-
events ou timeout est un pointeur
invalide.
- EINTR
- L'appel a été interrompu par un gestionnaire
de signal ; consultez signal(7).
- EINVAL
-
ctx_id est invalide. min_nr ou nr est
incorrect.
- ENOSYS
-
io_getevents() n'est pas implémenté
sur cette architecture.
Les appels système d'entrées-sorties asynchrones sont apparus dans
Linux 2.5.
io_getevents() est spécifique à Linux et ne doit pas
être utilisé dans des programmes destinés à
être portables.
Vous voudrez sans doute utiliser la fonction enveloppe
io_getevents()
fournie par
libaio.
Remarquez que la fonction d'enveloppe
libaio utilise un autre type (
io_context_t) pour l'argument
ctx_id. Remarquez également
que l'enveloppe
libaio ne suit pas les conventions classiques de la
bibliothèque C concernant l'indication des erreurs : en
cas d'erreur, la fonction renvoie un nombre négatif (la valeur
négative de l'une des valeurs indiquées dans la section
ERREURS). Si l'appel système est invoqué avec
syscall(2), la valeur de renvoi suit les conventions classiques pour
indiquer l'erreur :
-1, avec
errno défini
à une valeur (positive) de l'erreur.
Un
ctx_id invalide peut provoquer une erreur de segmentation au lieu de
générer une erreur
EINVAL.
io_cancel(2),
io_destroy(2),
io_setup(2),
io_submit(2),
timespec(3),
aio(7),
time(7)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Jean-Philippe MENGUAL <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]