2 * Hyper Operating System Application Framework
5 * @brief %jp{システム用API定義}
7 * Copyright (C) 2006 by Project HOS
8 * http://sourceforge.jp/projects/hos/
12 #include "sysapi_local.h"
16 SYSTIM_CPUTIME SysHos_OldTime;
21 void SysInt_SetIntTime(int iIntNum, SYSTIM_CPUTIME Time)
23 if ( iIntNum < _kernel_min_intno || iIntNum > _kernel_max_intno )
28 SysInt_InfTbl[iIntNum - _kernel_min_intno].ExecTime = Time;
33 SYSTIM_CPUTIME SysInt_GetIntTime(int iIntNum)
35 if ( iIntNum < _kernel_min_intno || iIntNum > _kernel_max_intno )
40 return SysInt_InfTbl[iIntNum - _kernel_min_intno].ExecTime;
44 /** プロセス実行時間計測タイマを初期化 */
45 void SysPrc_SetExecTime(SYSPRC_HANDLE hPrc, SYSTIM_CPUTIME Time)
47 SysPrc_InfTbl[(ID)hPrc].ExecTime = Time;
51 /** プロセス実行時間計測タイマを取得 */
52 SYSTIM_CPUTIME SysPrc_GetExecTime(SYSPRC_HANDLE hPrc)
54 return SysPrc_InfTbl[(ID)hPrc].ExecTime;
58 /** %jp{タスクスイッチのフック} */
59 void _kernel_tsk_swi(ID tskid_old, ID tskid_new)
61 SYSTIM_CPUTIME NewTime;
62 SYSTIM_CPUTIME PastTime;
65 NewTime = SysTim_GetCpuTime();
66 PastTime = NewTime - SysHos_OldTime;
69 SysPrc_InfTbl[tskid_old].ExecTime += PastTime;
72 SysHos_OldTime = NewTime;
73 SysHos_TaskId = tskid_new;
77 /** %jp{割込みサービスルーチン開始のフック} */
78 void _kernel_isr_sta(INHNO inhno)
80 SYSTIM_CPUTIME NewTime;
81 SYSTIM_CPUTIME PastTime;
84 NewTime = SysTim_GetCpuTime();
85 PastTime = NewTime - SysHos_OldTime;
88 SysPrc_InfTbl[SysHos_TaskId].ExecTime += PastTime;
91 SysHos_OldTime = NewTime;
95 /**< %jp{割込みサービスルーチン終了のフック} */
96 void _kernel_isr_end(INTNO intno)
98 SYSTIM_CPUTIME NewTime;
99 SYSTIM_CPUTIME PastTime;
102 NewTime = SysTim_GetCpuTime();
103 PastTime = NewTime - SysHos_OldTime;
106 SysInt_InfTbl[intno - _kernel_min_intno].ExecTime += PastTime;