Что Хэл должен видеть на устройстве Linux? - PullRequest
2 голосов
/ 03 июня 2010

Я пытаюсь узнать о драйверах устройств в ядре 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. Что еще нужно, чтобы устройство было видно Халу?

1 Ответ

0 голосов
/ 03 июня 2010

С устройством все в порядке, проблема в том, что Hal нужен обработчик для каждой подсистемы (список обработчиков можно найти в hald/linux/device.c), и, очевидно, hal не поддерживает bustest, подсистема придумана для этого случая.

Если шина зарегистрирована с именем «псевдо» вместо «bustest», hal использует набор обработчиков, определенных для поддельных устройств, для инициализации записи в базе данных, регистрирует ее и отправляет событие DeviceAdded.

...