diff options
Diffstat (limited to '')
-rw-r--r-- | testsuites/itrontests/itrontask03/preempt.c | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/testsuites/itrontests/itrontask03/preempt.c b/testsuites/itrontests/itrontask03/preempt.c index 6f8f89f0c2..1ed269cc60 100644 --- a/testsuites/itrontests/itrontask03/preempt.c +++ b/testsuites/itrontests/itrontask03/preempt.c @@ -21,11 +21,35 @@ #include <assert.h> #include "system.h" +int Preempt_task_Count; + void Preempt_task() { - ER status; + ER status; + T_RTSK pk_rtsk; + + puts( "PREEMPT - ref_tsk validation" ); + status = ref_tsk( &pk_rtsk, PREEMPT_TASK_ID ); + assert( status == E_OK ); + assert( pk_rtsk.tskpri == PREEMPT_PRIORITY ); + assert( pk_rtsk.itskpri == PREEMPT_PRIORITY ); + assert( pk_rtsk.task == Preempt_task ); + assert( pk_rtsk.stksz >= RTEMS_MINIMUM_STACK_SIZE ); + assert( pk_rtsk.tskstat == (TTS_RUN | TTS_RDY) ); - puts( "PREEMPT - exd_tsk" ); - exd_tsk( ); - assert( 0 ); + if ( Preempt_task_Count == 0 ) { + Preempt_task_Count ++; + puts( "PREEMPT - chg_pri increment priority "); + status = chg_pri( PREEMPT_TASK_ID, (PREEMPT_PRIORITY+1) ); + directive_failed( status, "chg_pri" ); + puts( "PREEMPT - ext_tsk - going to DORMANT state" ); + ext_tsk( ); + assert( 0 ); + } else { + Preempt_task_Count ++; + puts( "PREEMPT - exd_tsk - Exit and Delete task" ); + exd_tsk( ); + assert( 0 ); + } } + |