On 19/08/06, Jan Kiszka <[EMAIL PROTECTED] > wrote:
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

Reply via email to