Module: xenomai-forge Branch: master Commit: 2d59922912010fce63a3d6088f51329bd073b353 URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=2d59922912010fce63a3d6088f51329bd073b353
Author: Jan Kiszka <jan.kis...@siemens.com> Date: Fri Jan 4 20:32:17 2013 +0100 nucleus/intr: Fix output of timer interrupts in /proc/xenomai/{irq,stat} XNARCH_TIMER_IRQ works on the current CPU, we need to check all CPUs if a given IRQ serves there as timer. Also, properly decode RTHAL_TIMER_IPI when listing IRQs. Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> --- kernel/cobalt/nucleus/intr.c | 16 ++++++++++++++-- 1 files changed, 14 insertions(+), 2 deletions(-) diff --git a/kernel/cobalt/nucleus/intr.c b/kernel/cobalt/nucleus/intr.c index a76d36a..befdb4d 100644 --- a/kernel/cobalt/nucleus/intr.c +++ b/kernel/cobalt/nucleus/intr.c @@ -883,7 +883,19 @@ void xnintr_affinity(xnintr_t *intr, cpumask_t cpumask) } EXPORT_SYMBOL_GPL(xnintr_affinity); +static inline int xnintr_is_timer_irq(int irq) +{ + int cpu; + + for_each_online_cpu(cpu) + if (irq == per_cpu(ipipe_percpu.hrtimer_irq, cpu)) + return 1; + + return 0; +} + #ifdef CONFIG_XENO_OPT_STATS + int xnintr_query_init(xnintr_iterator_t *iterator) { iterator->cpu = -1; @@ -924,7 +936,7 @@ int xnintr_query_next(int irq, xnintr_iterator_t *iterator, char *name_buf) } if (!iterator->prev) { - if (irq == per_cpu(ipipe_percpu.hrtimer_irq, cpu)) + if (xnintr_is_timer_irq(irq)) intr = &nktimer; else intr = xnintr_shirq_first(irq); @@ -977,7 +989,7 @@ static inline int format_irq_proc(unsigned int irq, int cpu; for_each_online_cpu(cpu) - if (irq == per_cpu(ipipe_percpu.hrtimer_irq, cpu)) { + if (xnintr_is_timer_irq(irq)) { xnvfile_printf(it, " [timer/%d]", cpu); return 0; } _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git