Разница между request_irq и __interrupt - PullRequest
5 голосов
/ 04 июня 2011

Из того, что я прочитал, оба используются для регистрации обработчиков прерываний. Я видел множество request_irq вызовов в коде ядра, но даже не один __interrupt вызов. __interrupt - это способ регистрации обработчика из пространства пользователя?

Ответы [ 2 ]

7 голосов
/ 06 июня 2011

request_irq - это, по сути, вызов оболочки request_threaded_irq, который выделяет ресурсы IRQ и включает IRQ. Это перефразировано из блока комментариев в kernel/irq/manage.c, Строка # 1239 .

Как правило, вы хотите использовать request_irq, если вам нужно настроить обработку прерываний для какого-либо устройства. Убедитесь, что в любой подсистеме, в которой вы работаете, также нет оболочки для request_irq. То есть, если вы работаете с драйвером устройства, рассмотрите возможность использования семейства вызовов devm_* для автоматического управления мелочами, например освобождение неиспользуемых переменных и тому подобное. См. devm_request_threaded_irq в Строка # 29 в kernel/irq/devres.c для лучшего объяснения. Его эквивалентный вызов (и тот, который вы, скорее всего, будете использовать): devm_request_irq.

0 голосов
/ 04 июня 2011

Насколько я помню, __interrupt () используется для объявления функции как ISR в пользовательском пространстве.Я не уверен, откуда у меня это, но я вернусь к вам, как только найду это место.

...