diff options
Diffstat (limited to 'cpukit/itron/src/del_tsk.c')
-rw-r--r-- | cpukit/itron/src/del_tsk.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/cpukit/itron/src/del_tsk.c b/cpukit/itron/src/del_tsk.c index 4514eb6348..c6a1397762 100644 --- a/cpukit/itron/src/del_tsk.c +++ b/cpukit/itron/src/del_tsk.c @@ -30,26 +30,24 @@ ER del_tsk( ER result; the_thread = _ITRON_Task_Get( tskid, &location ); - - if (!the_thread) - _ITRON_return_errorno( _ITRON_Task_Clarify_get_id_error( tskid ) ); - - if ( the_thread == _Thread_Executing ) - _ITRON_return_errorno( E_OBJ ); - - if ( !_States_Is_dormant( the_thread->current_state ) ) - _ITRON_return_errorno( E_OBJ ); - switch ( location ) { case OBJECTS_REMOTE: case OBJECTS_ERROR: _ITRON_return_errorno( _ITRON_Task_Clarify_get_id_error( tskid ) ); + break; 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 ); + result = _ITRON_Delete_task( the_thread ); + break; } - _Thread_Enable_dispatch(); - return E_OK; + _ITRON_return_errorno( E_OK ); } |