dddump 设备驱动程序入口点
用途
将系统转储数据写入设备。
语法
参数
描述
内核转储例程调用 dddump 入口点以设置转储请求并将其发送到设备。 对于设备驱动程序, dddump 例程是可选的。 仅当设备驱动程序支持将设备作为可能的内核转储的目标时,才需要此参数。
如果是这样,那么在执行转储时,系统状态尽可能少地更改是很重要的。 因此,在将转储数据写入设备时, dddump 例程应该使用最小服务量。
命令 参数可以指定以下任一转储命令:
| dump 命令 | 描述 |
|---|---|
| 转储初始化 | 正在初始化设备以准备支持系统转储。 指定的设备实例必须先前已打开。 arg 参数指向 /usr/include/sys/dump.h中定义的 dumpio_stat 结构。 这用于在发生错误的情况下返回特定于设备的状态。 dddump 例程应该将设备驱动程序用于支持转储写入的所有代码和数据置顶。 当实际执行转储数据的写操作时,需要执行此操作以防止发生缺页故障。 (置顶代码应包含 dddump 例程。) 可以将 销 或 Pincode 内核服务用于此目的。 |
| 倾倒垃圾 | 在一个 DUMPWRITE 命令中确定可以传输到设备的最大字节数和最小字节数。 对于网络转储,还会发送用于将转储数据传输到网络转储设备的写例程的地址。 对于此命令, 乌约普 参数未使用且为空。 arg 参数是指向 dmp_query 结构的指针,如 /usr/include/sys/dump.h 文件中所定义。 dmp_query 结构中包含以下字段:
DUMPQUERY 命令在 阿尔格 参数所指向的 dmp_query 结构中返回数据传输大小信息。 然后,内核转储函数在写入转储数据时使用最小和最大传输大小 (包括在内) 之间的缓冲区。 如果缓冲区的大小不是在max_tsize那么其大小必须是该字段中的值的倍数。min_tsize。 该min_tsize和max_tsize字段可以指定相同的值。 |
| DUMPSTART | 在接收 DUMPWRITE 命令之前,暂挂当前设备活动并提供需要的设备设置。 arg 参数指向 /usr/include/sys/dump.h中定义的 dumpio_stat 结构。 这用于在发生错误的情况下返回特定于设备的状态。 |
| DUMPWRITE | 将转储数据写入目标设备。 乌约普 参数所指向的 乌约 结构指定要写入设备的一个或多个数据区以及启动设备偏移量。 arg 参数指向 /usr/include/sys/dump.h中定义的 dumpio_stat 结构。 这用于在发生错误的情况下返回特定于设备的状态。 DUMPWRITE 命令的代码应尽量减少其对系统服务,进程分派以及诸如 INTIODONE 中断优先级或设备硬件中断之类的中断服务的依赖。 注: DUMPWRITE 命令绝不能导致缺页故障。 由于要转储的数据区已确定在内存中,因此在调用者方面确保了这一点。 设备驱动程序必须确保在其 转储初始化 命令处理期间,其所有代码,数据和堆栈访问都是锁定内存。
|
| 转储结束 | 指示内核转储已经完成。 此时应执行设备状态的任何清除操作。 |
| DUMPTERN | 指示指定的设备不再是选定的转储目标设备。 如果此 dddump 例程所支持的其他设备都没有未完成的 转储初始化 命令,那么 DUMPTERN 代码在接收到 转储初始化 命令时应取消锁定任何已锁定的资源。 ( 取消锁定 内核服务可用于取消固定的内存。) 在关闭设备之前将接收到 DUMPTERN 命令。 |
| DUMPREAD | 将先前 DUMPWRITE 操作的应答包接收到通信设备驱动程序。 如果设备驱动程序在指定时间内收到应答,那么它将返回 0 ,并且响应数据将返回到 乌约普 参数中的内核转储函数。 如果设备驱动程序在指定的时间内未接收到应答,那么它会返回值 ETIMEDOUT。 阿尔格 参数包含超时值 (以毫秒计)。 |
执行环境
转储初始化 dddump 操作仅在 流程环境 中进行调用。 可以在 流程环境 和 中断环境中同时调用 DUMPQUERY, DUMPSTART, DUMPWRITE, 转储结束和 DUMPTERN dddump 操作。
返回值
dddump 入口点通过返回非零返回码来向调用者指示错误情况。