eeh_broadcast-Kernel-Service

Zweck

Dieser Service wird für Einheitentreiber bereitgestellt, um Aktivitäten während eines EEH-Ereignisses zu koordinieren.

Syntax

void eeh_broadcast(handle, message)
eeh_handle_t    handle;
unsigned long long message;

Parameter

Element Beschreibung
Handle EEH-Kennung aus eeh_init oder eeh_init_multifunc
Nachricht Benutzerdefinierte oder kerneldefinierte Nachricht

Beschreibung

Da Einzelfunktionstreiber keine Koordination benötigen, ist dieser Service nur für Multifunktionstreiber gedacht. Wenn ein Einzelfunktionstreiber ihn aufruft, handelt es sich um einen NOP. Es gibt zwei Arten von Nachrichten, die zwischen den Treibern gesendet werden können: kerneldefinierte Nachrichten (z. B. EEH_DD_SUSPEND und EEH_DD_DEAD) und benutzerdefinierte Nachrichten. Hilfe zum Definieren von Benutzernachrichten finden Sie unter sys/eeh.h . Kernelnachrichten haben eine höhere Priorität als Benutzernachrichten. Wenn also Benutzernachrichten und Kernelnachrichten anstehen, werden die Kernelnachrichten vor den Benutzernachrichten gesendet.

Anmerkung: Einheitentreiber sollten nur ihre eigenen Nachrichten (d. h. die benutzerdefinierte Nachricht) und nicht die Kernelnachrichten rundsenden.

In den Kernelnachrichten hat EEH_DD_DEAD die höchste Priorität. Mehrere Nachrichten derselben Art können abhängig vom relativen Timing verbunden werden oder nicht. Nachrichten werden durch Aufrufen der Callback-Routinen gesendet. Die Callback-Routinen werden sequenziell, aber nicht in einer bestimmten Reihenfolge aufgerufen, außer dass für den letzten Treiber, der eine Nachricht empfängt, das Flag EEH_MASTER gesetzt ist, um anzuzeigen, dass alle anderen Treiber die Verarbeitung der Nachricht beendet haben. Es wird jeweils nur eine Nachricht rundgesendet, d. h., alle registrierten Callback-Routinen werden nacheinander mit derselben Nachricht aufgerufen, bevor mit der nächsten Nachricht fortgefahren wird. Schließlich werden sie asynchron mit der Priorität INTIODONE aufgerufen. Da sie asynchron übertragen werden, darf ein Einheitentreiber nicht von einem bestimmten Zeitlimit ausgehen, innerhalb dessen die Nachricht eintrifft.

Das Makro Eeh_Broadcast(Kennung, Nachricht) wird bereitgestellt, damit Einheitentreiber diesen Service aufrufen können.

Ausführungsumgebung

Dieser Kernel-Service kann aus der Prozess-oder Interrupt-Umgebung aufgerufen werden.

Rückgabewerte

Dieser Service hat keinen Rückgabewert.