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
事件。