Development Plan Proposal for Unifying Interrupt and PCI APIs
Eric Valette
eric.valette at free.fr
Mon Oct 25 12:43:34 UTC 2004
Joel Sherrill <joel at OARcorp.com> wrote:
> This gets mentioned repeatedly but every time one of these drivers is
> benchmarked, it performs well.
Sure but it should perform even better : the IRQ API of thoses systems
being more complex and more time consumming, if it perform the same now
that I'vebeen optimising IRQ path to detriment of functionnality,
restore the functionnality and then redo the benchmarks...
> The use of callouts for writing registers is equivalent to the
> use of overloaded, not inlined members in a C++ class.
Be more concrete to help people to understand : imagine you have, to
read 10 registers to hanlde an interrupt, using libchip, you will
replace 10 asm instruction (say inb,inw,inl or even better with IO
mmaped access) by 10 function calls. I maintain :
1) This is not really efficient,
2) This could be doen the other way round without changing the purpose
of libchip like it is done on most OS...
I will not even mention the fact that LynxOS has MMU support which
complexify drivers code quite a bit...
> Either structure still puts the bulk of the ISR in portable space.
Frankly joel, the problem for RTEMS today is not lacking a portable IRQ
layer, the problem RTEMS is facing today is to get more drivers for more
generic things that are required for embedded devices today like :
1) Useable disk drivers,
2) USB (not only slave),
3) Video,
Do you imagine having to make RTEMS work on a telephone or an MP3/Video
portable player with a disk?
> At some point, everyone is an old developer (even myself) so I hate
> to point fingers.
The intend was not to point fingers just to explain how things ended up
being the way they are from my personnal point of view.
> There is nothing to stop the generic driver from having help from
> the BSP in the interrupt service routine.
Practically there is but until you try completely you will not be
convinced I guess. I recall VxWorks has a different API on different CPU
familly and Linux has totally different implementation for the same API.
Do you think they have done this without many other people tring to make
the code converge again?
-- eric
More information about the users
mailing list