AIO_SUSPEND |
Suspendre la synchronisation d'entrée/sortie |
---|---|
C pour Unix | aio.h |
Syntaxe
int aio_suspend(const struct aiocb * const list[], int nent, const struct timespec *timeout) |
Paramètres
Nom | Description |
---|---|
aiocb | Ce paramètre permet d'indiquer une liste de bloc de contrôle de synchronisation d'entrée/sortie |
nent | Ce paramètre permet d'indiquer le nombre d'item de bloc de contrôle dans la liste. |
timeout | Ce paramètre permet d'indiquer le temps jusqu'à laquelle l'opération est suspendu. |
Retour
Si la fonction aio_suspend() renvoie une valeur après la fin d'une ou plusieurs opérations d'entrée/sortie désynchronisés, elle renvoie zéro. Sinon, elle renvoie la valeur -1 et définit errno pour indiquer l'erreur.
L'application peut déterminer quelles entrées/sorties désynchronisés sont terminées en analysant l'erreur associée et en renvoyant l'état à l'aide de aio_error() et aio_return(), respectivement.
Description
Cette fonction permet d'attendre après une requête d'une opération dans la synchronisation d'entrée/sortie en temps réel.
Remarques
- La fonction aio_suspend() suspend le processus léger appelant jusqu'à ce qu'au moins une des opérations d'entrée/sortie désynchronisés référencées par le paramètre list soit terminée, qu'un signal interrompe la fonction ou, si timeout n'est pas NULL, que l'intervalle de temps spécifié par timeout soit écoulé. Si l'une des structures aiocb de la liste correspond à des opérations d'entrée/sortie désynchronisés terminées (c'est-à-dire si l'état d'erreur de l'opération n'est pas égal à [EINPROGRESS]) au moment de l'appel, la fonction retourne la commande sans suspendre le processus léger appelant. Le paramètre list est un tableau de pointeurs vers des blocs de contrôle d'entrée/sortie désynchronisés. Le paramètre nent indique le nombre d'éléments du tableau. Chaque structure aiocb pointée a été utilisée pour initier une requête d'entrée/sortie désynchronisée via aio_read(), aio_write() ou lio_listio(). Ce tableau peut contenir des pointeurs NULL, qui sont ignorés. Si ce tableau contient des pointeurs faisant référence à des structures aiocb non utilisées lors de la soumission d'entrée/sortie désynchronisés, l'effet est indéfini.
- Si l'intervalle de temps indiqué dans la structure timespec pointée par timeout s'écoule avant la fin des opérations d'entrée/sortie référencées par list, aio_suspend() renvoie une erreur. Si l'option Monotonic Clock est prise en charge, l'horloge utilisée pour mesurer cet intervalle de temps est l'horloge CLOCK_MONOTONIC.
Erreurs
La fonction aio_suspend() échouera si :
Constante | Description |
---|---|
EAGAIN | Aucune entrée/sortie désynchronisée indiquée dans la liste référencée par list n'a été exécutée dans l'intervalle de temps indiqué par timeout. |
EINTR | Un signal a interrompu la fonction aio_suspend(). Notez que, chaque opération d'entrée/sortie désynchronisée pouvant éventuellement déclencher un signal à sa fin, cette erreur peut être due à la fin d'une (ou plusieurs) des opérations d'entrée/sortie attendues. |
Dernière mise à jour : Mardi, le 28 juillet 2015