使用USB驱动程序注册用户空间回调功能

时间:2011-08-26 07:34:54

标签: linux

如何使用USB驱动程序为Linux中的大容量存储设备注册用户空间回调函数?
当附上usb棒时,我在控制台上发送了相关信息。

usb 1-1:使用ehci_hcd和地址2的新型高速USB设备 usb 1-1:产品:DataTraveler G2
usb 1-1:制造商:金士顿
usb 1-1:SerialNumber:0019E06B07F7A961877C02A9
usb 1-1:从1个选择中选择的配置#1 scsi0:USB大容量存储设备的SCSI仿真
scsi 0:0:0:0:直接访问金士顿DataTraveler G2 1.00 PQ:0 ANSI:2
SCSI设备sda:7818240 512字节hdwr扇区(4003 MB)
sda:写保护已关闭 sda:假设驱动器缓存:通过写入 SCSI设备sda:7818240 512字节hdwr扇区(4003 MB)
sda:写保护已关闭 sda:假设驱动器缓存:通过sda:sda1写入 sd 0:0:0:0:附加scsi可移动磁盘sda
sd 0:0:0:0:附加scsi generic sg0 type 0

1 个答案:

答案 0 :(得分:0)

您可以创建一个udev规则,在插入命令时执行该命令。基本上,您创建一个文件,其中包含一组用于匹配的规则,以及要运行的程序/脚本的路径。它看起来像这样:

KERNEL=="sd?1", ATTRS{serial}=="0019E06B07F7A961877C02A9", RUN+="/path/to/script arg1 arg2 ... argN"

当创建名为/path/to/script的设备节点,其中arg1是任何字符时,这将使用argNsd?1运行?数据中给出的序列号。如果您需要更好地控制何时触发,您可以从udevinfo程序中获取大量信息以纳入规则。例如,如果您希望它为所有金士顿驱动器启动。然后,您需要找到vendorID以及这些驱动器特有的更多信息。