2010-06-03 21 views
2

Je suis en train d'en savoir plus sur les pilotes de périphériques sur le noyau Linux, pour que j'ai créé trois modules avec:Qu'est-ce qu'un périphérique Linux doit être vu par Hal?

  • Un type de bus
  • Un pilote de périphérique
  • Dispositif faux qui ne fait rien maintenant , seulement est enregistré

Tout fonctionne très bien, je peux charger le bus, le pilote et le module qui crée le périphérique. Tout apparaît sur sysfs, y compris le lien entre le périphérique et le pilote de périphérique qui indique qu'ils sont liés.

Et lorsque le conducteur et le dispositif sont chargés, je peux voir en utilisant udevadm monitor que aussi quelques événements provoquèrent:

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) 

Mais après tout, l'appareil ne semble pas hal. Quoi d'autre besoin d'un appareil à voir par hal?

Répondre

0

Tout semble être ok avec l'appareil, le problème est que Hal a besoin d'un gestionnaire pour chaque sous-système (la liste des gestionnaires se trouvent dans hald/linux/device.c), et évidemment, hal ne supporte pas bustest, le sous-système inventé pour ce cas. Si le bus est enregistré avec le nom "pseudo" au lieu de "bustest", hal utilise un ensemble de gestionnaires définis pour les faux périphériques pour initialiser l'entrée de la base de données, l'enregistre et envoie un événement DeviceAdded.