diff options
Diffstat (limited to 'cpukit/rtems/src')
-rw-r--r-- | cpukit/rtems/src/taskstart.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/cpukit/rtems/src/taskstart.c b/cpukit/rtems/src/taskstart.c index 3700139da3..e9ff378614 100644 --- a/cpukit/rtems/src/taskstart.c +++ b/cpukit/rtems/src/taskstart.c @@ -58,6 +58,7 @@ rtems_status_code rtems_task_start( { register Thread_Control *the_thread; Objects_Locations location; + bool successfully_started; if ( entry_point == NULL ) return RTEMS_INVALID_ADDRESS; @@ -66,13 +67,22 @@ rtems_status_code rtems_task_start( switch ( location ) { case OBJECTS_LOCAL: - if ( _Thread_Start( - the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) { - _Objects_Put( &the_thread->Object ); + successfully_started = _Thread_Start( + the_thread, + THREAD_START_NUMERIC, + entry_point, + NULL, + argument, + NULL + ); + + _Objects_Put( &the_thread->Object ); + + if ( successfully_started ) { return RTEMS_SUCCESSFUL; + } else { + return RTEMS_INCORRECT_STATE; } - _Objects_Put( &the_thread->Object ); - return RTEMS_INCORRECT_STATE; #if defined(RTEMS_MULTIPROCESSING) case OBJECTS_REMOTE: |