第 1 部分针对 Oracle Solaris 平台设计设备驱动程序
9. 直接内存访问 (Direct Memory Access, DMA)
14. 分层驱动程序接口 (Layered Driver Interface, LDI)
本节讨论 dump(9E) 和 print(9E) 入口点。
dump(9E) 入口点用于在系统发生故障时将虚拟地址空间的一部分直接复制到指定的设备。在检查点操作期间,还可以使用 dump() 将内核状态复制到磁盘。有关更多信息,请参见 cpr(7) 和 dump(9E) 手册页。由于在检查点操作期间中断被禁用,因此该入口点必须能够在不使用中断的情况下执行此操作。
int dump(dev_t dev, caddr_t addr, daddr_t blkno, int nblk)
其中:
接收转储的设备的设备编号。
开始转储的基本内核虚拟地址。
开始转储的块。
转储的块的编号。
转储依赖于现有的驱动程序是否工作正常。
int print(dev_t dev, char *str)
系统调用 print(9E) 入口点以显示有关已检测到的异常的消息。print(9E) 应调用 cmn_err(9F) 以代表系统将消息发布到控制台。以下示例说明了一个典型的 print() 入口点。
static int xxprint(dev_t dev, char *str) { cmn_err(CE_CONT, “xx: %s\n”, str); return (0); }