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.
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.