linux/arch/x86/include/asm/hardirq.h
<<
>>
Prefs
   1#ifndef _ASM_X86_HARDIRQ_H
   2#define _ASM_X86_HARDIRQ_H
   3
   4#include <linux/threads.h>
   5#include <linux/irq.h>
   6
   7typedef struct {
   8        unsigned int __softirq_pending;
   9        unsigned int __nmi_count;       /* arch dependent */
  10#ifdef CONFIG_X86_LOCAL_APIC
  11        unsigned int apic_timer_irqs;   /* arch dependent */
  12        unsigned int irq_spurious_count;
  13        unsigned int icr_read_retry_count;
  14#endif
  15#ifdef CONFIG_HAVE_KVM
  16        unsigned int kvm_posted_intr_ipis;
  17        unsigned int kvm_posted_intr_wakeup_ipis;
  18#endif
  19        unsigned int x86_platform_ipis; /* arch dependent */
  20        unsigned int apic_perf_irqs;
  21        unsigned int apic_irq_work_irqs;
  22#ifdef CONFIG_SMP
  23        unsigned int irq_resched_count;
  24        unsigned int irq_call_count;
  25        /*
  26         * irq_tlb_count is double-counted in irq_call_count, so it must be
  27         * subtracted from irq_call_count when displaying irq_call_count
  28         */
  29        unsigned int irq_tlb_count;
  30#endif
  31#ifdef CONFIG_X86_THERMAL_VECTOR
  32        unsigned int irq_thermal_count;
  33#endif
  34#ifdef CONFIG_X86_MCE_THRESHOLD
  35        unsigned int irq_threshold_count;
  36#endif
  37#ifdef CONFIG_X86_MCE_AMD
  38        unsigned int irq_deferred_error_count;
  39#endif
  40#if IS_ENABLED(CONFIG_HYPERV) || defined(CONFIG_XEN)
  41        unsigned int irq_hv_callback_count;
  42#endif
  43} ____cacheline_aligned irq_cpustat_t;
  44
  45DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat);
  46
  47#define __ARCH_IRQ_STAT
  48
  49#define inc_irq_stat(member)    this_cpu_inc(irq_stat.member)
  50
  51#define local_softirq_pending() this_cpu_read(irq_stat.__softirq_pending)
  52
  53#define __ARCH_SET_SOFTIRQ_PENDING
  54
  55#define set_softirq_pending(x)  \
  56                this_cpu_write(irq_stat.__softirq_pending, (x))
  57#define or_softirq_pending(x)   this_cpu_or(irq_stat.__softirq_pending, (x))
  58
  59extern void ack_bad_irq(unsigned int irq);
  60
  61extern u64 arch_irq_stat_cpu(unsigned int cpu);
  62#define arch_irq_stat_cpu       arch_irq_stat_cpu
  63
  64extern u64 arch_irq_stat(void);
  65#define arch_irq_stat           arch_irq_stat
  66
  67#endif /* _ASM_X86_HARDIRQ_H */
  68