This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Does eCos supports chained interrupt?


Jonathan Larmour <jifl@eCosCentric.com> writes:

> Zi Zhou wrote:
> > Hi Gary,
> > 
> > My understanding about CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
> > is different from what I want to achieve here.  e.g. if my platform supports 5
> > interrupt
> > vectors,  each is for different peripherial devices, among them one is to service 3
> > PCI devices.
> > If I enable CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN, all these 5 interrupt vectors
> > will be chained together, so all my ISRs ( including ISRs for the PCI devices, uart,
> > etc ) need to
> > check if the interrupt is for it to process.
> 
> That shouldn't be the case. There isn't a single ISR for *every*
> interrupt... there's one ISR capable of chaining installed on *each*
> interrupt separately. It's the same _function_ installed on each
> interrupt, but it is passed different data so that it calls different
> chained handlers for each interrupt.
> 

Well, actually that depends. Some HALs do as you say, and chain off
each interrupt, others compress all interrupt vectors into one chain.
It all depends to some extent on what the underlying hardware does,
and what the HAL author decided to do.

The chaining mechanism is, to be honest, a bit of a mess, since its
semantics are not well defined, and few existing driver ISRs do the
right things to allow them to work with chained interrupts.

-- 
Nick Garnett                    eCos Kernel Architect
http://www.ecoscentric.com/     The eCos and RedBoot experts


-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]