Hal设备需要被看到什么?

问题描述:

我想了解Linux内核设备驱动程序,对于我已经创建了三个模块:Hal设备需要被看到什么?

  • 一种总线类型
  • 设备驱动程序
  • 一个假设备,现在什么都不做,只注册

一切工作正常,我可以加载总线,驱动程序和创建设备的模块。一切都出现在sysfs上,包括设备和设备驱动程序之间的链接,表明它们是绑定的。

而且驱动程序和设备被加载的时候,我可以看到使用udevadm monitor也有些事件引发:

KERNEL[1275564332.144997] add  /module/bustest_driver (module) 
KERNEL[1275564332.145289] add  /bus/bustest/drivers/bustest_example (drivers) 
UDEV [1275564332.157428] add  /module/bustest_driver (module) 
UDEV [1275564332.157483] add  /bus/bustest/drivers/bustest_example (drivers) 
KERNEL[1275564337.656650] add  /module/bustest_device (module) 
KERNEL[1275564337.656817] add  /devices/bustest_device (bustest) 
UDEV [1275564337.658294] add  /module/bustest_device (module) 
UDEV [1275564337.664707] add  /devices/bustest_device (bustest) 

但一切后,该设备没有出现在大厅。还有什么需要通过hal看到的设备?

一切似乎是确定与设备,问题是,哈尔需要一个处理程序,每个子系统(处理程序的列表,可以在hald/linux/device.c找到),很显然,HAL不支持bustest,子系统发明了这个案例。

如果总线注册的名称是“pseudo”而不是“bustest”,hal会使用一组处理程序来定义假设备来初始化数据库条目,注册它并发送一个DeviceAdded事件。