The eCos, QNX, ChorusOs irq handling API => resent message has been trcunacted due to a linux crash
gregory.menke at gsfc.nasa.gov
gregory.menke at gsfc.nasa.gov
Thu Feb 20 21:47:33 UTC 2003
Valette Eric writes:
> So I propose to do the following :
>
> 1) Express a first set of requirements with the help of the maximum users,
> 2) Clean them up via pondering priorities,
> 3) Propose only then an API,
> 4) See how the API does fullfill the requirements,. If we find
> impossibilities, then either remove the requirement, let is open to BSP
> specific implementations, and at least clerly document the limitation of
> the API,
> 5) Check that the proposed API is at least implementable on mpc8XX,
> Intel, motorola shared and 68K and MIPS as we have people ready to test it,
I think this is the right approach.
>
> If we do not take a methodological approach for making the job, I will
> simply shut up and let you guys do the work and latter support it. I
> have indeed provided support for my API for 5 years :-) And anyway,
> whatever you define, I'm able to recode my own implementation without
> needing help.
And I'll add that if whatever the api ends up being is wonderful and
complete, yet is too much more complicated than the existing PPC
interrupt handling, I don't think we will have improved much- and I
for one won't be highly motivated to retrofit it onto our slow MIPS
platform.
I'll augment Eric's requirements with mine;
>
> PS : my own set of requirements by importance order :
>
> 0) Interrupt latency should be keep to minimal and should not rely
> on *each* handler to perform specific actions (e.g EOI),
- This is of top importance for me. I'll also add that the latency
variablity should be kept as small as possible.
> 1) There should be a way to mask a set of interrupt when a
> particular interrupt occurs) via a BSP dependent and *reconfigurable*
> means. Individual IRQ priorities having no meaning on most processor (e.
> Intel, PPC, ARM), a table defining priorities one way or other should be
> used. This table can be static (as on PPC) or better dynamic as on
> Intel,
- An interrupt priority table is important for us. Right now the MIPS
bsp's will have to code their own isr vectoring routine, which is a
very miserable approach to arranging priorities. Our interrupts
tend to be fixed once defined, so dynamic features aren't as
important.
> 2) It should be as simple as possible to write drivers and in
> particular, it should not require knowledge of anything except the
> target hardware itself and its memory/IO mapping (understand I do not
> want to have to know about the PIC's specificities)
- This is not of prime importance for us, but we don't do high-level
drivers either. Our isr's tend to be directly associated with
particular gizmos whos interrupt re-arming is something special in
any case.
> 3) API documentation should clearly define in what state the
> handler is called (what should have been done by the BSP generic irq
> code before the handler is called) and what primitive a ISR handler is
> allowed to call. In particular we must define what has been done on
> warious PICs and what has to be performed by the handler itself,
- I think this is critical if we're implementing something like an
abstract isr/exception handling scheme.
> 4) We have a strategy concerning interrupt sharing. The hability to
> get the previous handler connected is implemented as the minimalistic
> way of sharing...
- We don't use sharing, but I think reasonably supporting it is
essential. Once stuff like USB drivers start showing up in RTEMS,
this will be very handy.
> 5) The API, should provide a mean for generic code to mask
> selective IRQ without knowing the detail of the hardware,
- We wouldn't use this much, but I could see how its useful- and
maintaining an abstract interface to hardware as obnoxious as PIC's
tend to be will be extremely helpful.
> 6) disconnecting a handler should call a callback routine inside
> initial driver code,
- I think this will be useful in future.
If I had to choose 3 requirements I most need they would be;
- Minimal and consistent latency
- Interrupt priority table (at least static, preferably dynamic)
- Interrupt sharing (via some kind of isr chaining feature)
and would list the rest as desirable.
Gregm
More information about the users
mailing list