OBJS_DIR = objs_$(TARGET)
+# %jp{カーネル設定}
+KERNEL_HOK_TSK = Yes
+KERNEL_HOK_ISR = Yes
+
+
# %jp{共通定義読込み}
include $(KERNEL_MAKINC_DIR)/common.inc
* http://sourceforge.jp/projects/hos/
*/
+#include "hosaplfw.h"
+#include "system/sysapi/sysapi.h"
#include "kernel.h"
#include "ostimer.h"
#define INTNO_TIMER0 4
-static void OsTimer_Isr(VP_INT exinf); /**< %jp{タイマ割込みサービスルーチン} */
+
+static void OsTimer_Isr(VPARAM Param); /**< %jp{タイマ割込みサービスルーチン} */
/** %jp{OS用タイマ初期化ルーチン} */
-void OsTimer_Initialize(VP_INT exinf)
+void OsTimer_Initialize(void)
{
- T_CISR cisr;
-
- /* %jp{割り込みサービスルーチン生成} */
- cisr.isratr = TA_HLNG;
- cisr.exinf = 0;
- cisr.intno = INTNO_TIMER0;
- cisr.isr = (FP)OsTimer_Isr;
- acre_isr(&cisr);
- ena_int(2);
+ SysIsr_Create(INTNO_TIMER0, OsTimer_Isr, (VPARAM)0);
+ SysInt_Enable(INTNO_TIMER0);
/* %jp{タイマ動作開始} */
*T0MR0 = 142000 / 4;
/** %jp{タイマ割り込みハンドラ} */
-void OsTimer_Isr(VP_INT exinf)
+void OsTimer_Isr(VPARAM Param)
{
/* %jp{割り込み要因クリア} */
*T0IR= 1;
/* %jp{タイムティック供給} */
- isig_tim();
+ SysTim_Signal(10000000); /* 10ms */
}
#endif
/** %jp{OS用タイマ初期化ルーチン} */
-void OsTimer_Initialize(VP_INT exinf);
+void OsTimer_Initialize(void);
+
#ifdef __cplusplus
}
KERNEL_MAX_ISRID(32);
-/* %jp{OSタイマの設定}%en{OS timer} */
-INCLUDE("\"ostimer.h\"");
-ATT_INI({TA_HLNG, 0, OsTimer_Initialize});
-
-/* %jp{サンプル}%en{Sample program} */
+/* %jp{ブートタスク}%en{Boot task} */
INCLUDE("\"boot.h\"");
CRE_TSK(TSKID_BOOT, {TA_HLNG | TA_ACT, 0, Boot_Task, 2, 1024, NULL});
extern "C" {
#endif
-ER _kernel_cre_tsk(ID tskid, const T_CTSK *pk_ctsk);
+ER _kernel_cre_tsk(ID tskid, const T_CTSK *pk_ctsk); /**< %jp{タスクの生成} */
+void _kernel_exe_tex(_KERNEL_T_TSKHDL tskhdl); /**< %jp{タスク例外処理の実行} */
#ifdef __cplusplus
}
/* %jp{挿入場所を検索} */
tskhdl_next = tskhdl_head;
- tcb_next = _KERNEL_TSK_TSKHDL2TCB(tskhdl_next);
+ tcb_next = _KERNEL_TSK_TSKHDL2TCB(tskhdl_next);
do
{
tmout_next = _KERNEL_TSK_GET_TOQDIFTIM(tcb_next);
_KERNEL_TSK_SET_TOQPREV(tcb, tskhdl_prev);
_KERNEL_TSK_SET_TOQNEXT(tcb_prev, tskhdl);
_KERNEL_TSK_SET_TOQPREV(tcb_next, tskhdl);
-
+
return;
}
break;
}
- tictim -= diftim; /* %jp{タイムティックを減算} */
+ tictim -= diftim; /* %jp{タイムティックを減算} */
_KERNEL_TSK_SET_ERCD(tcb, E_TMOUT);
_KERNEL_DSP_WUP_TSK(tskhdl);
tskhdl = _KERNEL_TSKHDL_NULL;
break;
}
-
+
/* %jp{キューから取り外す} */
_KERNEL_TSK_SET_TOQNEXT(tcb_prev, tskhdl_next);
_KERNEL_TSK_SET_TOQPREV(tcb_next, tskhdl_prev);