eeh_broadcast 内核服务
用途
为设备驱动程序提供此服务以在 EEH 事件期间协调活动。
语法
void eeh_broadcast(handle, message)
eeh_handle_t handle;
unsigned long long message;
参数
| 项 | 描述 |
|---|---|
| 句柄 (handle) | 从 eeh_init 或 eeh_init_multifunc 获取的 EEH 句柄 |
| 消息 | 用户或内核定义的消息 |
描述
由于单功能驱动程序不需要进行协调,因此此服务仅适用于多功能驱动程序。 如果单函数驱动程序对其进行调用,那么它是 NOP。 在驱动程序之间可以发送两种类型的消息: 内核定义的消息 (例如 EEH_DD_SUSPEND 和 EEH_DD_DEAD) 和用户定义的消息。 请参阅 sys/eeh.h 以获取有关如何定义用户消息的帮助。 内核消息具有比用户消息更高的优先级。 因此,如果用户消息和内核消息都处于暂挂状态,那么内核消息将在用户消息之前发出。
注: 设备驱动程序应该只广播它们自己的消息 (即用户定义的消息) ,而不广播内核消息。
在内核消息中, EEH_DD_DEAD 具有最高优先级。 同一类型的多条消息可能合并,也可能不合并,具体取决于相关的计时。 通过调用回调例程来发送消息。 回调例程将按顺序调用,但不会按任何特定顺序调用,但接收消息的最后一个驱动程序将设置 EEH_MASTER 标志,以指示所有其他驱动程序已完成处理消息。 一次只广播一条消息-即,在继续下一条消息之前,所有已注册的回调例程都将使用相同的消息进行顺序调用。 最后,它们以 INTIODONE 优先级异步调用。 因为它们是异步广播的,所以设备驱动程序不得在特定超时时假定消息将到达。
为设备驱动程序提供了宏 EEH_CNEAST(处理/ 消息) 以调用此服务。
执行环境
可以从进程或中断环境中调用此内核服务。
返回值
此服务没有返回值。