From: Philippe Gerum <rpm@xenomai.org>
To: Dirk Roloff <roloff@domain.hid>
Cc: adeos-main@gna.org
Subject: Re: [Adeos-main] interrupt latency
Date: Mon, 23 Feb 2004 09:48:22 +0100 [thread overview]
Message-ID: <1077526102.637.36.camel@domain.hid> (raw)
In-Reply-To: <200402230322.13218.roloff@domain.hid>
On Mon, 2004-02-23 at 03:22, Dirk Roloff wrote:
> Am Montag, 23. Februar 2004 00:52 schrieb Philippe Gerum:
> > On Mon, 2004-02-23 at 00:35, Dirk Roloff wrote:
> > > Hi List,
> > >
> > > I ve got the following problem:
> > >
> > > I have to write a driver for linux for a receiver-board.
> --- schnipp ----
> >
> > It would be interesting to know the flags passed to
> > adeos_virtualize_irq(). In any case, either the 4th arg should pass
> > IPIPE_PASS_MASK, or you realtime_handler() routine should call
> > adeos_propagate_irq(irq).
> Philippe:
>
> the exactly code is:
> if( 0 != adeos_virtualize_irq( irq[i], &rt_amcc_irq_handler, NULL,
> IPIPE_PASS_MASK | IPIPE_HANDLE_MASK) )
>
> i want to handle and pass it down the pipe.
>
> But i give propagate a try ... not realy better ...
> Now a second IRQ 4 will be delivert to the linux handler.
That's normal. Either set IPIPE_PASS_MASK if you want Adeos to propagate
the incoming IRQ unconditionally, _or_ don't set it if you want your
handler to decide dynamically of whether the propagation should take
place or not on a per-IRQ basis using adeos_propagate_irq().
> Only one IRQ 1 to the realtime (its masked out in PIC when entering the
> realtime)
That's ok too. By default on the x86 port, IRQs are mask & acked upon
receipt before the IRQ flows down the pipeline, except the 8254 timer
which is only acked.
> Could it be that this will block all other IRQ at PIC level ?
>
Here are the typical actions taken upon IRQ receipt with a single
prioritary domain running above Linux in the pipeline:
hw IRQ =>
[Adeos primary handler]
=> mask and ack (from now, IRQ is masked at 8259 level)
=> pipeline walk (all pending IRQs)
=> realtime_handler(irq)
[Your processing]
adeos_propagate_irq(irq) (unless you set
IPIPE_PASS_MASK)
=> Linux handler()
[Linux's do_IRQ(irq)]
end_irq() (which re-enables the IRQ line at the 8259 level)
If you want to re-enable the IRQ line earlier in the process (i.e.
before Linux's regular handler is run), then you can do this by calling
adeos_control_irq(irq,0,IPIPE_ENABLE_MASK) in your real-time handler.
You may want to have a look at the Adeos CVS, under linux/examples:
there are a set of testing and measurement programs illustrating how the
pipeline shall be controlled.
Btw: which Adeos version are you using?
> Dirk.
>
>
>
>
> _______________________________________________
> Adeos-main mailing list
> Adeos-main@domain.hid
> http://mail.nongnu.org/mailman/listinfo/adeos-main
--
Philippe.
next prev parent reply other threads:[~2004-02-23 8:48 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-22 23:35 [Adeos-main] interrupt latency Dirk Roloff
2004-02-22 23:52 ` Philippe Gerum
2004-02-23 2:22 ` Dirk Roloff
2004-02-23 8:48 ` Philippe Gerum [this message]
2004-02-23 18:06 ` Dirk Roloff
2004-02-23 19:53 ` Philippe Gerum
2004-02-24 3:48 ` Dirk Roloff
-- strict thread matches above, loose matches on Subject: below --
2004-02-22 23:41 Dirk Roloff
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=1077526102.637.36.camel@domain.hid \
--to=rpm@xenomai.org \
--cc=adeos-main@gna.org \
--cc=roloff@domain.hid \
/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.