static struct dev_ops xx_dev_ops = {
DEVO_REV, /* devo_rev */
0, /* devo_refcnt */
xxgetinfo, /* devo_getinfo: getinfo(9E) */
nulldev, /* devo_identify: identify(9E) */
xxprobe, /* devo_probe: probe(9E) */
xxattach, /* devo_attach: attach(9E) */
xxdetach, /* devo_detach: detach(9E) */
nodev, /* devo_reset: see devo_quiesce */
&xx_cb_ops, /* devo_cb_ops */
NULL, /* devo_bus_ops */
&xxpower, /* devo_power: power(9E) */
ddi_quiesce_not_needed, /* devo_quiesce: quiesce(9E) */
};使用 dev_ops(9S) 结构,内核可以找到设备驱动程序的自动配置入口点。devo_rev 字段标识结构的修订号。该字段必须设置为 DEVO_REV。devo_refcnt 字段必须初始化为零。应使用相应驱动程序的入口点地址填充函数地址字段,但以下情况除外:
将 devo_identify 字段设置为 nulldev(9F)。identify() 入口点已过时。
如果不需要 probe(9E) 例程,应将 devo_probe 字段设置为 nulldev(9F)。
将 devo_reset 字段设置为 nodev(9F)。nodev() 函数返回 ENXIO。请参见 devo_quiesce。
如果不需要 power() 例程,应将 devo_power 字段设置为 NULL。提供电源管理功能的设备的驱动程序必须具有 power(9E) 入口点。请参见第 12 章,电源管理。
如果驱动程序不需要实现停止,请将 devo_quiesce 字段设置为 ddi_quiesce_not_needed()。对设备进行管理的驱动程序必须提供一个 quiesce(9E) 入口点。
devo_cb_ops 成员应包含 cb_ops(9S) 结构的地址。devo_bus_ops 字段必须设置为 NULL。