编写适用于 Oracle® Solaris 11.2 的设备驱动程序

退出打印视图

更新时间: 2014 年 9 月
 
 

设备配置概念

系统基于节点名称和 compatible 属性为内核设备树中的每个节点选择驱动程序(请参见Binding a Driver to a Device)。相同的驱动程序可能会绑定到多个设备节点。驱动程序可以根据系统指定的实例编号来区分不同的节点。

为设备节点选择驱动程序之后,将调用该驱动程序的 probe(9E) 入口点以确定系统上是否存在该设备。如果 probe() 成功,将调用该驱动程序的 attach(9E) 入口点以设置和管理设备。当且仅当 attach() 返回成功信息时,才能打开该设备(请参见attach() Entry Point)。

可能会取消配置设备以节省系统内存资源,或在系统仍在运行时使设备可以移除。要取消配置设备,系统首先会检查是否引用了设备实例。此检查将调用驱动程序的 getinfo(9E) 入口点以获取仅为该驱动程序所知的信息(请参见getinfo() Entry Point)。如果未引用设备实例,将调用驱动程序的 detach(9E) 例程来取消配置设备(请参见detach() Entry Point)。

要进行更新,每个驱动程序都必须定义内核用于设备配置的以下入口点:

请注意,attach()detach()getinfo() 是必需的。只有无法自我识别的设备需要 probe()。对于自标识设备,可以提供显式 probe() 例程,或者在 dev_ops 结构中为 probe() 入口点指定 nulldev(9F)