我需要在每次连接USB设备时执行用户空间应用程序

时间:2012-07-17 07:08:40

标签: c linux-kernel driver embedded-linux kernel-module

我正在使用嵌入式平台。此设备中的典型软件是Linux 2.6 + Busybox,因此资源有限。

每次连接USB设备时,我都需要运行用户空间应用程序。我需要将DeviceID和ProductID作为参数传递给此用户空间应用程序。

我真的不知道应该遵循哪种策略来实现这一目标:

  • 编写Linux内核模块。
  • 从内核(usb驱动程序)中进行操作我目前正在这样做,但我不认为这是最好的方法
  • 为usb连接的设备'轮询'的用户空间应用。?

哪一个应该是最好的方式?

感谢您的回答!

3 个答案:

答案 0 :(得分:1)

如果您想留在用户空间,则可以使用libudev

您有一个示例here。您可以从中提取产品ID和设备ID。

答案 1 :(得分:0)

即使像@aisbaa这样的其他选项提到,修改内核也很有趣且具有挑战性。我建议你修改USB驱动程序。原因是,您需要将参数发送到用户空间应用程序(产品ID,设备ID)。

这些ID将在驱动程序中获得。所以用这些ID调用用户空间应用程序是我的选择。

对于调用用户空间应用程序,可以使用here

答案 2 :(得分:0)

据我所知,内核中有一个USB热插拔机制。 当发生热插拔事件时,可以通知用户。不幸的是,我对细节不是很熟悉。

也许linux-3.3.5/samples/kobject/kset-example.c会给你一些想法。