|
@@ -33,6 +33,7 @@ struct kernel_stat {
|
|
|
#ifndef CONFIG_GENERIC_HARDIRQS
|
|
|
unsigned int irqs[NR_IRQS];
|
|
|
#endif
|
|
|
+ unsigned long irqs_sum;
|
|
|
unsigned int softirqs[NR_SOFTIRQS];
|
|
|
};
|
|
|
|
|
@@ -54,6 +55,7 @@ static inline void kstat_incr_irqs_this_cpu(unsigned int irq,
|
|
|
struct irq_desc *desc)
|
|
|
{
|
|
|
kstat_this_cpu.irqs[irq]++;
|
|
|
+ kstat_this_cpu.irqs_sum++;
|
|
|
}
|
|
|
|
|
|
static inline unsigned int kstat_irqs_cpu(unsigned int irq, int cpu)
|
|
@@ -65,8 +67,9 @@ static inline unsigned int kstat_irqs_cpu(unsigned int irq, int cpu)
|
|
|
extern unsigned int kstat_irqs_cpu(unsigned int irq, int cpu);
|
|
|
#define kstat_irqs_this_cpu(DESC) \
|
|
|
((DESC)->kstat_irqs[smp_processor_id()])
|
|
|
-#define kstat_incr_irqs_this_cpu(irqno, DESC) \
|
|
|
- ((DESC)->kstat_irqs[smp_processor_id()]++)
|
|
|
+#define kstat_incr_irqs_this_cpu(irqno, DESC) do {\
|
|
|
+ ((DESC)->kstat_irqs[smp_processor_id()]++);\
|
|
|
+ kstat_this_cpu.irqs_sum++; } while (0)
|
|
|
|
|
|
#endif
|
|
|
|
|
@@ -94,6 +97,13 @@ static inline unsigned int kstat_irqs(unsigned int irq)
|
|
|
return sum;
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * Number of interrupts per cpu, since bootup
|
|
|
+ */
|
|
|
+static inline unsigned int kstat_cpu_irqs_sum(unsigned int cpu)
|
|
|
+{
|
|
|
+ return kstat_cpu(cpu).irqs_sum;
|
|
|
+}
|
|
|
|
|
|
/*
|
|
|
* Lock/unlock the current runqueue - to extract task statistics:
|