Доброго дня.)
Занялся изучением вопроса установки собственных обработчиков прерываний. Написал простенькую программу. В ней всё работает, но, когда я пытаюсь выполнить:
insmod Mod_1.ko // в которой:
N_irq = 0; //или 8; 0 - timer, 8 - rtc
if (request_irq (N_irq, My_interrupt,
IRQF_SHARED|IRQF_TIMER, "My_IRQ0", &D_irq)) return -1;
То на консоли вижу:
insmod: ERROR: could not insert module Mod_1.ko: Operation not permitted
dmesg показывает:
genirq: Flags mismatch irq 0. 00014200 (My_IRQ0) vs. 00015a20 (timer)
Как я понял, мне отказывают в регистрации обработчика из-за несоответствия флагов, отсюда вопросы:
1) На IRQ0 или 8 - невозможно впринципе написать обработчик из-за монопольного использования линии текущим обработчиком?
2) Если написать возможно, то, наверное, нужны другие IRQF флаги?
Пользование тегами code/console крайне желательно