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 ); } }
void task4(intptr_t exinf) { ER_UINT ercd; T_RTSK rtsk; T_RMTX rmtx; check_point(19); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(22); ercd = ref_tsk(TASK3, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_DMT); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK4); check_assert(rmtx.wtskid == TSK_NONE); check_point(23); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(0); }
void task1(intptr_t exinf) { ER_UINT ercd; T_RTSK rtsk; T_RMTX rmtx; PRI intpri; test_start(__FILE__); check_point(1); ercd = sta_alm(ALM1, TEST_TIME_CP); check_ercd(ercd, E_OK); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(3); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); check_point(5); ercd = ref_tsk(TASK2, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_DMT); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TSK_NONE); check_assert(rmtx.wtskid == TSK_NONE); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); check_point(16); ercd = get_ipm(&intpri); check_ercd(ercd, E_OK); check_assert(intpri == TIPM_ENAALL); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); check_point(23); check_assert(sns_dsp() == false); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); check_finish(28); check_point(0); }
static int __ui_ref_tsk(struct pt_regs *regs) { ID tskid = __xn_reg_arg2(regs); T_RTSK pk_rtsk; ER err; err = ref_tsk(&pk_rtsk, tskid); if (err == E_OK && __xn_safe_copy_to_user((void __user *)__xn_reg_arg1(regs), &pk_rtsk, sizeof(pk_rtsk))) return -EFAULT; return err; }
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 task2(intptr_t exinf) { ER_UINT ercd; T_RTSK rtsk; check_point(5); ercd = ploc_mtx(MTX1); check_ercd(ercd, E_TMOUT); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(13); ercd = ref_tsk(TASK2, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskpri == HIGH_PRIORITY); check_assert(rtsk.tskbpri == MID_PRIORITY); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); check_point(14); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(15); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(18); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); check_point(19); ercd = ext_tsk(); check_point(0); }
void task3(intptr_t exinf) { ER_UINT ercd; T_RTSK rtsk; switch (++task3_count) { case 1: check_point(10); ercd = tloc_mtx(MTX1, 3 * TEST_TIME_CP); check_ercd(ercd, E_OK); check_point(11); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(0); case 2: check_point(16); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(17); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(0); case 3: check_point(29); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(0); case 4: check_point(33); ercd = ref_tsk(TASK3, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RUN); check_assert(rtsk.actcnt == 0U); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 5: check_point(47); ercd = dis_ter(); check_ercd(ercd, E_OK); ercd = slp_tsk(); check_ercd(ercd, E_RASTER); check_point(50); ercd = ref_tsk(TASK3, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RUN); check_assert(rtsk.raster == true); check_assert(rtsk.dister == true); check_point(51); ercd = slp_tsk(); check_ercd(ercd, E_RASTER); ercd = ena_ter(); check_ercd(ercd, E_OK); check_point(0); case 6: check_point(54); ercd = dis_ter(); check_ercd(ercd, E_OK); ercd = sus_tsk(TSK_SELF); check_ercd(ercd, E_OK); check_point(57); ercd = ref_tsk(TASK3, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RUN); check_assert(rtsk.raster == true); check_assert(rtsk.dister == true); ercd = sus_tsk(TSK_SELF); check_ercd(ercd, E_RASTER); ercd = ena_ter(); check_ercd(ercd, E_OK); check_point(0); default: check_point(0); } check_point(0); }
void task1(intptr_t exinf) { ER_UINT ercd; T_RTSK rtsk; T_RMTX rmtx; test_start(__FILE__); set_bit_func(bit_kernel); check_point(1); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); ercd = sta_alm(ALM1, TEST_TIME_CP); check_ercd(ercd, E_OK); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(4); ercd = loc_cpu(); check_ercd(ercd, E_OK); ercd = ras_ter(TASK2); check_ercd(ercd, E_CTX); ercd = unl_cpu(); check_ercd(ercd, E_OK); check_point(5); ercd = ras_ter(0U); check_ercd(ercd, E_ID); ercd = ras_ter(TNUM_TSKID + 1); check_ercd(ercd, E_ID); ercd = ras_ter(TASK1); check_ercd(ercd, E_ILUSE); ercd = ras_ter(TASK3); check_ercd(ercd, E_OBJ); check_point(6); ercd = ref_tsk(TASK2, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RDY); check_point(7); ercd = ras_ter(TASK2); check_ercd(ercd, E_OK); check_point(8); ercd = ref_tsk(TASK2, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_DMT); check_point(9); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); check_point(12); ercd = ref_tsk(TASK3, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_WAI); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK3); check_assert(rmtx.wtskid == TSK_NONE); check_point(13); ercd = ras_ter(TASK3); check_ercd(ercd, E_OK); check_point(14); ercd = ref_tsk(TASK3, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_DMT); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TSK_NONE); check_assert(rmtx.wtskid == TSK_NONE); check_point(15); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); check_point(18); ercd = act_tsk(TASK4); check_ercd(ercd, E_OK); check_point(20); ercd = ref_tsk(TASK3, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_WAI); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK3); check_assert(rmtx.wtskid == TASK4); check_point(21); ercd = ras_ter(TASK3); check_ercd(ercd, E_OK); check_point(24); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); check_point(25); ercd = ref_tsk(TASK2, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RDY); check_assert(rtsk.actcnt == 1U); check_point(26); ercd = ras_ter(TASK2); check_ercd(ercd, E_OK); check_point(27); ercd = ref_tsk(TASK2, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RDY); check_assert(rtsk.actcnt == 0U); check_point(28); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); check_point(30); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); check_point(31); ercd = ref_tsk(TASK3, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_WAI); check_assert(rtsk.actcnt == 1U); check_point(32); ercd = ras_ter(TASK3); check_ercd(ercd, E_OK); check_point(34); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(36); ercd = ref_tsk(TASK2, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RDY); check_assert(rtsk.raster == false); check_assert(rtsk.dister == true); check_point(37); ercd = ras_ter(TASK2); check_ercd(ercd, E_OK); check_point(38); ercd = ref_tsk(TASK2, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RDY); check_assert(rtsk.raster == true); check_assert(rtsk.dister == true); check_point(39); ercd = ter_tsk(TASK2); check_ercd(ercd, E_OK); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); check_point(40); ercd = ref_tsk(TASK2, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RDY); check_assert(rtsk.raster == false); check_assert(rtsk.dister == false); ercd = tslp_tsk(TEST_TIME_CP); check_ercd(ercd, E_TMOUT); check_point(42); ercd = ref_tsk(TASK2, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_WAI); check_assert(rtsk.raster == false); check_assert(rtsk.dister == true); check_point(43); ercd = ras_ter(TASK2); check_ercd(ercd, E_OK); check_point(44); ercd = ref_tsk(TASK2, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RDY); check_assert(rtsk.raster == true); check_assert(rtsk.dister == true); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(46); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); check_point(48); ercd = ref_tsk(TASK3, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_WAI); check_assert(rtsk.raster == false); check_assert(rtsk.dister == true); check_point(49); ercd = ras_ter(TASK3); check_ercd(ercd, E_OK); check_point(52); ercd = ref_tsk(TASK3, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_DMT); check_point(53); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); check_point(55); ercd = ref_tsk(TASK3, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_SUS); check_point(56); ercd = ras_ter(TASK3); check_ercd(ercd, E_OK); check_point(58); ercd = ref_tsk(TASK3, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_DMT); check_finish(59); check_point(0); }
void task1(intptr_t exinf) { ER ercd; T_RTSK rtsk; T_RMTX rmtx; set_bit_func(bit_mutex); check_point(1); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TSK_NONE); check_assert(rmtx.wtskid == TSK_NONE); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(2); ercd = ref_tsk(TASK1, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskpri == HIGH_PRIORITY); check_assert(rtsk.tskbpri == LOW_PRIORITY); ercd = loc_mtx(MTX1); check_ercd(ercd, E_ILUSE); check_point(3); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK1); check_assert(rmtx.wtskid == TSK_NONE); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); check_point(4); ercd = tslp_tsk(10); check_ercd(ercd, E_TMOUT); check_point(6); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK1); check_assert(rmtx.wtskid == TASK2); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); check_point(7); ercd = tslp_tsk(10); check_ercd(ercd, E_TMOUT); check_point(10); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK1); check_assert(rmtx.wtskid == TASK3); ercd = dis_dsp(); check_ercd(ercd, E_OK); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); check_point(11); ercd = ref_tsk(TASK1, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskpri == LOW_PRIORITY); check_assert(rtsk.tskbpri == LOW_PRIORITY); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK3); check_assert(rmtx.wtskid == TASK2); ercd = ena_dsp(); check_ercd(ercd, E_OK); check_point(16); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK2); check_assert(rmtx.wtskid == TSK_NONE); ercd = tloc_mtx(MTX1, 10); check_ercd(ercd, E_TMOUT); check_point(17); ercd = wup_tsk(TASK2); check_ercd(ercd, E_OK); check_finish(20); check_point(0); }
void task3(intptr_t exinf) { ER_UINT ercd; T_RTSK rtsk; PRI intpri; switch (++task3_count) { case 1: check_point(7); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(9); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); check_point(10); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 2: check_point(14); ercd = ref_tsk(TASK2, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RDY); check_assert(rtsk.actcnt == 0U); ercd = loc_cpu(); check_ercd(ercd, E_OK); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 3: check_point(19); ercd = get_ipm(&intpri); check_ercd(ercd, E_OK); check_assert(intpri == TIPM_ENAALL); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); check_point(20); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 4: check_point(26); check_assert(sns_dsp() == false); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); default: check_point(0); } check_point(0); }
void task2(intptr_t exinf) { ER_UINT ercd; T_RTSK rtsk; switch (++task2_count) { case 1: check_point(4); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 2: check_point(6); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); check_point(8); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 3: check_point(11); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 4: check_point(12); ercd = ref_tsk(TASK2, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RUN); check_assert(rtsk.actcnt == 0U); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); ercd = chg_pri(TASK2, TASK3_PRIORITY); check_ercd(ercd, E_OK); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); check_point(13); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 5: check_point(15); check_assert(sns_loc() == false); ercd = chg_ipm(TMAX_INTPRI); check_ercd(ercd, E_OK); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 6: check_point(17); ercd = chg_ipm(TMAX_INTPRI); check_ercd(ercd, E_OK); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); ercd = act_tsk(TASK4); check_ercd(ercd, E_OK); check_point(18); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 7: check_point(22); ercd = dis_dsp(); check_ercd(ercd, E_OK); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 8: check_point(24); ercd = dis_dsp(); check_ercd(ercd, E_OK); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); ercd = act_tsk(TASK4); check_ercd(ercd, E_OK); check_point(25); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); default: check_point(0); } check_point(0); }