diff options
Diffstat (limited to '')
-rw-r--r-- | c/src/exec/itron/src/ter_tsk.c | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/c/src/exec/itron/src/ter_tsk.c b/c/src/exec/itron/src/ter_tsk.c index e620338669..6c6f4c85c2 100644 --- a/c/src/exec/itron/src/ter_tsk.c +++ b/c/src/exec/itron/src/ter_tsk.c @@ -29,20 +29,25 @@ ER ter_tsk( Objects_Locations location; the_thread = _ITRON_Task_Get( tskid, &location ); - - if ( location != OBJECTS_LOCAL ) - _ITRON_return_errorno( _ITRON_Task_Clarify_get_id_error( tskid ) ); - - if ( _Thread_Is_executing( the_thread ) ) - _ITRON_return_errorno( E_OBJ ); + switch ( location ) { + case OBJECTS_REMOTE: + case OBJECTS_ERROR: + return _ITRON_Task_Clarify_get_id_error( tskid ); + + case OBJECTS_LOCAL: + + if ( _Thread_Is_executing( the_thread ) ) + _ITRON_return_errorno( E_OBJ ); - if ( _States_Is_dormant( the_thread->current_state ) ) - _ITRON_return_errorno( E_OBJ ); + if ( _States_Is_dormant( the_thread->current_state ) ) + _ITRON_return_errorno( E_OBJ ); - _Thread_Restart( the_thread, NULL, 0 ); - _Thread_Set_state( the_thread, STATES_DORMANT ); + _Thread_Restart( the_thread, NULL, 0 ); + _Thread_Set_state( the_thread, STATES_DORMANT ); + break; + } - _ITRON_return_errorno( E_OK ); + _ITRON_return_errorno( E_OK ); } |