e_wakeup, e_wakeup_one oder e_wakeup_w_result Kernel-Service

Zweck

Benachrichtigt Kernel-Threads, die auf ein gemeinsam genutztes Ereignis warten, über das Vorkommen des Ereignisses.

Syntax

#include <sys/types.h>
#include <sys/errno.h> 
#include <sys/sleep.h>
void e_wakeup ( event_word)
tid_t *event_word;
void e_wakeup_one ( event_word)
tid_t *event_word;
void e_wakeup_w_result ( event_word,  result)
tid_t *event_word;
int result;

Parameter

Element Beschreibung
Ereigniswort Gibt den gemeinsam genutzten Ereignisbezeichner an Der Kernel verwendet den Parameter Ereigniswort als Anker für die Liste der Threads, die auf dieses gemeinsam genutzte Ereignis warten.
Ergebnis Gibt den Wert an, der an den erwachten Kernel-Thread zurückgegeben wird. Die folgenden Werte können verwendet werden:
THREAD_ERWACHT
Zeigt eine normale Aktivierung an. Dies ist der Wert, der automatisch von den Kernel-Services E_Wakeup oder e_wakeup_one generiert wird.
THREAD_UNTERBROCHEN
Zeigt einen unterbrochenen Ruhemodus an Dieser Wert wird normalerweise durch eine Signalübermittlung generiert, wenn das Flag UNTERBRECHBAR gesetzt ist.
Zeitlimit für THREAD_TIMED_OUT
Gibt einen Zeitlimitverfall an.
THREAD_ANDERE
Beschreibt die vordefinierten Systemcodes von denen, die auf Subsystemebene definiert werden müssen. Das Subsystem muss eigene Werte definieren, die größer-gleich diesem Wert sind.

Beschreibung

Die Kernel-Services E_Wakeup und e_wakeup_w_ergebnis aktivieren alle Kernel-Threads, die in der Ereignisliste im Ruhemodus sind, die durch den Parameter Ereigniswort verankert ist. Der e_wakeup_one -Kernel-Service aktiviert nur den am meisten bevorzugten Thread, der in der durch den Parameter Ereigniswort verankerten Ereignisliste in den Ruhemodus versetzt wird.

Wenn Threads aktiviert werden, kehren sie von einem Aufruf an den Kernel-Service Blockthread oder _Sleep_Thread zurück. Der Rückgabewert hängt von dem Kernel-Service ab, der aufgerufen wird, um die Threads zu aktivieren (den Aktivierungskernel-Service):

  • THREAD_ERWACHT wird zurückgegeben, wenn der Kernel-Service E_Wakeup oder e_wakeup_one aufgerufen wird.
  • Der Wert des Parameters Ergebnis wird zurückgegeben, wenn der e_wakeup_w_ergebnis -Kernelservice aufgerufen wird.

Wenn ein Signal an einen Thread übergeben wird, der von einem der Aktivierungskernel-Services aktiviert wird, und wenn der Thread das Flag UNTERBRECHBAR angegeben hat, hat die Signalbereitstellung Vorrang. Der Thread wird unabhängig vom aufgerufenen Aktivierungskernel-Service mit dem Rückgabewert THREAD_UNTERBROCHENaktiviert.

Die Kernel-Services E_Wakeup und e_wakeup_w_ergebnis setzen den Parameter Ereigniswort auf EREIGNIS_NULL.

Die Kernel-Services E_Wakeup, e_wakeup_oneund e_wakeup_w_ergebnis haben keine Rückgabewerte.

Ausführungsumgebung

Die Kernel-Services E_Wakeup, e_wakeup_oneund e_wakeup_w_ergebnis können entweder aus der Prozess -Umgebung oder aus der Unterbrechung -Umgebung aufgerufen werden.

Wenn der Parameter Ereigniswort von einem Interrupt-Handler aufgerufen wird, muss er sich im fixierten Speicher befinden.