void Preempt_task() { ER status; T_RTSK pk_rtsk; puts( "PREEMPT - ref_tsk validation" ); status = ref_tsk( &pk_rtsk, PREEMPT_TASK_ID ); fatal_directive_status( status, E_OK , "ref_tsk of PREEMPT"); rtems_test_assert( pk_rtsk.tskpri == PREEMPT_PRIORITY ); rtems_test_assert( pk_rtsk.itskpri == PREEMPT_PRIORITY ); rtems_test_assert( pk_rtsk.task == Preempt_task ); rtems_test_assert( pk_rtsk.stksz >= RTEMS_MINIMUM_STACK_SIZE ); rtems_test_assert( pk_rtsk.tskstat == (TTS_RUN | TTS_RDY) ); 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( ); rtems_test_assert( 0 ); } else { Preempt_task_Count ++; puts( "PREEMPT - exd_tsk - Exit and Delete task" ); exd_tsk( ); rtems_test_assert( 0 ); } }
static TASK ITronTaskProc(int param) { cg_log_debug_l4("Entering...\n"); T_RTSK rtsk; CgThread *thread; if (ref_tsk(TSK_SELF, &rtsk) != E_OK) return; thread = (CgThread *)rtsk.exinf; if (thread->action != NULL) thread->action(thread); exd_tsk(); cg_log_debug_l4("Leaving...\n"); }
void Task_3() { rtems_status_code status; /* * XXX - Convert Later. */ puts( "TA3 - rtems_task_wake_after - sleep 5 seconds" ); status = rtems_task_wake_after( 5*rtems_clock_get_ticks_per_second() ); directive_failed( status, "rtems_task_wake_after in TA3" ); puts( "TA3 - exd_tsk - exit and delete self" ); exd_tsk(); directive_failed( 0, "exd_tsk" ); }
static int __ui_exd_tsk(struct pt_regs *regs) { exd_tsk(); return 0; }