summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-12 21:23:34 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-12 21:23:34 +0000
commitd8f3f65be0c1613e150f3c3c57378dd70be28445 (patch)
treed9d33668c98ea65021c5d17bb3ab4956020c4b4d /c
parent+ Changed validation of the_thread to validation of location. (diff)
downloadrtems-d8f3f65be0c1613e150f3c3c57378dd70be28445.tar.bz2
+ 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.
Diffstat (limited to 'c')
-rw-r--r--c/src/exec/itron/src/del_tsk.c22
-rw-r--r--c/src/exec/itron/src/frsm_tsk.c20
-rw-r--r--c/src/exec/itron/src/sus_tsk.c15
-rw-r--r--c/src/exec/itron/src/ter_tsk.c7
4 files changed, 27 insertions, 37 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 );
}