diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-03-02 02:36:47 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-03-02 02:36:47 +0000 |
commit | 8624512aa908741ba2795200133eae0d7f4557ea (patch) | |
tree | d5d3036fccf2604f4c98dedc11e8adb929d6b52e /include/linux/irq.h | |
parent | 7b8f5d6f1d45d9f9de1d26e7d3c32aa5af11b488 (diff) |
Merge with 2.3.48.
Diffstat (limited to 'include/linux/irq.h')
-rw-r--r-- | include/linux/irq.h | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index 150266ff8..4a6df60ae 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -12,6 +12,7 @@ #define IRQ_AUTODETECT 16 /* IRQ is being autodetected */ #define IRQ_WAITING 32 /* IRQ not yet seen - for autodetection */ #define IRQ_LEVEL 64 /* IRQ level triggered */ +#define IRQ_MASKED 128 /* IRQ masked - shouldn't be seen again */ /* * Interrupt controller descriptor. This is all we need @@ -25,6 +26,7 @@ struct hw_interrupt_type { void (*disable)(unsigned int irq); void (*ack)(unsigned int irq); void (*end)(unsigned int irq); + void (*set_affinity)(unsigned int irq, unsigned int mask); }; typedef struct hw_interrupt_type hw_irq_controller; @@ -37,17 +39,33 @@ typedef struct hw_interrupt_type hw_irq_controller; * Pad this out to 32 bytes for cache and indexing reasons. */ typedef struct { - unsigned int status; /* IRQ status - - IRQ_INPROGRESS, IRQ_DISABLED */ - hw_irq_controller *handler; /* never derefed in arch - independent code */ - struct irqaction *action; /* IRQ action list */ - unsigned int depth; /* Disable depth for nested irq disables */ + unsigned int status; /* IRQ status */ + hw_irq_controller *handler; + struct irqaction *action; /* IRQ action list */ + unsigned int depth; /* nested irq disables */ + spinlock_t lock; + unsigned int __pad[3]; } ____cacheline_aligned irq_desc_t; -#include <asm/hw_irq.h> /* the arch dependent stuff */ +extern irq_desc_t irq_desc [NR_IRQS]; + +typedef struct { + unsigned int __local_irq_count; + unsigned int __local_bh_count; + atomic_t __nmi_counter; + unsigned int __pad[5]; +} ____cacheline_aligned irq_cpustat_t; + +extern irq_cpustat_t irq_stat [NR_CPUS]; -extern irq_desc_t irq_desc[NR_IRQS]; +/* + * Simple wrappers reducing source bloat + */ +#define local_irq_count(cpu) (irq_stat[(cpu)].__local_irq_count) +#define local_bh_count(cpu) (irq_stat[(cpu)].__local_bh_count) +#define nmi_counter(cpu) (irq_stat[(cpu)].__nmi_counter) + +#include <asm/hw_irq.h> /* the arch dependent stuff */ extern int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *); extern spinlock_t irq_controller_lock; |