[ECOS] Will unlock_inner() be called twice during Real Time Clock Interrupt in ecos?

Nick Garnett nickg@ecoscentric.com
Tue Sep 24 13:54:00 GMT 2002


"Qiang Huang" <jameshq@liverpool.ac.uk> writes:

> As I posted similar subject onto ecos mailing list before, still hasn't be
> clearly described.
> 
> Question:
> When a Real Time clock interrupt happens: clock tick.
> 
> interrupt VSR --> .. --> interrupt_end() -->  Cyg_Scheduler::unlock() -->
> **unlock_inner()** --> Cyg_Interrupt::call_pending_DSRs() --> calls to
> Cyg_RealTimeClock::dsr() --> rtc->tick( ) --> Cyg_Scheduler::unlock()-->
> **unlock_inner()** --> now comes back again, will it turn out to be
> recursive call? or the next time it won't drops into
> Cyg_RealTimeClock::dsr() again (which one is the fact??). but seems
> unlock_inner() has been called twice during a real time clock interrupt.
> 

You missed the call in rtc->tick() to Cyg_Scheduler::lock(). Since the
scheduler lock is not being zeroed at this point
Cyg_Scheduler::unlock() will not call unlock_inner().

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



More information about the Ecos-discuss mailing list