☰
usb_register/usb_register_driver/usb_driver
2026/10/28 2:05:16 网站建设 项目流程

usb_register

  • 1. usb_register
  • 2. usb_driver

1. usb_register

  1. 初始化 usb_driver 结构体1

  2. 通过driver_register()完成下列任务:
    2.1检查总线与驱动的操作方法是否冲突
    2.2通过driver_find()检查驱动是否已注册(已注册,则什么都不做)
    未注册(遍历usb_driver->drvwrap..driver.bus.p.klist_drivers.list链表中无usbserial名称的设备),
    则通过bus_add_driver()将驱动添加到总线

    2.3通过driver_add_groups()在/sys/bus/usb/drivers/usbserial/目录下创建驱动自定义的属性组(这里未创建)
    2.4通过kobject_uevent()在驱动注册完成后,向用户空间广播一条“驱动已添加”的 uevent

    1. 通过usb_create_newid_files()在驱动的 sysfs 目录下创建 new_id 和 remove_id 文件,允许用户空间动态添加/删除支持的 USB 设备 ID
    • 通过driver_create_file()创建/sys/bus/usb/drivers/usbserial/new_id文件(未执行)
    • 通过driver_create_file()创建/sys/bus/usb/drivers/usbserial/remove_id文件(未执行)

    1-初始化usb_driver->drvwrap.driver.bus.p结构体[^3]
    2-通过kobject_init_and_add()创建/sys/bus/usb/drivers/usbserial目录
    3-通过klist_add_tail()将 USB驱动 插入 USB总线 的驱动列表
    4-通过driver_attach()循环遍历总线usb_driver->drvwrap.driver.bus.p.klist_devices上所有设备(未执行)
    5-通过module_add_driver()
    5.1-将/sys/bus/usb/drivers/usbserial/module链接到/sys/module/usbserial/
    5.2-将/sys/module/usbserial/drivers/usb:usbserial链接到/sys/bus/usb/drivers/usbserial
    6-通过driver_create_file()创建/sys/bus/usb/drivers/usbserial/uevent文件
    7-通过driver_add_groups()在/sys/bus/usb/drivers/usbserial目录下创建usb_driver->drvwrap.driver.bus.drv_groups属性组(这里未创建属性文件)
    8-通过add_bind_files()
    8.1-创建/sys/bus/usb/drivers/usbserial/unbind文件
    8.2-创建/sys/bus/usb/drivers/usbserial/bind文件

    2. usb_driver


    1. 初始化 usb_driver 结构体 ↩︎

    需要专业的网站建设服务?

    联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

    立即咨询