2 * Hyper Operating System Application Framework
5 * @brief %jp{システム用API定義}
7 * Copyright (C) 2006 by Project HOS
8 * http://sourceforge.jp/projects/hos/
12 /* ITRONをマイクロカーネルとして、依存性はこのモジュールで極力隠蔽する */
13 /* いわゆるシステムモード(デバドラとか)のみに許すAPIを定義する */
14 /* ユーザーモード用APIは別途作成予定 */
17 #ifndef __HOS__sysapi_h__
18 #define __HOS__sysapi_h__
20 #include "system/type/type.h"
21 #include "library/container/memif/memif.h"
26 #define SYSPRC_HANDLE_NULL (0)
27 typedef void* SYSPRC_HANDLE;
29 /* システム用ミューテックスハンドル */
30 #define SYSMTX_HANDLE_NULL (0)
31 typedef void* SYSMTX_HANDLE;
34 #define SYSEVT_HANDLE_NULL (0)
35 typedef void* SYSEVT_HANDLE;
37 /* システム用割り込みサービスルーチンハンドル */
38 #define SYSISR_HANDLE_NULL (0)
39 typedef void* SYSISR_HANDLE;
47 void System_Initialize(void *pMem, MEMSIZE lSize); /* システムの初期化処理 */
50 void System_Lock(void); /* システム全体のロック */
51 void System_Unlock(void); /* システム全体のロック解除 */
54 void *SysMem_Alloc(MEMSIZE Size); /* システムメモリの割り当て */
55 void *SysMem_ReAlloc(void *pMem, MEMSIZE Size); /* システムメモリの再割り当て */
56 void SysMem_Free(void *pMem); /* システムメモリの返却 */
57 MEMSIZE SysMem_GetSize(void *pMem); /* システムメモリのサイズ取得 */
58 const T_MEMIF *SysMem_GetMemIf(void); /* メモリインターフェースの取得 */
61 void SysInt_Enable(int iIntNum);
62 void SysInt_Disable(int iIntNum);
63 void SysInt_Clear(int iIntNum);
65 /* 割り込みサービスルーチン制御API */
66 SYSISR_HANDLE SysIsr_Create(int iIntNum, void (*pfncIsr)(VPARAM Param), VPARAM Param);
67 void SysIsr_Delete(SYSISR_HANDLE hIsr);
71 SYSPRC_HANDLE SysPrc_Create(void (*pfncEntry)(VPARAM Param), VPARAM Param, MEMSIZE StackSize, int Priority);
72 void SysPrc_Delete(SYSPRC_HANDLE hPrc);
73 void SysPrc_Exit(void);
74 void SysPrc_Start(SYSPRC_HANDLE hPrc);
75 void SysPrc_Wait(SYSPRC_HANDLE hPrc);
76 SYSPRC_HANDLE SysPrc_GetCurrentHandle(void);
78 /* システム用ミューテックス制御API */
79 SYSMTX_HANDLE SysMtx_Create(void); /* システム用ミューテックス生成 */
80 void SysMtx_Delete(SYSMTX_HANDLE hMtx); /* システム用ミューテックス削除 */
81 void SysMtx_Lock(SYSMTX_HANDLE hMtx); /* システム用ミューテックスロック*/
82 void SysMtx_Unlock(SYSMTX_HANDLE hMtx); /* システム用ミューテックスロック解除*/
85 SYSEVT_HANDLE SysEvt_Create(void); /* システム用イベント生成 */
86 void SysEvt_Delete(SYSEVT_HANDLE hEvt); /* システム用イベント削除 */
87 void SysEvt_Wait(SYSEVT_HANDLE hEvt); /* システム用イベント待ち*/
88 void SysEvt_Set(SYSEVT_HANDLE hEvt); /* システム用イベントセット */
89 void SysEvt_Clear(SYSEVT_HANDLE hEvt); /* システム用イベントクリア */
92 void SysTim_Wait(unsigned long ulTime); /* 時間待ち */
93 TIME SysTim_GetCurrentTime(void); /* */