From 1506658c07ad05dd58e2781af4d3df67c90b9f70 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 8 Jan 2016 12:11:03 +0100 Subject: score: Simplify _Thread_Start() --- cpukit/score/src/threadcreateidle.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) (limited to 'cpukit/score/src/threadcreateidle.c') diff --git a/cpukit/score/src/threadcreateidle.c b/cpukit/score/src/threadcreateidle.c index e9d12dc963..3430881f39 100644 --- a/cpukit/score/src/threadcreateidle.c +++ b/cpukit/score/src/threadcreateidle.c @@ -21,20 +21,14 @@ #include #include #include +#include #include static void _Thread_Create_idle_for_cpu( Per_CPU_Control *cpu ) { - Thread_Entry_information entry = { - .adaptor = _Thread_Entry_adaptor_idle, - .Kinds = { - .Idle = { - .entry = rtems_configuration_get_idle_task() - } - } - }; - Objects_Name name; - Thread_Control *idle; + Objects_Name name; + Thread_Control *idle; + const Scheduler_Control *scheduler; name.name_u32 = _Objects_Build_name( 'I', 'D', 'L', 'E' ); @@ -67,7 +61,22 @@ static void _Thread_Create_idle_for_cpu( Per_CPU_Control *cpu ) cpu->heir = cpu->executing = idle; - _Thread_Start( idle, &entry, cpu ); + idle->Start.Entry.adaptor = _Thread_Entry_adaptor_idle; + idle->Start.Entry.Kinds.Idle.entry = rtems_configuration_get_idle_task(); + + _Thread_Load_environment( idle ); + + scheduler = _Scheduler_Get_by_CPU( cpu ); + +#if defined(RTEMS_SMP) + if (scheduler == NULL) { + return; + } +#endif + + idle->current_state = STATES_READY; + _Scheduler_Start_idle( scheduler, idle, cpu ); + _User_extensions_Thread_start( idle ); } void _Thread_Create_idle( void ) -- cgit v1.2.3