哈尔需要看到一个linux设备是什么?

时间:2010-06-03 11:29:54

标签: linux-kernel kernel linux-device-driver hal hotplugging

我正在尝试了解Linux内核上的设备驱动程序,因为我创建了三个模块:

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

一切正常,我可以加载总线,驱动程序和创建设备的模块。所有内容都出现在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上。 hal还需要什么设备?

1 个答案:

答案 0 :(得分:0)

设备似乎一切正常,问题是Hal需要每个子系统的处理程序(处理程序列表可以在hald/linux/device.c中找到),显然,hal不支持{{1为这种情况发明的子系统。

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