X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Flinux%2Firq.h;h=c3ff4d1016675fb8d8309b03e090f603bd1ee69e;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=5bc740d9bc47813f51e8c0d42889a28f2c8873c9;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/include/linux/irq.h b/include/linux/irq.h index 5bc740d9b..c3ff4d101 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -13,6 +13,7 @@ #if !defined(CONFIG_ARCH_S390) +#include #include #include #include @@ -58,9 +59,10 @@ typedef struct hw_interrupt_type hw_irq_controller; * Pad this out to 32 bytes for cache and indexing reasons. */ typedef struct irq_desc { - unsigned int status; /* IRQ status */ hw_irq_controller *handler; + void *handler_data; struct irqaction *action; /* IRQ action list */ + unsigned int status; /* IRQ status */ unsigned int depth; /* nested irq disables */ unsigned int irq_count; /* For detecting broken interrupts */ unsigned int irqs_unhandled; @@ -71,7 +73,22 @@ extern irq_desc_t irq_desc [NR_IRQS]; #include /* the arch dependent stuff */ -extern int setup_irq(unsigned int , struct irqaction * ); +extern int setup_irq(unsigned int irq, struct irqaction * new); + +#ifdef CONFIG_GENERIC_HARDIRQS +extern cpumask_t irq_affinity[NR_IRQS]; +extern int no_irq_affinity; +extern int noirqdebug_setup(char *str); + +extern fastcall int handle_IRQ_event(unsigned int irq, struct pt_regs *regs, + struct irqaction *action); +extern fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs); +extern void note_interrupt(unsigned int irq, irq_desc_t *desc, int action_ret); +extern void report_bad_irq(unsigned int irq, irq_desc_t *desc, int action_ret); +extern int can_request_irq(unsigned int irq, unsigned long irqflags); + +extern void init_irq_proc(void); +#endif extern hw_irq_controller no_irq_type; /* needed in every arch ? */