aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/i386/irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'xen/arch/i386/irq.c')
-rw-r--r--xen/arch/i386/irq.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/xen/arch/i386/irq.c b/xen/arch/i386/irq.c
index e58fb8f2ad..312cfe7970 100644
--- a/xen/arch/i386/irq.c
+++ b/xen/arch/i386/irq.c
@@ -36,6 +36,7 @@
#include <asm/pgalloc.h>
#include <xeno/delay.h>
+#include <xeno/perfc.h>
/*
* Linux has a controller-independent x86 interrupt architecture.
@@ -469,6 +470,11 @@ asmlinkage unsigned int do_IRQ(struct pt_regs regs)
struct irqaction * action;
unsigned int status;
+ u32 cc_start, cc_end;
+
+ perfc_incra(irqs, cpu);
+ rdtscl(cc_start);
+
spin_lock(&desc->lock);
desc->handler->ack(irq);
/*
@@ -530,6 +536,9 @@ asmlinkage unsigned int do_IRQ(struct pt_regs regs)
if (softirq_pending(cpu))
do_softirq();
+ rdtscl(cc_end);
+ perfc_adda(irq_time, cpu, cc_end - cc_start);
+
return 1;
}