开发者

What does a linux device need to be seen by Hal?

I'm trying to learn about device drivers on Linux Kernel, for that I've created three modules with:

  • A bus type
  • A device driver
  • A fake device that does nothing now, only is registered

Everything works fine, I can load the bus, the driver and the module that creates the device. Everything appears on sysfs, including the link between the device and the device driver that indicates 开发者_如何学编程that they are binded.

And when the driver and device are loaded, I can see using udevadm monitor that also some events are provoked:

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)

But after everything, the device doesn't appear on hal. What else need a device to be seen by hal?


Everything seems to be ok with the device, the problem is that Hal needs a handler for each subsystem (the list of handlers can be found in hald/linux/device.c), and obviously, hal doesn't support bustest, the subsystem invented for this case.

If the bus is registered with the name "pseudo" instead of "bustest", hal uses a set of handlers defined for fake devices to initialize the database entry, registers it and send a DeviceAdded event.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜