OSDN Git Service

[ARM] fiq_debugger: Print local timer irqs count
authorRebecca Schultz Zavin <rebecca@android.com>
Fri, 22 Oct 2010 22:55:17 +0000 (15:55 -0700)
committerIliyan Malchev <malchev@google.com>
Mon, 23 May 2011 22:43:49 +0000 (15:43 -0700)
Prints the number of local timer irqs on each cpu when
 the irqs command is executed.

Change-Id: Ic70fa9f528d98996fabb2d0cc80e937c5b239c1a
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
arch/arm/common/fiq_debugger.c

index 3300538..6b7ce43 100644 (file)
@@ -87,6 +87,7 @@ struct fiq_debugger_state {
 #endif
 
        unsigned int last_irqs[NR_IRQS];
+       unsigned int last_local_timer_irqs[NR_CPUS];
 };
 
 #ifdef CONFIG_FIQ_DEBUGGER_NO_SLEEP
@@ -323,6 +324,8 @@ static void dump_allregs(struct fiq_debugger_state *state, unsigned *regs)
 static void dump_irqs(struct fiq_debugger_state *state)
 {
        int n;
+       unsigned int cpu;
+
        debug_printf(state, "irqnr       total  since-last   status  name\n");
        for (n = 0; n < NR_IRQS; n++) {
                struct irqaction *act = irq_desc[n].action;
@@ -335,6 +338,16 @@ static void dump_irqs(struct fiq_debugger_state *state)
                        (act && act->name) ? act->name : "???");
                state->last_irqs[n] = kstat_irqs(n);
        }
+
+       for (cpu = 0; cpu < NR_CPUS; cpu++) {
+
+               debug_printf(state, "LOC %d: %10u %11u\n", cpu,
+                            __IRQ_STAT(cpu, local_timer_irqs),
+                            __IRQ_STAT(cpu, local_timer_irqs) -
+                            state->last_local_timer_irqs[cpu]);
+               state->last_local_timer_irqs[cpu] =
+                       __IRQ_STAT(cpu, local_timer_irqs);
+       }
 }
 
 struct stacktrace_state {