<div dir="ltr">Hi,<div><br></div><div>I am trying to map out how a task gets scheduled according to a scheduling algorithm once a user writes rtems_task_create() and later rtems_task_start() in the source file.</div><div><br></div><div>On debugging with gdb, I came to realize that the </div><div><br></div><div>rtems_task_start() function calls _Thread_Start() (cpukit/rtems/src/taskstart.c : 56) then _Thread_Start() calls  _Thread_Dispatch_enable() ( cpukit/score/src/threadstart.c : 50 ) then </div><div>_Thread_Dispatch_enable() calls _Thread_Do_dispatch( ) (cpukit/score/src/threaddispatch.c : 377)</div><div>and _Thread_Do_dispatch calls  _Thread_Get_heir_and_make_it_executing() (threaddispatch.c : 282).</div><div><br></div>_Thread_Get_heir_and_make_it_executing( cpu_self ) forcefully executes the heir thread on the cpu_self. (cpukit/include/rtems/score/threadimpl.h : 1117)<br><div><br></div><div>If I am right, this flow of code makes the thread created by rtems_task_create(..., id) execute on a CPU when rtems_task_start(..., id) is called.  Shouldn't this decision of executing a thread on any CPU be in the hands of the scheduler?  I'd be grateful if someone could provide their views on this.</div><div><br></div><div>Also, what is thread_dispatch_disable_level? </div><div> </div><div>Please know that I skipped reading some if conditions and some code related to ISRs and other things that weren't directly related to scheduling.</div><div><br></div><div>Thanks,</div><div>Richi.</div><div> <br></div></div>