dddump 设备驱动程序入口点

用途

将系统转储数据写入设备。

语法

#include <sys/device.h>

int dddump (devno, uiop, cmd, arg, chan, ext)
dev_t  devno;
struct uio * uiop;
int  cmd,  arg;
chan_t  chan;
int  ext;

参数

描述
德夫诺 指定 主要和次要设备号
乌约普 指向描述要转储的数据区或区域的 乌约 结构。
cmd 来自内核转储函数的参数,用于指定要执行的操作。
arg 来自调用者的参数,用于指定与内核转储命令关联的参数块的地址。
指定 通道号
分机 指定 扩展参数

描述

内核转储例程调用 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 结构中包含以下字段:

min_tsize
最小传输大小 (以字节为单位)。
max_tsize
最大传输大小 (以字节为单位)。
dumpwrite
写例程的地址。

DUMPQUERY 命令在 阿尔格 参数所指向的 dmp_query 结构中返回数据传输大小信息。 然后,内核转储函数在写入转储数据时使用最小和最大传输大小 (包括在内) 之间的缓冲区。

如果缓冲区的大小不是在max_tsize那么其大小必须是该字段中的值的倍数。min_tsize。 该min_tsizemax_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 操作仅在 流程环境 中进行调用。 可以在 流程环境中断环境中同时调用 DUMPQUERYDUMPSTARTDUMPWRITE转储结束DUMPTERN dddump 操作。

返回值

dddump 入口点通过返回非零返回码来向调用者指示错误情况。