From: Philippe Gerum <rpm@xenomai.org>
To: Lowell Gilbert <kludge@be-well.ilk.org>, xenomai@xenomai.org
Subject: Re: [Xenomai] interrupt service
Date: Thu, 26 Feb 2015 12:19:38 +0100 [thread overview]
Message-ID: <54EF014A.9000902@xenomai.org> (raw)
In-Reply-To: <44vbipk8m9.fsf@be-well.ilk.org>
On 02/25/2015 10:02 PM, Lowell Gilbert wrote:
> Lowell Gilbert <kludge@be-well.ilk.org> writes:
>
>> Philippe Gerum <rpm@xenomai.org> writes:
>>
>>> # echo 1024 > /proc/ipipe/trace/back_trace_points
>>>
>>> Then run the test. The output of /proc/ipipe/trace/frozen may help in
>>> figuring out what happens.
>>
>> I haven't had a chance to look at it yet, but it's in:
>>
>> http://be-well.ilk.org/~lowell/projects/ipipe.trace.output.txt
>
> I've got another one that seems more helpful:
> http://be-well.ilk.org/~lowell/projects/xenomai/ipipe.trace2.output.txt
>
Your test code in user-space seems to enable the timing IRQ only for a
very short time, between the write and read calls to the driver which
happen in sequence.
Those two interrupts are very close in the time line, i.e. 42 us:
:| +begin 0x90000000 -68 0.960 __irq_svc+0x44
(ipipe_unstall_root+0x88)
...
:| + begin 0x90000000 -26+ 1.006 __irq_svc+0x44
(__ipipe_restore_head+0xec)
The trace also reveals a proper wake up and rescheduling sequence from
timestamp -51 and on:
:| # func -51+ 1.178 top_half_isr+0x10
[tut02_skeleton_drv] (xnintr_irq_handler+0x158)~
:| # func -50+ 1.920 rtdm_event_signal+0x14
(top_half_isr+0x2c [tut02_skeleton_drv])
:| # func -48+ 2.139 xnsynch_flush+0x14
(rtdm_event_signal+0x13c)
:| # func -46+ 1.324 xnpod_resume_thread+0x14
(xnsynch_flush+0x178)
:| # [ 0] -<?>- 0 -44+ 3.774 xnpod_resume_thread+0x140
(xnsynch_flush+0x178)
<snip>
:| # func -32+ 1.523 __xnpod_schedule+0x14
(xnintr_irq_handler+0x3a4)
:| # [ 0] -<?>- -1 -30 0.953 __xnpod_schedule+0x1d4
(xnintr_irq_handler+0x3a4)
Then a second interrupt, which happens before the RTDM task had a chance
to block on rtdm_event_wait() again, therefore no rescheduling has to
take place since the RTDM task is still in ready state:
:| # func -12 0.894 top_half_isr+0x10
[tut02_skeleton_drv] (xnintr_irq_handler+0x158)
:| # func -11+ 1.251 rtdm_event_signal+0x14
(top_half_isr+0x2c [tut02_skeleton_drv])
:| # func -10+ 1.860 xnsynch_flush+0x14
(rtdm_event_signal+0x13c)
Raising the debug flag we have added in the test driver right after
simple_rtdm_read() shuts down the timing interrupt source instead, may
confirm this assumption by looking at the generated traces.
Wouldn't this change make sense in the user code?
--- attachment-0001.c~ 2015-02-25 09:17:43.496445640 +0100
+++ attachment-0001.c 2015-02-26 11:43:09.795191765 +0100
@@ -70,8 +70,8 @@
}
rt_dev_write(device, "h", 2);
- size = rt_dev_read (device, (void *)buf, 1024);
sleep(1);
+ size = rt_dev_read (device, (void *)buf, 1024);
printf("%s: '%s'\n", __func__, buf);
--
Philippe.
next prev parent reply other threads:[~2015-02-26 11:19 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-18 22:03 [Xenomai] interrupt service Lowell Gilbert
2015-02-18 22:08 ` Gilles Chanteperdrix
2015-02-19 4:44 ` Lowell Gilbert
2015-02-19 21:06 ` Lowell Gilbert
2015-02-20 19:38 ` Lowell Gilbert
2015-02-20 22:57 ` Gilles Chanteperdrix
2015-02-24 23:01 ` Lowell Gilbert
2015-02-24 23:34 ` Gilles Chanteperdrix
2015-02-25 16:22 ` Lowell Gilbert
2015-02-25 17:34 ` Philippe Gerum
2015-02-25 18:35 ` Philippe Gerum
2015-02-25 20:41 ` Lowell Gilbert
2015-02-25 21:02 ` Lowell Gilbert
2015-02-26 11:19 ` Philippe Gerum [this message]
2015-02-26 16:38 ` Lowell Gilbert
2015-02-26 17:26 ` Gilles Chanteperdrix
2015-02-26 17:56 ` Philippe Gerum
2015-02-26 19:25 ` Lowell Gilbert
2015-02-26 20:11 ` Gilles Chanteperdrix
2015-02-26 21:58 ` Lowell Gilbert
2015-02-26 22:37 ` Gilles Chanteperdrix
2015-02-26 23:12 ` Lowell Gilbert
2015-02-26 23:09 ` Philippe Gerum
2015-03-06 22:57 ` Lowell Gilbert
2015-03-06 22:58 ` Lowell Gilbert
2015-03-08 15:52 ` Gilles Chanteperdrix
2015-03-09 13:28 ` Lowell Gilbert
2015-02-26 20:24 ` Philippe Gerum
2015-02-26 22:55 ` Lowell Gilbert
2015-02-26 23:17 ` Daniele Nicolodi
2015-02-26 23:21 ` Philippe Gerum
2015-02-27 7:15 ` Tom Evans
2015-02-25 8:30 ` Philippe Gerum
2015-02-25 9:36 ` Philippe Gerum
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54EF014A.9000902@xenomai.org \
--to=rpm@xenomai.org \
--cc=kludge@be-well.ilk.org \
--cc=xenomai@xenomai.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.