From: Dmitry Adamushko <dmitry.adamushko@domain.hid>
To: Philippe Gerum <rpm@xenomai.org>
Cc: xenomai@xenomai.org
Subject: [Xenomai-core] Re: [PATCH, RFC] nucleus:shared irq and possible ipipe problem
Date: Mon, 9 Jan 2006 22:14:27 +0200 [thread overview]
Message-ID: <b647ffbd0601091214p18fbd37s@domain.hid> (raw)
In-Reply-To: <43C0F792.3000300@domain.hid>
[-- Attachment #1: Type: text/plain, Size: 2203 bytes --]
On 08/01/06, Philippe Gerum <rpm@xenomai.org> wrote:
>
> > [skiped]
> In ipipe_sync_stage() :
> > ...
> > if (--cpudata->irq_pending_hits[irq] == 0) {
> > __clear_bit(rank,
> > &cpudata->irq_pending_lo[level]);
> > ipipe_mark_irq_delivery(ipd,irq,cpuid);
> > }
> > (*)
> >
> > // run the corresponding isr handler
> >
> > This code drops the irq_pending_hits to 0 before running the handler.
> >
>
> > Doesn't it make the following code wrong ?
> >
> > for (_cpuid = 0; _cpuid < nr_cpus; _cpuid++)
> > while (ipd->cpudata[_cpuid].irq_pending_hits[irq] > 0)
> > cpu_relax();
> >
> >
> > as the handler still can be running / or even about to be run when
> > ipd->cpudata[_cpuid].irq_pending_hits[irq] is already 0.
> >
> > We can remove the (*) code at the end of ipipe_sync_stage() so that
> > irq_pending_hits[irq] may become 0 only after the corresponding isr
> > handler has completed.
> >
>
> I don't like the idea of having the interrupt bookkeeping stuff
> incompletely updated while calling a handler that might sleep and/or
> migrate to another CPU.
>
> Another option would be to check for SYNC flag; the syncer sets it
> before entering the dispatch loop.
It's unset for all domains but root when the corresponding irq handler is
running.
ipipe_sync_stage() :
...
__clear_bit(IPIPE_SYNC_FLAG, &cpudata->status);
ipd->irqs[irq].handler(irq, ipd->irqs[irq].cookie);
__set_bit(IPIPE_SYNC_FLAG, &cpudata->status);
So it doesn't help here as it is used now.
Ok, so far I have built all synchronization completely on the nucleus layer,
provided that the "cookie" param is not used as it is passed to the handler
but is taken via the rthal_irq_cookie() service being in a protected
section.
The disadvantage so far is that the recently extended adeos irq interface is
not used as it is supposed to be (the "cookie" argument of the handler).
I'll post the current version of the patch in the separate mail.
--
>
> Philippe.
>
--
Best regards,
Dmitry Adamushko
[-- Attachment #2: Type: text/html, Size: 3761 bytes --]
prev parent reply other threads:[~2006-01-09 20:14 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-31 12:37 [Xenomai-core] [PATCH, RFC] nucleus:shared irq and possible ipipe problem Dmitry Adamushko
2005-12-31 14:59 ` [Xenomai-core] " Philippe Gerum
[not found] ` <b647ffbd0601021042h140c0f7dk@domain.hid>
2006-01-02 18:43 ` Dmitry Adamushko
2006-01-05 19:00 ` Philippe Gerum
[not found] ` <b647ffbd0601061202g4414bb86k@domain.hid>
2006-01-06 20:06 ` Dmitry Adamushko
2006-01-07 19:05 ` Dmitry Adamushko
2006-01-08 11:29 ` Philippe Gerum
2006-01-09 20:14 ` Dmitry Adamushko [this message]
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=b647ffbd0601091214p18fbd37s@domain.hid \
--to=dmitry.adamushko@domain.hid \
--cc=rpm@xenomai.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.