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: Re: DSR question


"Tim Michals" <t.michals@attbi.com> writes:

> > > yes this is what is happening, the DSR unmasks the
> > > interrupt causing the the ISR to retrigger before the
> > > DSR is completed.  So this can cause a deadlock issue?
> > > I thought this should just retrigger the DSR again?
> >
> > While in theory eCos should be able to handle this, it is not really
> > designed to deal with it. The exact behaviour is undefined.
> >
> > Depending on things like exactly where in the ISR and DSR the
> > interrupt mask and unmask come, it is possible for a continuously
> > interrupting source to stack up frames and maybe overflow the
> > interrupt stack. This is the most likely cause of your problems.
> >
> One last question, sorry to keep going on...  This also could happen if
> multple sources were triggering at the same time?  Of if the DSR is slow to
> processing the interrupt?  Just want to make sure to try to void this as
> much as possible.

With multiple sources you can work out the number of simultianeous
ISRs that might occur and size the stack appropriately. If one source
is expected to generate a burst of interrupts then you have to also
understand exactly what the consequences of manipulating the interrupt
masks in the ISR and DSR will have. In such situations it is often
better to poll for the burst in the ISR or DSR. Very high interrupt
rates often need special handling, otherwise you can end up not making
any progress in the rest of the code.

-- 
Nick Garnett - eCos Kernel Architect
http://www.eCosCentric.com/

-- 
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]