Commit cfa2c51d authored by Jan Kiszka's avatar Jan Kiszka Committed by Philippe Gerum

cobalt/intr: Move IRQ exit trace point

It can be confusing for people reading a trace when a context switch due
to a wake up in the IRQ handler comes before the handler was left. Move
the exit instrumentation before the schedule, just like we already do in
the clock handler.
Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
parent b4153ea4
...@@ -355,12 +355,12 @@ static void xnintr_vec_handler(unsigned int irq, void *cookie) ...@@ -355,12 +355,12 @@ static void xnintr_vec_handler(unsigned int irq, void *cookie)
out: out:
xnstat_exectime_switch(sched, prev); xnstat_exectime_switch(sched, prev);
trace_cobalt_irq_exit(irq);
if (--sched->inesting == 0) { if (--sched->inesting == 0) {
sched->lflags &= ~XNINIRQ; sched->lflags &= ~XNINIRQ;
xnsched_run(); xnsched_run();
} }
trace_cobalt_irq_exit(irq);
} }
/* /*
...@@ -441,12 +441,12 @@ static void xnintr_edge_vec_handler(unsigned int irq, void *cookie) ...@@ -441,12 +441,12 @@ static void xnintr_edge_vec_handler(unsigned int irq, void *cookie)
out: out:
xnstat_exectime_switch(sched, prev); xnstat_exectime_switch(sched, prev);
trace_cobalt_irq_exit(irq);
if (--sched->inesting == 0) { if (--sched->inesting == 0) {
sched->lflags &= ~XNINIRQ; sched->lflags &= ~XNINIRQ;
xnsched_run(); xnsched_run();
} }
trace_cobalt_irq_exit(irq);
} }
static inline int xnintr_irq_attach(struct xnintr *intr) static inline int xnintr_irq_attach(struct xnintr *intr)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment