* [Xenomai-core] [PATCH] avoid installing inappropriate IRQ dispatcher
@ 2006-10-16 9:42 Jan Kiszka
2006-10-20 14:14 ` Philippe Gerum
0 siblings, 1 reply; 2+ messages in thread
From: Jan Kiszka @ 2006-10-16 9:42 UTC (permalink / raw)
To: xenomai-core
[-- Attachment #1: Type: text/plain, Size: 490 bytes --]
In the (corner) case that someone requests to install a shared edge IRQ
while the related support is not enabled (!CONFIG_XENO_OPT_SHIRQ_EDGE),
BUT the opposite type (CONFIG_XENO_OPT_SHIRQ_LEVEL), Xenomai so far
incorrectly installs the level-type handler. For the other way around,
the non-shared dispatch handler is installed, which is also not correct.
This patch fixes the issue by returning an error on registration,
clearly indicating the system misconfiguration to the caller.
Jan
[-- Attachment #2: pick-shared-irq-handler.patch --]
[-- Type: text/plain, Size: 1452 bytes --]
---
ChangeLog | 5 +++++
ksrc/nucleus/intr.c | 15 ++++++++++-----
2 files changed, 15 insertions(+), 5 deletions(-)
Index: ksrc/nucleus/intr.c
===================================================================
--- ksrc/nucleus/intr.c.orig
+++ ksrc/nucleus/intr.c
@@ -340,14 +340,19 @@ static inline int xnintr_irq_attach(xnin
void (*handler) (unsigned, void *) = &xnintr_irq_handler;
if (intr->flags & XN_ISR_SHARED) {
-#if defined(CONFIG_XENO_OPT_SHIRQ_LEVEL)
- handler = &xnintr_shirq_handler;
-#endif /* CONFIG_XENO_OPT_SHIRQ_LEVEL */
-
-#if defined(CONFIG_XENO_OPT_SHIRQ_EDGE)
if (intr->flags & XN_ISR_EDGE)
+#if defined(CONFIG_XENO_OPT_SHIRQ_EDGE)
handler = &xnintr_edge_shirq_handler;
+#else /* !CONFIG_XENO_OPT_SHIRQ_EDGE */
+ return -ENOSYS;
#endif /* CONFIG_XENO_OPT_SHIRQ_EDGE */
+ else
+#if defined(CONFIG_XENO_OPT_SHIRQ_LEVEL)
+ handler = &xnintr_shirq_handler;
+#else /* !CONFIG_XENO_OPT_SHIRQ_LEVEL */
+ return -ENOSYS;
+#endif /* CONFIG_XENO_OPT_SHIRQ_LEVEL */
+
}
shirq->unhandled = 0;
Index: ChangeLog
===================================================================
--- ChangeLog.orig
+++ ChangeLog
@@ -1,3 +1,8 @@
+2006-10-16 Jan Kiszka <jan.kiszka@domain.hid>
+
+ * ksrc/nucleus/intr.x (xnintr_irq_attach): Return error on
+ mismatching shared-IRQ support.
+
2006-10-15 Philippe Gerum <rpm@xenomai.org>
* ksrc/arch/powerpc/patches: Upgrade to 2.6.14-ppc-1.5-00.
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Xenomai-core] [PATCH] avoid installing inappropriate IRQ dispatcher
2006-10-16 9:42 [Xenomai-core] [PATCH] avoid installing inappropriate IRQ dispatcher Jan Kiszka
@ 2006-10-20 14:14 ` Philippe Gerum
0 siblings, 0 replies; 2+ messages in thread
From: Philippe Gerum @ 2006-10-20 14:14 UTC (permalink / raw)
To: Jan Kiszka; +Cc: xenomai-core
On Mon, 2006-10-16 at 11:42 +0200, Jan Kiszka wrote:
> In the (corner) case that someone requests to install a shared edge IRQ
> while the related support is not enabled (!CONFIG_XENO_OPT_SHIRQ_EDGE),
> BUT the opposite type (CONFIG_XENO_OPT_SHIRQ_LEVEL), Xenomai so far
> incorrectly installs the level-type handler. For the other way around,
> the non-shared dispatch handler is installed, which is also not correct.
>
> This patch fixes the issue by returning an error on registration,
> clearly indicating the system misconfiguration to the caller.
>
Merged, thanks.
> Jan
> plain text document attachment (pick-shared-irq-handler.patch)
> ---
> ChangeLog | 5 +++++
> ksrc/nucleus/intr.c | 15 ++++++++++-----
> 2 files changed, 15 insertions(+), 5 deletions(-)
>
> Index: ksrc/nucleus/intr.c
> ===================================================================
> --- ksrc/nucleus/intr.c.orig
> +++ ksrc/nucleus/intr.c
> @@ -340,14 +340,19 @@ static inline int xnintr_irq_attach(xnin
> void (*handler) (unsigned, void *) = &xnintr_irq_handler;
>
> if (intr->flags & XN_ISR_SHARED) {
> -#if defined(CONFIG_XENO_OPT_SHIRQ_LEVEL)
> - handler = &xnintr_shirq_handler;
> -#endif /* CONFIG_XENO_OPT_SHIRQ_LEVEL */
> -
> -#if defined(CONFIG_XENO_OPT_SHIRQ_EDGE)
> if (intr->flags & XN_ISR_EDGE)
> +#if defined(CONFIG_XENO_OPT_SHIRQ_EDGE)
> handler = &xnintr_edge_shirq_handler;
> +#else /* !CONFIG_XENO_OPT_SHIRQ_EDGE */
> + return -ENOSYS;
> #endif /* CONFIG_XENO_OPT_SHIRQ_EDGE */
> + else
> +#if defined(CONFIG_XENO_OPT_SHIRQ_LEVEL)
> + handler = &xnintr_shirq_handler;
> +#else /* !CONFIG_XENO_OPT_SHIRQ_LEVEL */
> + return -ENOSYS;
> +#endif /* CONFIG_XENO_OPT_SHIRQ_LEVEL */
> +
> }
> shirq->unhandled = 0;
>
> Index: ChangeLog
> ===================================================================
> --- ChangeLog.orig
> +++ ChangeLog
> @@ -1,3 +1,8 @@
> +2006-10-16 Jan Kiszka <jan.kiszka@domain.hid>
> +
> + * ksrc/nucleus/intr.x (xnintr_irq_attach): Return error on
> + mismatching shared-IRQ support.
> +
> 2006-10-15 Philippe Gerum <rpm@xenomai.org>
>
> * ksrc/arch/powerpc/patches: Upgrade to 2.6.14-ppc-1.5-00.
> _______________________________________________
> Xenomai-core mailing list
> Xenomai-core@domain.hid
> https://mail.gna.org/listinfo/xenomai-core
--
Philippe.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2006-10-20 14:14 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-10-16 9:42 [Xenomai-core] [PATCH] avoid installing inappropriate IRQ dispatcher Jan Kiszka
2006-10-20 14:14 ` Philippe Gerum
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.