X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=kitten%2Finclude%2Flwk%2Finterrupt.h;fp=kitten%2Finclude%2Flwk%2Finterrupt.h;h=0a7ad5f771197d17dbfa1b16e83c7c39b51406e7;hb=66a1a4c7a9edcd7d8bc207aca093d694a6e6b5b2;hp=0000000000000000000000000000000000000000;hpb=f7cf9c19ecb0a589dd45ae0d2c91814bd3c2acc2;p=palacios-OLD.git diff --git a/kitten/include/lwk/interrupt.h b/kitten/include/lwk/interrupt.h new file mode 100644 index 0000000..0a7ad5f --- /dev/null +++ b/kitten/include/lwk/interrupt.h @@ -0,0 +1,35 @@ +#ifndef _LWK_INTERRUPT_H +#define _LWK_INTERRUPT_H + +/** + * IRQ handler return type. + * + * IRQ_NONE means we didn't handle the interrupt. + * IRQ_HANDLED means we did handle the interrupt. + * IRQ_RETVAL(x) returns IRQ_HANDLED if x is non-zero, IRQ_NONE otherwise. + */ +typedef int irqreturn_t; +#define IRQ_NONE (0) +#define IRQ_HANDLED (1) +#define IRQ_RETVAL ((x) != 0) + +/** + * IRQ handler prototype. + */ +typedef irqreturn_t (*irq_handler_t)(unsigned int irq, void *dev_id); + +/** + * Registers an interrupt handler. + */ +extern int request_irq(unsigned int irq, + irq_handler_t handler, + unsigned long irqflags, + const char *devname, + void *dev_id); + +/** + * Unregisters an interrupt handler. + */ +extern void free_irq(unsigned int irq, void *dev_id); + +#endif