From d8f3f65be0c1613e150f3c3c57378dd70be28445 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Fri, 12 Nov 1999 21:23:34 +0000 Subject: + Changed validation of the_thread to validation of location. + Modified correct return path to call _ITRON_return_errorno( E_OK ) instead of enabling dispatching and returning E_OK. --- c/src/exec/itron/src/del_tsk.c | 22 ++++++++++------------ c/src/exec/itron/src/frsm_tsk.c | 20 ++++++++------------ c/src/exec/itron/src/sus_tsk.c | 15 ++++++--------- c/src/exec/itron/src/ter_tsk.c | 7 +++---- cpukit/itron/src/del_tsk.c | 22 ++++++++++------------ cpukit/itron/src/frsm_tsk.c | 20 ++++++++------------ cpukit/itron/src/sus_tsk.c | 15 ++++++--------- cpukit/itron/src/ter_tsk.c | 7 +++---- 8 files changed, 54 insertions(+), 74 deletions(-) diff --git a/c/src/exec/itron/src/del_tsk.c b/c/src/exec/itron/src/del_tsk.c index 4514eb6348..c6a1397762 100644 --- a/c/src/exec/itron/src/del_tsk.c +++ b/c/src/exec/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 ); } diff --git a/c/src/exec/itron/src/frsm_tsk.c b/c/src/exec/itron/src/frsm_tsk.c index 2840061dd6..84f3575aa8 100644 --- a/c/src/exec/itron/src/frsm_tsk.c +++ b/c/src/exec/itron/src/frsm_tsk.c @@ -29,27 +29,23 @@ ER frsm_tsk( Objects_Locations location; 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 ) ); 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 ); + _Thread_Resume( the_thread, TRUE ); - _Thread_Enable_dispatch(); - return E_OK; + _ITRON_return_errorno( E_OK ); } - return E_OBJ; /* XXX - Should never get here */ + _ITRON_return_errorno( E_OBJ ); /* XXX - Should never get here */ } diff --git a/c/src/exec/itron/src/sus_tsk.c b/c/src/exec/itron/src/sus_tsk.c index 12ef07ff7b..f2ee948e0b 100644 --- a/c/src/exec/itron/src/sus_tsk.c +++ b/c/src/exec/itron/src/sus_tsk.c @@ -33,24 +33,21 @@ ER sus_tsk( Objects_Locations location; 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 ); - switch ( location ) { case OBJECTS_REMOTE: case OBJECTS_ERROR: _ITRON_return_errorno( _ITRON_Task_Clarify_get_id_error( tskid ) ); case OBJECTS_LOCAL: + + if ( _Thread_Is_executing( the_thread ) ) + _ITRON_return_errorno( E_OBJ ); + _Thread_Suspend( the_thread ); - _Thread_Enable_dispatch(); - return E_OK; + _ITRON_return_errorno( E_OK ); } - return E_OBJ; /* XXX - Should never get here */ + _ITRON_return_errorno( E_OBJ ); } diff --git a/c/src/exec/itron/src/ter_tsk.c b/c/src/exec/itron/src/ter_tsk.c index 070cfcee25..e620338669 100644 --- a/c/src/exec/itron/src/ter_tsk.c +++ b/c/src/exec/itron/src/ter_tsk.c @@ -30,10 +30,10 @@ ER ter_tsk( the_thread = _ITRON_Task_Get( tskid, &location ); - if ( !the_thread ) + if ( location != OBJECTS_LOCAL ) _ITRON_return_errorno( _ITRON_Task_Clarify_get_id_error( tskid ) ); - if ( the_thread == _Thread_Executing ) + if ( _Thread_Is_executing( the_thread ) ) _ITRON_return_errorno( E_OBJ ); if ( _States_Is_dormant( the_thread->current_state ) ) @@ -42,8 +42,7 @@ ER ter_tsk( _Thread_Restart( the_thread, NULL, 0 ); _Thread_Set_state( the_thread, STATES_DORMANT ); - _Thread_Enable_dispatch(); - return E_OK; + _ITRON_return_errorno( E_OK ); } 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 ); } diff --git a/cpukit/itron/src/frsm_tsk.c b/cpukit/itron/src/frsm_tsk.c index 2840061dd6..84f3575aa8 100644 --- a/cpukit/itron/src/frsm_tsk.c +++ b/cpukit/itron/src/frsm_tsk.c @@ -29,27 +29,23 @@ ER frsm_tsk( Objects_Locations location; 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 ) ); 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 ); + _Thread_Resume( the_thread, TRUE ); - _Thread_Enable_dispatch(); - return E_OK; + _ITRON_return_errorno( E_OK ); } - return E_OBJ; /* XXX - Should never get here */ + _ITRON_return_errorno( E_OBJ ); /* XXX - Should never get here */ } diff --git a/cpukit/itron/src/sus_tsk.c b/cpukit/itron/src/sus_tsk.c index 12ef07ff7b..f2ee948e0b 100644 --- a/cpukit/itron/src/sus_tsk.c +++ b/cpukit/itron/src/sus_tsk.c @@ -33,24 +33,21 @@ ER sus_tsk( Objects_Locations location; 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 ); - switch ( location ) { case OBJECTS_REMOTE: case OBJECTS_ERROR: _ITRON_return_errorno( _ITRON_Task_Clarify_get_id_error( tskid ) ); case OBJECTS_LOCAL: + + if ( _Thread_Is_executing( the_thread ) ) + _ITRON_return_errorno( E_OBJ ); + _Thread_Suspend( the_thread ); - _Thread_Enable_dispatch(); - return E_OK; + _ITRON_return_errorno( E_OK ); } - return E_OBJ; /* XXX - Should never get here */ + _ITRON_return_errorno( E_OBJ ); } diff --git a/cpukit/itron/src/ter_tsk.c b/cpukit/itron/src/ter_tsk.c index 070cfcee25..e620338669 100644 --- a/cpukit/itron/src/ter_tsk.c +++ b/cpukit/itron/src/ter_tsk.c @@ -30,10 +30,10 @@ ER ter_tsk( the_thread = _ITRON_Task_Get( tskid, &location ); - if ( !the_thread ) + if ( location != OBJECTS_LOCAL ) _ITRON_return_errorno( _ITRON_Task_Clarify_get_id_error( tskid ) ); - if ( the_thread == _Thread_Executing ) + if ( _Thread_Is_executing( the_thread ) ) _ITRON_return_errorno( E_OBJ ); if ( _States_Is_dormant( the_thread->current_state ) ) @@ -42,8 +42,7 @@ ER ter_tsk( _Thread_Restart( the_thread, NULL, 0 ); _Thread_Set_state( the_thread, STATES_DORMANT ); - _Thread_Enable_dispatch(); - return E_OK; + _ITRON_return_errorno( E_OK ); } -- cgit v1.2.3