Я пытался написать пример кода для проверки disable_irq
и enable_irq
.Поскольку номер IRQ для клавиатуры равен 1, я написал следующий код:
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
MODULE_LICENSE("GPL");
static int test_interrupt_init(void)
{
printk(KERN_INFO"%s: In init\n", __func__);
disable_irq(1);
msleep(5*1000);
enable_irq(1);
return 0;
}
static void test_interrupt_exit(void)
{
printk(KERN_INFO"%s: In exit\n", __func__);
}
module_init(test_interrupt_init);
module_exit(test_interrupt_exit);
Поведение вывода странное, оно отключает клавиатуру, но автоматически нажимается множество клавиш ввода.Как происходит отправка ключей ввода в ядро Linux