<div dir="ltr">Hi,<br><div><br></div><div>Can someone please give a brief overview of what these three lines aim to achieve:</div><div><br></div><div>  } else if ( _Thread_Is_life_change_allowed( previous ) ) {<br>    _Thread_Add_life_change_request( the_thread );<br>    _Thread_State_release( the_thread, &lock_context );<br><br>    _Thread_Finalize_life_change( the_thread, priority );<br></div><div><br></div><div>492 threadrestart.c</div><div><br></div><div>I am asking because in line <a href="https://git.rtems.org/rtems/tree/testsuites/sptests/sp02/init.c#n92">92</a> of <a href="https://git.rtems.org/rtems/tree/testsuites/sptests/sp02/init.c">sp02</a>, this _Thread_Cancel function is called, and because of _Thread_Add_life_change_request( the_thread ) ->_Thread_Set_state_locked -> _Scheduler_Block is called and because of _Thread_Finalize_life_change->_Thread_Remove_life_change_request->_Thread_Clear_state_locked->_Scheduler_Unblock is called, which is contradictory. </div><div><br></div><div>Thanks,</div><div>Richi.</div></div>