Service de noyau e_sleep_thread

Objectif

Force l'unité d'exécution du noyau appelant à attendre l'occurrence d'un événement partagé.

Syntaxe

#include <sys/sleep.h>
int e_sleep_thread ( event_word,  lock_word,  flags)
tid_t *event_word;
void *lock_word;
int flags;

Paramètres

Article Descriptif
Mot-événement Indique le mot d'événement partagé. Le noyau utilise le paramètre Mot-événement comme point d'ancrage dans la liste des unités d'exécution en attente de cet événement partagé.
Mot clé lock_word Spécifie un verrou simple ou complexe à déverrouiller.
Indicateurs Indique les options de verrouillage et de traitement des signaux.

Descriptif

Le service de noyau Unité_sleep_thread force l'unité d'exécution à attendre qu'un événement partagé se produise. Le noyau place l'unité d'exécution appelante sur la liste d'événements ancrée par le paramètre Mot-événement . Cette liste est utilisée par les services de noyau _wakeup, E_wakeup_oneet E_wakeup_w_result pour réafficher certaines ou toutes les unités d'exécution en attente de l'événement.

Un verrou peut être spécifié ; il sera déverrouillé lorsque le service de noyau est entré, juste avant les blocs d'unités d'exécution. Ce verrou peut être simple ou complexe, comme spécifié par le paramètre Indicateurs . Lorsque le service de noyau quitte, le verrou est racheté.

Indicateurs

Le paramètre Indicateurs indique les options du service de noyau. Plusieurs drapeaux peuvent être combinés avec l'opérateur OR. Elles sont décrites ci-dessous.

Les quatre indicateurs suivants indiquent le type de verrouillage. Si le paramètre Mot clé lock_word n'est pas NULL, exactement l'un de ces indicateurs doit être utilisé.

Indicateur Descriptif
GESTIONNAIRE DE VERROUILLAGE Mot clé lock_word indique un verrou simple protégeant une section critique d'interruption ou d'interruption d'une unité d'exécution.
LOCK_SIMPLE Mot clé lock_word indique un verrou simple protégeant une section critique d'unité d'exécution.
CLASSE_VERROUILLAGE Mot clé lock_word indique un verrou complexe en mode lecture partagée.
ÉCRIT_VERROUILLAGE Mot clé lock_word indique un verrou complexe en mode d'écriture exclusive.

L'indicateur suivant indique le traitement du signal. Par défaut, alors que l'unité d'exécution dort, les signaux sont mis en attente jusqu'à ce qu'il se réveille.

Article Descriptif
INTERRUPTIBLE Les signaux doivent être vérifiés pendant que l'unité d'exécution du noyau est en train de dormir. Si un signal doit être envoyé, l'unité d'exécution est réveillée.

Valeurs renvoyées

Le service de noyau Unité_sleep_thread renvoie une valeur indiquant comment l'unité d'exécution du noyau a été réveillée. Les valeurs suivantes sont définies:

Article Descriptif
THREAD_RÉVEIL Indique un réveil normal ; l'événement s'est produit.
THREAD_INTERROMPU Indique une interruption par un signal. Cette valeur peut être renvoyée même si l'indicateur INTERRUPTIBLE n'est pas défini car il peut également être généré par les services de noyau E_clear_wait ou E_wakeup_w_result .
THREAD_TIMED_OUT Indique un délai d'expiration. Unité_sleep_thread n'a pas de délai d'attente. Toutefois, les services de noyau E_clear_wait ou E_wakeup_w_result peuvent générer cette valeur de retour.
TRAITE_AUTRE Déplace les codes système prédéfinis de ceux qui doivent être définis au niveau du sous-système. Le sous-système doit définir ses propres valeurs supérieures ou égales à cette valeur.

Environnement d'exécution

Le service de noyau Unité_sleep_thread peut être appelé à partir de l'environnement Processus uniquement.