Viewing file: irq.h (1.67 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#ifndef _ASM_IRQ_H #define _ASM_IRQ_H
#define EXT_INTERRUPT 1 #define IO_INTERRUPT 2 #define THIN_INTERRUPT 3
#define NR_IRQS_BASE 4
#ifdef CONFIG_PCI_NR_MSI # define NR_IRQS (NR_IRQS_BASE + CONFIG_PCI_NR_MSI) #else # define NR_IRQS NR_IRQS_BASE #endif
/* This number is used when no interrupt has been assigned */ #define NO_IRQ 0
#ifndef __ASSEMBLY__
#include <linux/hardirq.h> #include <linux/percpu.h> #include <linux/cache.h> #include <linux/types.h>
enum interruption_class { IRQEXT_CLK, IRQEXT_EXC, IRQEXT_EMS, IRQEXT_TMR, IRQEXT_TLA, IRQEXT_PFL, IRQEXT_DSD, IRQEXT_VRT, IRQEXT_SCP, IRQEXT_IUC, IRQEXT_CMS, IRQEXT_CMC, IRQEXT_CMR, IRQIO_CIO, IRQIO_QAI, IRQIO_DAS, IRQIO_C15, IRQIO_C70, IRQIO_TAP, IRQIO_VMR, IRQIO_LCS, IRQIO_CLW, IRQIO_CTC, IRQIO_APB, IRQIO_ADM, IRQIO_CSC, IRQIO_PCI, IRQIO_MSI, IRQIO_VIR, NMI_NMI, CPU_RST, NR_ARCH_IRQS };
struct irq_stat { unsigned int irqs[NR_ARCH_IRQS]; };
DECLARE_PER_CPU_SHARED_ALIGNED(struct irq_stat, irq_stat);
static __always_inline void inc_irq_stat(enum interruption_class irq) { __get_cpu_var(irq_stat).irqs[irq]++; }
struct ext_code { unsigned short subcode; unsigned short code; };
typedef void (*ext_int_handler_t)(struct ext_code, unsigned int, unsigned long);
int register_external_interrupt(u16 code, ext_int_handler_t handler); int unregister_external_interrupt(u16 code, ext_int_handler_t handler);
enum irq_subclass { IRQ_SUBCLASS_MEASUREMENT_ALERT = 5, IRQ_SUBCLASS_SERVICE_SIGNAL = 9, };
void irq_subclass_register(enum irq_subclass subclass); void irq_subclass_unregister(enum irq_subclass subclass);
#define irq_canonicalize(irq) (irq)
#endif /* __ASSEMBLY__ */
#endif /* _ASM_IRQ_H */
|