Reputation: 61
From what I read both are used to register interrupt handlers. I saw lots of request_irq
calls in kernel code but not even one __interrupt
call. Is __interrupt
some way to register a handler from user space?
Upvotes: 6
Views: 5929
Reputation: 2428
request_irq
is essentially a wrapper call to request_threaded_irq
, which allocates the IRQ resources and enables the IRQ. That's paraphrased from the comment block in kernel/irq/manage.c
, Line #1239.
Basically, you want to use request_irq
if you need to setup interrupt handling for a device of some kind. Make sure that whatever subsystem you are working in doesn't already provide a wrapper for request_irq
, too. I.e., if you are working on a device driver, consider using the devm_*
family of calls to auto-manage the minutiae, like freeing unused variables and such. See devm_request_threaded_irq
at Line #29 in kernel/irq/devres.c
for a better explanation. Its equivalent call (and the one you would most likely use) is devm_request_irq
.
Upvotes: 8
Reputation: 942
As far as I remember __interrupt() is used to declare a function as ISR in userspace. I am not sure where I have this from but I'll come back to you as soon as I found the spot.
Upvotes: 0