uexblock-Kernel-Service
Zweck
Macht den derzeit aktiven Kernel-Thread nicht ausführbar, wenn er von einer Ausnahmebehandlungsroutine im Benutzermodus aufgerufen wird.
Syntax
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/except.h> tid_t *tid;
Parameter
| Element | Beschreibung |
|---|---|
| TID | Gibt die Thread-ID des derzeit aktiven Kernel-Threads an, der in den Wartestatus versetzt wird |
Beschreibung
Der Kernel-Dienst uexblock versetzt den durch den Parameter tid angegebenen aktiven Kernel-Thread in einen Wartezustand, bis der Kernel-Dienst uexclear verwendet wird, um den Thread wieder lauffähig zu machen. Wenn der uexblock-Kernel-Dienst aus der Prozessumgebung aufgerufen wird, muss der tid-Parameter den aktuell aktiven Thread angeben; andernfalls stürzt das System mit einer Kernel-Panik ab.
Der Kernel-Dienst uexblock kann verwendet werden, um den Zugriff von User-Mode-Threads auf eine gemeinsam genutzte, seriell nutzbare Ressource zu steuern (lazily control). Mehrere Threads können eine seriell verwendete Ressource verwenden, aber nur jeweils einen Prozess. Wenn ein Thread versucht, auf die Ressource zuzugreifen, aber nicht darauf zugreifen kann, kann eine Ausnahme im Benutzermodus konfiguriert werden. Damit wird die Kontrolle an einen Ausnahmebehandler übergeben, der vom uexadd-Kernel-Dienst registriert wird. Dieser Exception-Handler kann dann den Thread mit Hilfe des Kernel-Dienstes uexblock blockieren, bis die Ressource wieder verfügbar ist. Zu diesem Zeitpunkt kann der Kernel-Dienst uexclear verwendet werden, um den blockierten Thread wieder lauffähig zu machen.
Ausführungsumgebung
Der Kernel-Dienst uexblock kann entweder aus der Prozess- oder der Interrupt-Umgebung aufgerufen werden.
Rückgabewerte
Der uexblock-Dienst hat keine Rückgabewerte.