On 19/08/06, Jan Kiszka <[EMAIL PROTECTED]
> wrote:
It should be ok but just in case, Jan, pls give it a try first. I was not able to test a branch with rthal_irq_cookie() (but as I recall it worked when it was implemented) as I don't have any driver at hand to be loaded.
TIA,
just realised that the output of /proc/xenomai/irq is suboptimal (no
names) under !CONFIG_XENO_OPT_SHIRQ_LEVEL &&
!CONFIG_XENO_OPT_SHIRQ_EDGE...
It should be ok but just in case, Jan, pls give it a try first. I was not able to test a branch with rthal_irq_cookie() (but as I recall it worked when it was implemented) as I don't have any driver at hand to be loaded.
TIA,
Thanks,
Jan
--
Best regards,
Dmitry Adamushko
diff -urp xenomai-SVN/include/nucleus/intr.h xenomai-a/include/nucleus/intr.h --- xenomai-SVN/include/nucleus/intr.h 2006-07-20 11:09:01.000000000 +0200 +++ xenomai-a/include/nucleus/intr.h 2006-08-22 09:32:24.000000000 +0200 @@ -71,7 +71,9 @@ int xnintr_mount(void); void xnintr_clock_handler(void); +#if defined(CONFIG_PROC_FS) && defined(__KERNEL__) int xnintr_irq_proc(unsigned int irq, char *str); +#endif /* CONFIG_PROC_FS && __KERNEL__ */ /* Public interface. */ diff -urp xenomai-SVN/ksrc/nucleus/intr.c xenomai-a/ksrc/nucleus/intr.c --- xenomai-SVN/ksrc/nucleus/intr.c 2006-07-20 12:35:40.000000000 +0200 +++ xenomai-a/ksrc/nucleus/intr.c 2006-08-22 09:34:28.000000000 +0200 @@ -691,6 +691,7 @@ int xnintr_mount(void) return 0; } +#if defined(CONFIG_PROC_FS) && defined(__KERNEL__) int xnintr_irq_proc(unsigned int irq, char *str) { xnintr_shirq_t *shirq; @@ -727,6 +728,7 @@ int xnintr_irq_proc(unsigned int irq, ch return p - str; } +#endif /* CONFIG_PROC_FS && __KERNEL__ */ #else /* !CONFIG_XENO_OPT_SHIRQ_LEVEL && !CONFIG_XENO_OPT_SHIRQ_EDGE */ @@ -735,10 +737,31 @@ int xnintr_mount(void) return 0; } +#if defined(CONFIG_PROC_FS) && defined(__KERNEL__) int xnintr_irq_proc(unsigned int irq, char *str) { - return 0; + xnintr_t *intr; + char *p = str; + + if (rthal_virtual_irq_p(irq)) { + p += sprintf(p, " [virtual]"); + return p - str; + } else if (irq == XNARCH_TIMER_IRQ) { + p += sprintf(p, " %s", nkclock.name); + return p - str; + } + + xnlock_get_irqsave(&nklock, s); + + intr = rthal_irq_cookie(&rthal_domain, irq); + if (intr && *(intr->name)) + p += sprintf(p, " %s", intr->name); + + xnlock_put_irqrestore(&nklock, s); + + return p - str; } +#endif /* CONFIG_PROC_FS && __KERNEL__ */ #endif /* CONFIG_XENO_OPT_SHIRQ_LEVEL || CONFIG_XENO_OPT_SHIRQ_EDGE */
--- ChangeLog-SVN 2006-08-22 02:14:43.000000000 +0200 +++ ChangeLog 2006-08-22 02:19:21.000000000 +0200 @@ -10,6 +10,9 @@ * ksrc/nucleus/pipe.c (xnpipe_recv): Re-evaluate the timeout value as we iterate over the message acquisition. + + * ksrc/nucleus/intr.c (xnintr_irq_proc): Print the names of registered + handlers also in case of non-shared interrupts. 2006-08-20 Gilles Chanteperdrix <[EMAIL PROTECTED]>
_______________________________________________ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core