This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: isr() and dsr() running environment?
- From: Peter Vandenabeele <peter dot vandenabeele at mind dot be>
- To: Nick Garnett <nickg at ecoscentric dot com>
- Cc: jameshq at liverpool dot ac dot uk, ecos-discuss at sources dot redhat dot com
- Date: Mon, 21 Oct 2002 17:51:28 +0200
- Subject: Re: [ECOS] isr() and dsr() running environment?
- Organisation: Mind NV -- http://mind.be/ -- Leuven/Belgium
- References: <200210211048.g9LAmLD28451@webmail2.liv.ac.uk> <m3ptu3svfc.fsf@ecoscentric.com>
- Reply-to: Peter Vandenabeele <peter dot vandenabeele at mind dot be>
On Mon, Oct 21, 2002 at 03:44:55PM +0100, Nick Garnett wrote:
> <jameshq@liverpool.ac.uk> writes:
>
> > Thanks a lot.
> >
> > How if DSR1() interrupted by ext_IRQ2, when ISR2( ) exit how does
> > DSR1( ) resume? as the flow diagram(is the following flow diagram
> > correct?):
> >
> > ext_IRQ1 --> ISR1() --> DSR1() --> interrupted by ext_IRQ2 --> ISR2()
> > --> call interrupt_end() --> call pending DSRs but now DSR2 won't run
> > here because DSR1 not finished yet. (right?)
>
> Not quite. Since the scheduler lock is >1 here, unlock_inner() will
> not even try to run DSRs.
>
> > --> return from ext_IRQ1
^
2 ??
(ISR1() was already fully finished before DSR1() even started ?)
> > --> back to interrupted DSR1( ) and continues excution --> exit from
> > DSR1( ) --> still in Cyg_Interrupt::call_pending_DSRs_inner(void)
> > because DSR2 still not run --> run DSR2( ) --> finish DSR2( ) -->
> > return from ext_IRQ1 VSR (e.g Sparc target it returns from the call to
> > "hal_default_interrupt_vsr" when the time ext_IRQ1 happens.)
Peter
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss