编写设备驱动程序

诊断故障

故障管理守护进程 fmd(1M) 为诊断引擎 (diagnosis engine, DE) 插件模块的开发提供编程接口。可通过编写 DE 来使用和诊断任何错误遥测或特定错误遥测。eft DE 设计为根据以 Eversholt 语言指定的诊断规则来诊断任意数量的 ereport 类。

标准叶设备诊断

大多数 I/O 子系统都使用 eft DE 和规则集来诊断与设备和设备驱动程序相关的问题。已为 PCI 叶设备指定了一组报告标准 I/O 控制器错误中列出的标准 ereport。除了这些 ereport 外,同时还提供了提取遥测并确定关联设备故障的 eft 诊断规则。生成这些 ereport 的驱动程序不需要交付其他任何诊断软件或 eft 规则。

检测和生成这些 ereport 时将产生以下故障事件:

fault.io.pci.bus-linkerr

PCI 总线上的硬件故障

fault.io.pci.device-interr

设备内的硬件故障

fault.io.pci.device-invreq

设备中的硬件故障或驱动程序的缺陷,导致设备发送无效请求

fault.io.pci.device-noresp

设备中的硬件故障,导致驱动程序不对有效请求做出响应

fault.io.pciex.bus-linkerr

链路中的硬件故障

fault.io.pciex.bus-noresp

链路关闭,导致设备无法对有效请求做出响应

fault.io.pciex.device-interr

设备内的硬件故障

fault.io.pciex.device-invreq

设备中的硬件故障或驱动程序的缺陷,导致设备发送无效请求

fault.io.pciex.device-noresp

设备中的硬件故障,导致设备无法对有效请求做出响应

专门的设备诊断

要生成其他 ereport 或提供更专门的诊断软件或 eft 规则的驱动程序开发者可以通过编写基于 C 的 DE 或 eft 诊断规则集来实现此目标。有关信息,请参见 OpenSolaris 项目故障管理社区