В книге The Linux Kernel Module Programming Guide Peter Jay Salzman Ori Pomerantz 2003-04-04 ver 2.4.0 (http://www.tldp.org/LDP/lkmpg/2.4/html/index.html) есть пример модуля котрый перехватывает прерывание клавиатуры(http://www.tldp.org/LDP/lkmpg/2.4/html/x1210.html#AEN1291). Если закоментировать макросы определения версий для ветки 2.0.х, то модуль(intrpt.c) компилируется под ядро 2.4.28. Но при запуске модуля(insmod intrpt.o) система падает
Kernel Panic: Aiee, killing interrupt handler! In interrupt handler - not syncing
Ведь вроде правильно прерывание захватывется. Меня интересует как правильно подправить модуль чтоб он правильно коректно работал(в лог писал сканкоды) под 2.4.28.
void irq_handler(int irq, void *dev_id, struct pt_regs *regs) { ... }
int init_module() {
free_irq(1, NULL);
return request_irq(1,irq_handler,SA_SHIRQ, "test_keyboard_irq_handler", NULL);
}