#ifndef __ASM_GENERIC_HARDIRQ_H#define __ASM_GENERIC_HARDIRQ_H#include <linux/cache.h>#include <linux/threads.h>#include <linux/irq.h>typedefstruct{unsignedlong__softirq_pending;}____cacheline_alignedirq_cpustat_t;#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */#ifndef HARDIRQ_BITS#define HARDIRQ_BITS 8#endif/* * The hardirq mask has to be large enough to have * space for potentially all IRQ sources in the system * nesting on a single CPU: */#if (1 << HARDIRQ_BITS) < NR_IRQS# error HARDIRQ_BITS is too low!#endif#ifndef ack_bad_irqstaticinlinevoidack_bad_irq(unsignedintirq){printk(KERN_CRIT"unexpected IRQ trap at vector %02x\n",irq);}#endif#endif /* __ASM_GENERIC_HARDIRQ_H */