一个 PCI 驱动被添加到 PCI 核心, 当它调用 pci_register_driver 函数时. 这个函数 只初始化 struct device_driver 结构, 这个结构包含在 struct pci_driver 结构里面, 如同之前在关于添加设备的一节中提过的. 接着 PCI 核心使用指向包含在 struct pci_driver 结构中的 sturct device_driver 结构的指针调用在驱动核心的 driver_register 函数.
driver_register 函数初始化在 struct device_driver 结构中的几个锁, 并且接着调用 bus_add_driver 函数. 这个函数进行下面的步骤:
- 查找驱动要被关联的总线. 如果这个总线被发现, 函数立刻返回.
-
- 驱动的 sysfs 目录被创建, 基于驱动的名子和它被关联的总线.
- · 总线的内部锁被获取, 接着所有的已经注册到总线的设备被检查, 匹配函数为它们 被调用, 就象当一个新设备被添加时. 如果那个匹配函数成功, 接着剩下的绑定过 程发生, 如同在前面章节描述过的.
- 驱动的 sysfs 目录被创建, 基于驱动的名子和它被关联的总线.