All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-core] [shirq] first test results
@ 2006-02-10 18:03 Jan Kiszka
  2006-02-11 11:31 ` [Xenomai-core] " Dmitry Adamushko
  0 siblings, 1 reply; 7+ messages in thread
From: Jan Kiszka @ 2006-02-10 18:03 UTC (permalink / raw)
  To: Dmitry Adamushko; +Cc: xenomai-core


[-- Attachment #1.1: Type: text/plain, Size: 1491 bytes --]

Hi Dmitry,

some news from the testing front: It works fairly well - and it doesn't
crash =:). We set up a quite demanding test scenario which consists of
two Sick Laser scanners feeding two UART ports at 500 Kbit/s. The UARTs
are on a special PC104 card, sharing the same edge-triggered IRQ line.
We were able to get data from both devices running at the same time. But
we noticed some overruns of MAX_EDGEIRQ_COUNTER (a few per second). The
next step on Monday will be to generate a back-trace with the
ipipe-tracer to see if the system is "just" overloaded or if we are
still facing problems with the driver and/or IRQ layer. Will be very
interesting to see on that radar what's happing.

I attached two patches. One enables xeno_16550A to use the new features,
and the other improves the /proc output of your patch slightly.

Furthermore, we noticed that virtual IRQs (namely the printk forwarder)
get displayed under /proc/xenomai/irq too. Is this useful? We wondered
what IRQ 34 might be until code analysis of Xenomai and Ipipe revealed
it (__ipipe_printk_virq). If it is considered useful, we should at least
mark those irqs virtual in the output or even give them names as well.

Then I stumbled over the xnintr structure. Why do you keep a copy of the
device name? A "const char *" should be enough, we just have to demand
that it will remain valid as long as the xnintr structure itself (i.e.
during the IRQ being attached). Saves a few bytes. :)

Jan

[-- Attachment #1.2: shirq-16550A.patch --]
[-- Type: text/plain, Size: 955 bytes --]

Index: ksrc/drivers/16550A/16550A.c
===================================================================
--- ksrc/drivers/16550A/16550A.c	(revision 556)
+++ ksrc/drivers/16550A/16550A.c	(working copy)
@@ -238,7 +238,7 @@
     int                     rbytes = 0;
     int                     events = 0;
     int                     modem;
-    int                     ret = RTDM_IRQ_PROPAGATE;
+    int                     ret = RTDM_IRQ_PROPAGATE | RTDM_IRQ_NOINT;
 
 
     ctx = rtdm_irq_get_arg(irq_context, struct rt_16550_context);
@@ -446,7 +446,8 @@
     ctx = (struct rt_16550_context *)context->dev_private;
 
     ret = rtdm_irq_request(&ctx->irq_handle, irq[dev_id], rt_16550_interrupt,
-                           0, context->device->proc_name, ctx);
+                           RTDM_IRQTYPE_SHARED|RTDM_IRQTYPE_EDGE,
+                           context->device->proc_name, ctx);
     if (ret < 0)
         return ret;
 

[-- Attachment #1.3: shirq-timer-name.patch --]
[-- Type: text/plain, Size: 513 bytes --]

--- xenomai/ksrc/nucleus/pod.c.orig	2006-02-10 14:30:32.000000000 +0100
+++ xenomai/ksrc/nucleus/pod.c	2006-02-10 14:30:49.000000000 +0100
@@ -3071,7 +3071,7 @@ unlock_and_exit:
        source will be attached directly by the arch-dependent layer
        (xnarch_start_timer). */
 
-    xnintr_init(&nkclock,NULL,XNARCH_TIMER_IRQ,tickhandler,NULL,0);
+    xnintr_init(&nkclock,"[timer]",XNARCH_TIMER_IRQ,tickhandler,NULL,0);
     xnintr_clock_attach(&nkclock);
 
     __setbits(nkpod->status,XNTIMED);

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2006-02-14  8:07 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-10 18:03 [Xenomai-core] [shirq] first test results Jan Kiszka
2006-02-11 11:31 ` [Xenomai-core] " Dmitry Adamushko
2006-02-11 12:59   ` Jan Kiszka
2006-02-11 18:58     ` Dmitry Adamushko
2006-02-12 22:36       ` Jan Kiszka
2006-02-13 18:44       ` Jan Kiszka
2006-02-14  8:07         ` Dmitry Adamushko

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.