#include
#include
#include
#include
#include
MODULE_LICENSE("GPL");
MODULE_AUTHOR("rcortes-");
MODULE_DESCRIPTION("Load when a Keyboard is Plugged In");
MODULE_VERSION("0.01");
static int __init kb_init(void)
{
printk(KERN_INFO "Keyboard has been connected!\n");
return 0;
}
static void __exit kb_exit(void)
{
printk(KERN_INFO "Module clean up!\n");
}
module_init(kb_init);
module_exit(kb_exit);
< /code>
У меня есть правило UDEV для загрузки модуля, когда он обнаруживает клавиатуру: < /p>
ACTION=="add", SUBSYSTEM=="usb", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceSubClass}=="01", ATTRS{bInterfaceProtocol}=="01", RUN+="/usr/sbin/insmod /home/LinuxKernelAssignments/ex04/basic/kb_hotplug.ko"
< /code>
Теперь проблема в том, что когда я подключаю клавиатуру, мое правило udev не сбои с кодом выхода 1. Я думаю, проблема в том, что USBHID уже регистрирует клавиатуру, прежде чем UDEV загружает модуль, но я хочу, чтобы KB_HOTPLUG был выполнен первым.[ 1285.506100] usb 2-2: new low-speed USB device number 8 using ohci-pci
[ 1286.345073] usb 2-2: New USB device found, idVendor=04d9, idProduct=1702, bcdDevice=4.06
[ 1286.345086] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1286.345091] usb 2-2: Product: USB Keyboard
[ 1286.345096] usb 2-2: Manufacturer:
[ 1286.385105] input: USB Keyboard as /devices/pci0000:0000:0000:06.0/usb2/2-2/2-2:1.0/0003:04D9:1702.0012/input/input29
[ 1286.920473] hid-generic 0003:04D9:1702.0012: input,hidraw1: USB HID v1.10 Keyboard [USB Keyboard] on usb-0000:00:06.0-2/input0
[ 1286.963103] input: USB Keyboard System Control as /devices/pci0000:0000:0000:06.0/usb2/2-2/2-2:1.1/0003:04D9:1702.0013/input/input30
[ 1287.015041] input: USB Keyboard Consumer Control as /devices/pci0000:0000:0000:06.0/usb2/2-2/2-2:1.1/0003:04D9:1702.0013/input/input31
[ 1287.015194] hid-generic 0003:04D9:1702.0013: input,hidraw2: USB HID v1.10 Device [USB Keyboard] on usb-0000:00:06.0-2/input1
[ 1287.038807] (udev-worke[612]: 2-2:1.0: Process '/usr/sbin/insmod /home/LinuxKernelAssignments/ex04/basic/kb_hotplug.ko' failed with exit code 1.
Я делаю модуль ядра Linux, который каждый раз, когда клавиатура подключается к нему печатает сообщение, подобное «подключению клавиатуры!» < /p> [code]#include #include #include #include #include
MODULE_LICENSE("GPL"); MODULE_AUTHOR("rcortes-"); MODULE_DESCRIPTION("Load when a Keyboard is Plugged In"); MODULE_VERSION("0.01");
static int __init kb_init(void) { printk(KERN_INFO "Keyboard has been connected!\n"); return 0; }
module_init(kb_init); module_exit(kb_exit); < /code> У меня есть правило UDEV для загрузки модуля, когда он обнаруживает клавиатуру: < /p> ACTION=="add", SUBSYSTEM=="usb", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceSubClass}=="01", ATTRS{bInterfaceProtocol}=="01", RUN+="/usr/sbin/insmod /home/LinuxKernelAssignments/ex04/basic/kb_hotplug.ko" < /code> Теперь проблема в том, что когда я подключаю клавиатуру, мое правило udev не сбои с кодом выхода 1. Я думаю, проблема в том, что USBHID уже регистрирует клавиатуру, прежде чем UDEV загружает модуль, но я хочу, чтобы KB_HOTPLUG был выполнен первым.[ 1285.506100] usb 2-2: new low-speed USB device number 8 using ohci-pci [ 1286.345073] usb 2-2: New USB device found, idVendor=04d9, idProduct=1702, bcdDevice=4.06 [ 1286.345086] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 1286.345091] usb 2-2: Product: USB Keyboard [ 1286.345096] usb 2-2: Manufacturer: [ 1286.385105] input: USB Keyboard as /devices/pci0000:0000:0000:06.0/usb2/2-2/2-2:1.0/0003:04D9:1702.0012/input/input29 [ 1286.920473] hid-generic 0003:04D9:1702.0012: input,hidraw1: USB HID v1.10 Keyboard [USB Keyboard] on usb-0000:00:06.0-2/input0 [ 1286.963103] input: USB Keyboard System Control as /devices/pci0000:0000:0000:06.0/usb2/2-2/2-2:1.1/0003:04D9:1702.0013/input/input30 [ 1287.015041] input: USB Keyboard Consumer Control as /devices/pci0000:0000:0000:06.0/usb2/2-2/2-2:1.1/0003:04D9:1702.0013/input/input31 [ 1287.015194] hid-generic 0003:04D9:1702.0013: input,hidraw2: USB HID v1.10 Device [USB Keyboard] on usb-0000:00:06.0-2/input1 [ 1287.038807] (udev-worke[612]: 2-2:1.0: Process '/usr/sbin/insmod /home/LinuxKernelAssignments/ex04/basic/kb_hotplug.ko' failed with exit code 1.