#include /* 型などの基本的な定義 */ #include /* T-Kernel関連の定義 */ #include /* モニタ機能を使う場合の定義 */ void taskA( INT stacd, VP exinf ) /* タスクA(関数名は任意) */ { while(1){ tm_putstring( (UB*)"I'm Task A.\n" ); tk_dly_tsk( 1000 ); /* 処理を1秒間保留 */ } tk_ext_tsk(); /* タスクの終了 */ } void taskB( INT stacd, VP exinf ) /* タスクB(関数名は任意) */ { while(1){ tm_putstring( (UB*)"I'm Task B.\n" ); tk_dly_tsk( 2000 ); /* 処理を2秒間保留 */ } tk_ext_tsk(); /* タスクの終了 */ } EXPORT INT usermain( void ) /* 初期タスクから呼ばれる関数 */ { T_CTSK ctskA = { NULL, TA_HLNG|TA_RNG0, taskA, 1, 4*1024 }; T_CTSK ctskB = { NULL, TA_HLNG|TA_RNG0, taskB, 1, 4*1024 }; ID tskIdA; /* タスクAの識別子 */ ID tskIdB; /* タスクBの識別子 */ tskIdA = tk_cre_tsk( &ctskA ); /* T-KernelにタスクAを登録 */ tk_sta_tsk( tskIdA, 0 ); /* タスクAの実行を開始 */ tskIdB = tk_cre_tsk( &ctskB ); /* T-KernelにタスクBを登録 */ tk_sta_tsk( tskIdB, 0 ); /* タスクBの実行を開始 */ tk_slp_tsk(TMO_FEVR); /* 起床待ち状態に移行 */ return 0; }