diff options
Diffstat (limited to 'arch/x86/include/asm/hardirq.h')
-rw-r--r-- | arch/x86/include/asm/hardirq.h | 50 |
1 files changed, 46 insertions, 4 deletions
diff --git a/arch/x86/include/asm/hardirq.h b/arch/x86/include/asm/hardirq.h index 000787df66e..039db6aa8e0 100644 --- a/arch/x86/include/asm/hardirq.h +++ b/arch/x86/include/asm/hardirq.h | |||
@@ -1,11 +1,53 @@ | |||
1 | #ifdef CONFIG_X86_32 | 1 | #ifndef _ASM_X86_HARDIRQ_H |
2 | # include "hardirq_32.h" | 2 | #define _ASM_X86_HARDIRQ_H |
3 | #else | 3 | |
4 | # include "hardirq_64.h" | 4 | #include <linux/threads.h> |
5 | #include <linux/irq.h> | ||
6 | |||
7 | typedef struct { | ||
8 | unsigned int __softirq_pending; | ||
9 | unsigned int __nmi_count; /* arch dependent */ | ||
10 | unsigned int irq0_irqs; | ||
11 | #ifdef CONFIG_X86_LOCAL_APIC | ||
12 | unsigned int apic_timer_irqs; /* arch dependent */ | ||
13 | unsigned int irq_spurious_count; | ||
14 | #endif | ||
15 | unsigned int generic_irqs; /* arch dependent */ | ||
16 | #ifdef CONFIG_SMP | ||
17 | unsigned int irq_resched_count; | ||
18 | unsigned int irq_call_count; | ||
19 | unsigned int irq_tlb_count; | ||
20 | #endif | ||
21 | #ifdef CONFIG_X86_MCE | ||
22 | unsigned int irq_thermal_count; | ||
23 | # ifdef CONFIG_X86_64 | ||
24 | unsigned int irq_threshold_count; | ||
25 | # endif | ||
5 | #endif | 26 | #endif |
27 | } ____cacheline_aligned irq_cpustat_t; | ||
28 | |||
29 | DECLARE_PER_CPU(irq_cpustat_t, irq_stat); | ||
30 | |||
31 | /* We can have at most NR_VECTORS irqs routed to a cpu at a time */ | ||
32 | #define MAX_HARDIRQS_PER_CPU NR_VECTORS | ||
33 | |||
34 | #define __ARCH_IRQ_STAT | ||
35 | |||
36 | #define inc_irq_stat(member) percpu_add(irq_stat.member, 1) | ||
37 | |||
38 | #define local_softirq_pending() percpu_read(irq_stat.__softirq_pending) | ||
39 | |||
40 | #define __ARCH_SET_SOFTIRQ_PENDING | ||
41 | |||
42 | #define set_softirq_pending(x) percpu_write(irq_stat.__softirq_pending, (x)) | ||
43 | #define or_softirq_pending(x) percpu_or(irq_stat.__softirq_pending, (x)) | ||
44 | |||
45 | extern void ack_bad_irq(unsigned int irq); | ||
6 | 46 | ||
7 | extern u64 arch_irq_stat_cpu(unsigned int cpu); | 47 | extern u64 arch_irq_stat_cpu(unsigned int cpu); |
8 | #define arch_irq_stat_cpu arch_irq_stat_cpu | 48 | #define arch_irq_stat_cpu arch_irq_stat_cpu |
9 | 49 | ||
10 | extern u64 arch_irq_stat(void); | 50 | extern u64 arch_irq_stat(void); |
11 | #define arch_irq_stat arch_irq_stat | 51 | #define arch_irq_stat arch_irq_stat |
52 | |||
53 | #endif /* _ASM_X86_HARDIRQ_H */ | ||