La fonction
sleep_on
fournit un moyen de synchroniser des processus avec des gestionnaires d'interruptions. Le paramètre
condition
est un pointeur sur un pointeur sur une varable de type opaque wait_queue.
La variable condition doit être initialisée à zéro puis passée par pointeur à la fonction sleep_on.
Le schéma élémentaire est le suivant :
struct wait_queue*con = 0;
[...]
sleep_on(&con);
Tant qu'un processus n'est pas activé, il est totalement interruptible, quel que soit l'état du processeur quand on entre dans la fonction. L'état du processeur est restauré lors du réveil.
Si un pointeur NULL (0) est passé à
sleep_on,
celle-ci rend la main immédiatement, sans suspendre le processus. C'est une opération qui ne fait rien.
VALEUR RENVOYEÉ
La fonction
sleep_on
ne rend la main que lorsqu'elle est explicitement réveillée/activée.
DISPONIBILITÉ
Linux 1+
VOIR AUSSI
wake_up(9)
/usr/src/linux/kernel/sched.c
AUTEUR
Stephen Williams <steve@icarus.com>
TRADUCTION
Thierry Vignaud <tvignaud@mandrakesoft.com>, 1999
BOGUES
Un appel à
sleep_on(0)
peut sembler être un moyen intéressant pour faire un test et autoriser momentanément les interruptions mais ce n'est pas ce qui
se passera.
La fonction
sleep_on
ne peut pas être appellée dans les gestionnaires d'interruption.
Cette fonction n'est pas atomique ([Ndt : donc non réentrante) par rapport aux tests que le pilote peut faire, aussi le code qui
exécute la fonction
sleep_on
devrait être protégé contre les interruptions. Ne pas le faire conduit à des race conditions.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYEÉ
-
- DISPONIBILITÉ
-
- VOIR AUSSI
-
- AUTEUR
-
- TRADUCTION
-
- BOGUES
-
This document was created by
man2html,
using the manual pages.
Time: 21:33:13 GMT, July 10, 2005