[ECOS] new kernel: question

Nick Garnett nickg@ecoscentric.com
Fri Mar 7 15:18:00 GMT 2003

张 亮 <johnsonest@hotmail.com> writes:

> Hi, Jonathan,    After thinking carefully about new kernel of eCos, I
> feel that allowing to  rescheduling when scheduler is locked is more
> safe for tcp/ip stack and other complex app,but NOT safe to this case:
> system has three threads:    (1) thread1    (2) thread2    (3) system
> idle thread      thread2 is sleeping for resource which will given by
> thread1,thread1 is running.Before thread1 active thread2, it wants to
> wait a event(post by DSR) with scheduler's lock >1, so thread1 is
> rescheduled,but during rescheduling, *the* DSR was post,but because
> new lock!=0,DSR will not be called,so only idle thread is
> active.thread1 and thread2 will  be  dead locked unless other ISR and
> DSR was post again.Of course,real time clock will unlock this
> state.hehe!    It is a challenge to fix this problem. BRS/johnsonest

No, the scheduler lock is essentially a per-thread variable. When
control eventually passes to the idle thread, the lock will be zeroed
and the DSR will run. It will then wake up thread1. 

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

More information about the Ecos-discuss mailing list