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: new kernel: question


张 亮 <johnsonest at hotmail dot 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


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