eeh_slot_error 内核服务
用途
此服务会记录临时或永久错误,并 (可选) 将插槽标记为永久不可用。
语法
#include <sys/eeh.h>
long eeh_slot_error(handle, flag, dd_buf, dd_buf_length)
eeh_handle_t handle;
int flag;
char *dd_buf;
long dd_buf_length;
参数
| 项 | 描述 |
|---|---|
| 句柄 (handle) | 从 eeh_init 或 eeh_init_multifunc 获取的 EEH 句柄 |
| 标记 | EEH_RESET_TEMP 或 EEH_RESET_PERM |
| dd_buf | 设备驱动程序的错误日志缓冲区的地址 |
| dd_buf_length | 设备驱动程序错误日志缓冲区的长度 (以字节为单位) |
描述
此服务执行以下一些任务:
- 它收集硬件数据,以帮助了解 EEH 事件的性质和来源
- 它将设备驱动程序提供的调试数据日志与硬件数据日志相结合,并在错误日志中创建一个条目
- 它可以选择将槽标记为永久不可用,以便后续 eeh_read_slot_state () 调用返回 EH_UNAVAILABLE , retry_delay 值为 0
此内核服务的行为由以下两个 旗 值控制:
| 项 | 描述 |
|---|---|
| EEH_RESET_TEMP | 此标志仅执行上述两个任务中的前两个任务。 |
| EEH_RESET_PERM | 此标志执行所有三个任务。 |
根据插槽的硬件状态不同,此服务可能无法收集硬件数据。 因此,该服务将成功,但不会记录任何数据。 如果提供了 EEH_RESET_PERM ,那么它仍会将插槽标记为永久不可用。
dd_buf 和 dd_buf_length 参数用于将设备驱动程序错误日志与硬件日志组合在一起。 dd_buf 自变量是错误日志缓冲区的地址,该缓冲区包含设备驱动程序的数据。 dd_buf_length 参数是该缓冲区的长度。 如果长度超过 MAX_DD_LOG_SIZE 个字节,那么会截断驱动程序的日志数据。 如果 dd_buf 为 NULL ,那么错误日志仅包含硬件数据 (如果有)。
单功能驱动程序: 内核服务的工作方式与上述描述相同。 如果由于硬件或固件原因而发生故障,那么将返回 EEH_FAIL 并记录错误。
多功能驱动程序: 对于多功能驱动程序,此服务与前面的描述一样工作,但如果提供了 EEH_RESET_PERM ,那么会广播 EEH_DD_DEAD 消息。
为设备驱动程序提供了宏 EEH_SLOT_ERROR(处理, 旗, dd_buf, dd_buf_length) 以调用此服务。
执行环境
可以从进程或中断环境中调用此内核服务。
返回值
| 项 | 描述 |
|---|---|
| EEH_SUCC | 已成功记录错误 |
| EHEH_FAIL | 未能记录错误并 (可选) 将插槽标记为永久不可用 |