Как запустить тасклет после прерывания нажатия клавиши?

Я хотел бы создать модуль ядра, который будет запускать тасклет при нажатии клавиши f5.

Я понимаю, как запустить тасклет, но как мне получить событие в моем модуле? Как мне использовать request_irq, чтобы выяснить, была ли нажата кнопка f5?


person 0x90    schedule 12.08.2012    source источник
comment
Вам нужно использовать request_irq? Разве register_keyboard_notifier не была бы более полезной?   -  person Probie    schedule 12.08.2012


Ответы (1)


-

Hi, 0x90,

Я думаю, вы знаете, что обработка прерывания состоит из двух частей. Первая часть, верхняя половина, это обработчик прерывания, Вторая часть, нижняя половина, может быть softtirq, тасклетом, рабочей очередью.

Таким образом, даже если вы хотите реализовать в тасклете все, что хотите, вы должны убедиться, что верхняя половина, обработчик прерывания, имеет шанс запускаться первой.

IIRC, тасклет - это просто вариант softirqs, и они обрабатываются в irq_exit (), который вызывается в do_IRQ (). Но этот поток может зависеть от конкретной архитектуры.

Что касается вашего вопроса, я думаю, это может быть платформа x86. Какая бы клавиша ни была нажата, на CPU всегда будет передаваться прерывание клавиатуры. И независимо от того, нажата ли клавиша f5, будет проверяться в вашем тасклете, вашему обработчику прерывания может просто потребоваться передать код тасклету.

Итак, вы должны прикрепить свой обработчик прерывания, который обрабатывается перед тасклетом, к прерыванию клавиатуры, вызвав request_irq ().

Обновлять:

Как сказал Проби, вы можете проверить файлы notifier.txt и notifiers.txt в каталоге Documentation /.

Спасибо.

person shawn xy bai    schedule 13.08.2012