[ECOS] How does multi-threading happen?

Jonathan Larmour jlarmour@redhat.com
Tue May 14 12:57:00 GMT 2002

HuangQiang wrote:
> Hi all:
>     In eCOS after a thread is created and resume, the actual user's program
> will be run by calling hal_thread_load_context() and branch to the user's
> thread. But if for two equal priority thread how does the thread switching
> happens? How does the thread know when to switch to another thread if the
> other is the same priority?  where does the scheduler take care of the
> thread switching(equal priority threads)? (arm e7t)
> Thanks a lot for your help.

It happens either when the running thread blocks, or a clock interrupt is
received and the kernel decides a timeslice needs to happen. In either
case, what happens is that the scheduler will have been locked by e.g. a
mutex or semaphore, or for a timeslice by the interrupt code, and then the
rescheduling happens in the code that unlocks the scheduler.

Red Hat, Rustat House, Clifton Road, Cambridge, UK. Tel: +44 (1223) 271062
--[ "You can complain because roses have thorns, or you ]--
--[  can rejoice because thorns have roses." -Lincoln   ]-- Opinions==mine

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