summaryrefslogtreecommitdiffstats
path: root/c/src/exec/itron/src/ter_tsk.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/exec/itron/src/ter_tsk.c')
-rw-r--r--c/src/exec/itron/src/ter_tsk.c27
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 );
}