void task3(intptr_t exinf) { ER_UINT ercd; switch (++task3_count) { case 1: check_point(5); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); check_point(7); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 2: check_point(11); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); default: check_point(0); } check_point(0); }
void task3(intptr_t exinf) { ER ercd; switch (++task3_count) { case 1: check_point(22); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); check_point(25); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 2: check_point(32); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); } check_point(0); }
void task4(intptr_t exinf) { ER_UINT ercd; switch (++task4_count) { case 1: check_point(26); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 2: check_point(33); 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; switch (++task2_count) { case 1: check_point(2); ercd = slp_tsk(); check_ercd(ercd, E_NOSPT); ercd = tslp_tsk(TEST_TIME_PROC); check_ercd(ercd, E_NOSPT); ercd = dly_tsk(TEST_TIME_PROC); check_ercd(ercd, E_NOSPT); ercd = wai_sem(SEM1); check_ercd(ercd, E_NOSPT); ercd = pol_sem(SEM1); check_ercd(ercd, E_OK); ercd = pol_sem(SEM1); check_ercd(ercd, E_TMOUT); ercd = twai_sem(SEM1, TEST_TIME_PROC); check_ercd(ercd, E_NOSPT); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 2: check_point(6); ercd = rot_rdq(MID_PRIORITY); check_ercd(ercd, E_NOSPT); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 3: check_point(10); ercd = rot_rdq(MID_PRIORITY); check_ercd(ercd, E_OK); 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; switch (++task2_count) { case 1: check_point(2); ercd = slp_tsk(); check_ercd(ercd, E_NOSPT); check_point(3); ercd = tslp_tsk(10); check_ercd(ercd, E_NOSPT); check_point(4); ercd = dly_tsk(10); check_ercd(ercd, E_NOSPT); check_point(5); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 2: check_point(23); ercd = rot_rdq(MID_PRIORITY); check_ercd(ercd, E_NOSPT); check_point(24); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 3: check_point(30); ercd = rot_rdq(MID_PRIORITY); check_ercd(ercd, E_OK); check_point(31); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); default: check_point(0); } check_point(0); }
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 task3(intptr_t exinf) { ER ercd; /* * 初期状態のチェック */ check_point(23); check_state(false, false, TIPM_ENAALL, false, false, true); /* * タスク例外処理の許可 */ check_point(24); ercd = ena_tex(); check_ercd(ercd, E_OBJ); check_state(false, false, TIPM_ENAALL, false, false, true); /* * タスク例外処理の禁止 */ check_point(25); ercd = dis_tex(); check_ercd(ercd, E_OBJ); check_state(false, false, TIPM_ENAALL, false, false, true); /* * タスク終了 */ ercd = ext_tsk(); check_point(0); }
void task3(intptr_t exinf) { ER_UINT ercd; check_point(24); check_state(false, false, TIPM_ENAALL, false, false, true); check_point(25); ercd = ena_tex(); check_ercd(ercd, E_OBJ); check_state(false, false, TIPM_ENAALL, false, false, true); check_point(26); ercd = dis_tex(); check_ercd(ercd, E_OBJ); check_state(false, false, TIPM_ENAALL, false, false, true); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); }
/* 通信途絶チェック */ TASK task4(void) { while(1) { wd = 0; // dly_tsk(200); /* 200 * 10 msec = 2s */ dly_tsk(50); /* 50 * 10 msec = 0.5s */ if(wd == 0) { TPU3.TGRA = (unsigned short)65000; TPU3.TGRB = (unsigned short)65000; TPU3.TGRC = (unsigned short)65000; TPU3.TGRD = (unsigned short)65000; // PE.DR.BIT.B0 = 0x0; // PE.DR.BIT.B3 = 0x0; FRI.FRIPE.BIT.B0 = 0x0; FRI.FRIPE.BIT.B3 = 0x0; /* インヒビット設定*/ P7.DR.BIT.B6 = 0x0; P7.DR.BIT.B7 = 0x0; } else { // PE.DR.BIT.B0 = 0x1; // PE.DR.BIT.B3 = 0x1; FRI.FRIPE.BIT.B0 = 0x1; FRI.FRIPE.BIT.B3 = 0x1; /* インヒビット解除*/ P7.DR.BIT.B6 = 0x1; P7.DR.BIT.B7 = 0x1; } // PE.DR.BIT.B4 = ~PE.DR.BIT.B4; FRI.FRIPE.BIT.B4 = ~FRI.FRIPE.BIT.B4; } ext_tsk(); }
/*=========================================================================*/ void main_task(VP_INT exinf) { printf("Hello World\n"); /* main_tsk exit */ ext_tsk(); }
/* * 計測タスク2(高優先度) */ void task2(intptr_t exinf) { end_measure(3); syslog_0(LOG_NOTICE, "end_measure(3)"); task2_count++; ext_tsk(); }
static mrb_value mrb_mruby_task_exit(mrb_state *mrb, mrb_value self) { ext_tsk(); return self; }
void task3(intptr_t exinf) { ER ercd; /* * check init state */ check_point(24); check_state(false, false, TIPM_ENAALL, false, false, true); /* * enable task exception */ check_point(25); ercd = ena_tex(); check_ercd(ercd, E_OBJ); check_state(false, false, TIPM_ENAALL, false, false, true); /* * disable task exception */ check_point(26); ercd = dis_tex(); check_ercd(ercd, E_OBJ); check_state(false, false, TIPM_ENAALL, false, false, true); /* * task exits */ ercd = ext_tsk(); check_point(0); }
void task2(intptr_t exinf) { ER_UINT ercd; check_point(4); ercd = ploc_mtx(MTX1); check_ercd(ercd, E_TMOUT); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(10); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); check_point(12); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(13); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(16); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); check_point(17); ercd = ext_tsk(); check_point(0); }
void Dormant_task(void) { puts( "DORMANT - ext_tsk - going to DORMANT state" ); ext_tsk( ); puts( "ERROR==>ext_tsk of DORMANT returned" ); rtems_test_assert(0); }
/* * 並行実行されるタスク */ void task(VP_INT exinf) { _toppers_cxxrt_reset_specific(); volatile UW i; INT n = 0; INT tskno = (INT) exinf; char *graph[] = { "|", " +", " *" }; char c; ena_tex(); while (1) { syslog(LOG_NOTICE, "task%d is running (%03d). %s", tskno, ++n, graph[tskno-1]); for (i = 0; i < task_loop; i++); c = message[tskno-1]; message[tskno-1] = 0; switch (c) { case 'e': syslog(LOG_INFO, "#%d#ext_tsk()", tskno); ext_tsk(); case 's': syslog(LOG_INFO, "#%d#slp_tsk()", tskno); syscall(slp_tsk()); break; case 'S': syslog(LOG_INFO, "#%d#tslp_tsk(10000)", tskno); syscall(tslp_tsk(10000)); break; case 'd': syslog(LOG_INFO, "#%d#dly_tsk(10000)", tskno); syscall(dly_tsk(10000)); break; case 'y': syslog(LOG_INFO, "#%d#dis_tex()", tskno); syscall(dis_tex()); break; case 'Y': syslog(LOG_INFO, "#%d#ena_tex()", tskno); syscall(ena_tex()); break; #ifdef CPUEXC1 case 'z': syslog(LOG_NOTICE, "#%d#raise CPU exception", tskno); RAISE_CPU_EXCEPTION; break; case 'Z': loc_cpu(); syslog(LOG_NOTICE, "#%d#raise CPU exception", tskno); RAISE_CPU_EXCEPTION; unl_cpu(); break; #endif /* CPUEXC1 */ default: break; } } }
/* * 並行実行されるタスク */ void task(intptr_t exinf) { volatile ulong_t i; int_t n = 0; int_t tskno = (int_t) exinf; const char *graph[] = { "|", " +", " *" }; char c; SVC_PERROR(ena_tex()); while (true) { syslog(LOG_NOTICE, "task%d is running (%03d). %s", tskno, ++n, graph[tskno-1]); for (i = 0; i < task_loop; i++); c = message[tskno-1]; message[tskno-1] = 0; switch (c) { case 'e': syslog(LOG_INFO, "#%d#ext_tsk()", tskno); SVC_PERROR(ext_tsk()); assert(0); case 's': syslog(LOG_INFO, "#%d#slp_tsk()", tskno); SVC_PERROR(slp_tsk()); break; case 'S': syslog(LOG_INFO, "#%d#tslp_tsk(10000)", tskno); SVC_PERROR(tslp_tsk(10000)); break; case 'd': syslog(LOG_INFO, "#%d#dly_tsk(10000)", tskno); SVC_PERROR(dly_tsk(10000)); break; case 'y': syslog(LOG_INFO, "#%d#dis_tex()", tskno); SVC_PERROR(dis_tex()); break; case 'Y': syslog(LOG_INFO, "#%d#ena_tex()", tskno); SVC_PERROR(ena_tex()); break; #ifdef CPUEXC1 case 'z': syslog(LOG_NOTICE, "#%d#raise CPU exception", tskno); RAISE_CPU_EXCEPTION; break; case 'Z': SVC_PERROR(loc_cpu()); syslog(LOG_NOTICE, "#%d#raise CPU exception", tskno); RAISE_CPU_EXCEPTION; SVC_PERROR(unl_cpu()); break; #endif /* CPUEXC1 */ default: break; } } }
void task2(intptr_t exinf) { ER_UINT ercd; PRI tskpri; check_point(14); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(24); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(50); ercd = loc_mtx(MTX2); check_ercd(ercd, E_OK); check_point(56); ercd = wup_tsk(TASK1); check_ercd(ercd, E_OK); check_point(57); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(60); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); check_point(61); ercd = unl_mtx(MTX2); check_ercd(ercd, E_OK); check_point(62); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(63); ercd = rot_rdq(MID_PRIORITY); check_ercd(ercd, E_OK); check_point(66); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); ercd = get_pri(TASK1, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == MID_PRIORITY); check_point(67); ercd = ext_tsk(); check_point(0); }
void MsdcVendorNvtTsk(void) { tMSDCVENDOR_BACKGROUND_CTRL* pBk = &MsdcVendorNvt_GetCtrl()->tBkCtrl; if(pBk->pCall) pBk->pCall(); pBk->bCmdRunning = FALSE; ext_tsk(); }
//***************************************************************************** // TASK : tsk1 // DESCRIPTION : 40msec periodical Task and detects obstacles in front of // NXTway-GS by using a sonar sensor //***************************************************************************** void tsk1(VP_INT exinf) { obstacle_flag = 0; /* no obstacles */ if ((nxtway_gs_mode == CONTROL_MODE) && (ecrobot_get_sonar_sensor(PORT_SONAR) <= MIN_DISTANCE)){ obstacle_flag = 1; /* obstacle detected */ } ext_tsk(); /* terminates this task */ }
void task4(intptr_t exinf) { ER ercd; ercd = ras_tex(TASK3, 0x0002); check_ercd(ercd, E_OK); ercd = ext_tsk(); check_point(0); }
void task3(intptr_t exinf) { ER_UINT ercd; check_point(16); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(29); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(52); ercd = loc_mtx(MTX4); check_ercd(ercd, E_OK); check_point(61); ercd = unl_mtx(MTX4); check_ercd(ercd, E_OK); check_point(66); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(71); ercd = loc_mtx(MTX4); check_ercd(ercd, E_OK); check_point(81); ercd = unl_mtx(MTX4); check_ercd(ercd, E_OK); check_point(86); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(91); ercd = loc_mtx(MTX1); check_ercd(ercd, E_DLT); check_point(97); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(101); ercd = loc_mtx(MTX1); check_ercd(ercd, E_DLT); check_point(105); ercd = ext_tsk(); check_point(0); }
static VOID BTronTaskProc(W param) { cg_log_debug_l4("Entering...\n"); CgThread *thread = (CgThread *)param; if (thread->action != NULL) thread->action(thread); ext_tsk(); cg_log_debug_l4("Leaving...\n"); }
/* * 並行実行されるタスク */ void task(VP_INT exinf) { volatile UW i; INT n = 0; INT tskno = (INT) exinf; const char *graph[] = { "|", " +", " *" }; char c; ena_tex(); while (1) { syslog(LOG_NOTICE, "task%d is running (%03d). %s", tskno, ++n, graph[tskno-1]); for (i = 0; i < task_loop; i++); c = message[tskno-1]; message[tskno-1] = 0; switch (c) { case 'e': syslog(LOG_INFO, "#%d#ext_tsk()", tskno); ext_tsk(); case 's': syslog(LOG_INFO, "#%d#slp_tsk()", tskno); syscall(slp_tsk()); break; case 'S': syslog(LOG_INFO, "#%d#tslp_tsk(10000)", tskno); syscall(tslp_tsk(10000)); break; case 'd': syslog(LOG_INFO, "#%d#dly_tsk(10000)", tskno); syscall(dly_tsk(10000)); break; case 'y': syslog(LOG_INFO, "#%d#dis_tex()", tskno); syscall(dis_tex()); break; case 'Y': syslog(LOG_INFO, "#%d#ena_tex()", tskno); syscall(ena_tex()); break; #ifdef CPUEXC1 case 'z': syslog(LOG_NOTICE, "#%d#raise CPU exception", tskno); RAISE_CPU_EXCEPTION; break; #endif /* CPUEXC1 */ case 'Z': syslog(LOG_NOTICE, "Sample program ends with exception."); kernel_exit(); break; default: break; } } }
/* * 並行して実行されるタスク用のタスク例外処理ルーチン */ void tex_routine(TEXPTN texptn, VP_INT exinf) { volatile UW i; INT tskno = (INT) exinf; syslog(LOG_NOTICE, "task%d receives exception 0x%04x. ", tskno, texptn); for (i = 0; i < tex_loop; i++); if (texptn & 0x8000) { syslog(LOG_INFO, "#%d#ext_tsk()", tskno); ext_tsk(); } }
/*=========================================================================*/ void main_task(VP_INT exinf) { int i; /* Initialize FIR Objects */ for( i=0;i<numof(fir);++i) fir_init( &fir[i] ); /* Audio Driver start as interrupt interval is 8 blocks, 4 channels*/ KzAudioStart( audio_cb, 48000, 8, 4 ); /* main_task exit */ ext_tsk(); }
void task3(intptr_t exinf) { ER ercd; PRI tskpri; T_RMTX rmtx; check_point(10); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(13); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK3); check_assert(rmtx.wtskid == TSK_NONE); ercd = get_pri(TPRI_SELF, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == HIGH_PRIORITY); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(27); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(30); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK3); check_assert(rmtx.wtskid == TSK_NONE); ercd = ref_mtx(MTX2, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK4); check_assert(rmtx.wtskid == TSK_NONE); ercd = get_pri(TPRI_SELF, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == HIGH_PRIORITY); ercd = ext_tsk(); check_point(0); }
/* * 並行して実行されるタスク用のタスク例外処理ルーチン */ void tex_routine(TEXPTN texptn, intptr_t exinf) { volatile ulong_t i; int_t tskno = (int_t) exinf; syslog(LOG_NOTICE, "task%d receives exception 0x%04x.", tskno, texptn); for (i = 0; i < tex_loop; i++); if ((texptn & 0x8000U) != 0U) { syslog(LOG_INFO, "#%d#ext_tsk()", tskno); SVC_PERROR(ext_tsk()); assert(0); } }
/*=========================================================================*/ void main_task(VP_INT exinf) { /* * Display SDK Version and Copyright */ printf("Start KOBANZEM SDK Sample Project\n"); printf("KOBANZAME SDK Version : %d.%02d(%04d)\n",KzGetVersionMajor(), KzGetVersionMinor(), KzGetBuildIdx() ); printf(" Build Date: %s\n", KzGetBuildDate() ); printf(" Copyright : %s\n", KzGetCopyRight() ); /* * Filesystem Start, Insert SD-Card before program start */ if( KzFilesystemStart() == KZ_OK ) { /* * Filesystem success to start */ printf("SD-Card Ready, Filesystem start\n"); /* Add Filesystem relative commands. */ KzAddCmdFilesystem(); } else printf("SD-Card not Ready.\n"); /* * Add Device Driver Command */ KzAddCmdDeviceDriver(); #if 0 /* Stdio Test for SDK develop */ KzAddCmdStdioTest(); #endif /* * Command line start * This function doesn't return until exit command is issued in the command line. */ KzCmdlineStart(); /* * End main task */ printf("\nExit Command Line\n"); ext_tsk(); }
/* * モニタタスク */ void monitor(VP_INT exinf) { INT no, point; B c; /* モニタで使用するデータの初期化 */ mon_portid = mon_default_portid = (ID)exinf; mon_datatype = DATA_BYTE; mon_logmask = LOG_NOTICE; mon_lowmask = LOG_EMERG; current_tskid = MONTASK; mon_infile = stdin; if(mon_portid != CONSOLE_PORTID) syscall(serial_opn_por(mon_portid)); #ifdef NEED_MONITOR if(!need_monitor()) ext_tsk(); #endif /* NEED_MONITOR */ _setup_stdio(&mon_portid); #ifdef MONITOR_DELAY dly_tsk(MONITOR_DELAY); #endif /* MONITOR_DELAY */ #if defined(LOGTASK) && (LOGTASK_PRIORITY <= MONITOR_PRIORITY) chg_pri(LOGTASK, MONITOR_PRIORITY+1); dly_tsk(50); printf("change log task priority %d to %d !\n", LOGTASK_PRIORITY, MONITOR_PRIORITY+1); #endif printf(banner, (TMONITOR_PRVER >> 12) & 0x0f, (TMONITOR_PRVER >> 4) & 0xff, TMONITOR_PRVER & 0x0f); vmsk_log(LOG_UPTO(mon_logmask), LOG_UPTO(mon_lowmask)); syscall(serial_ctl_por(mon_portid, (IOCTL_CRLF | IOCTL_FCSND | IOCTL_FCRCV))); /* モニタのメインのデスパッチ */ do{ prompt(current_tskid); c = monitor_getstring(mon_command, &point); no = dispatch_command(mon_command, &point); putecho('\n'); if(no >= 0) mon_dispatch[no].func(&mon_command[point]); fflush(NULL); }while(c != KEY_EXT); printf("exit monitor !!\n"); }