OSDN Git Service

2b979688e190b01bfac53af0ae9d434570a3bdac
[hos/hos-v4a.git] / aplfw / system / sysapi / sysapi.h
1 /** 
2  *  Hyper Operating System  Application Framework
3  *
4  * @file  system.h
5  * @brief %jp{システム用API定義}
6  *
7  * Copyright (C) 2006 by Project HOS
8  * http://sourceforge.jp/projects/hos/
9  */
10
11
12 /* ITRONをマイクロカーネルとして、依存性はこのモジュールで極力隠蔽する */
13 /* いわゆるシステムモード(デバドラとか)のみに許すAPIを定義する */
14 /* ユーザーモード用APIは別途作成予定 */
15
16
17 #ifndef __HOS__sysapi_h__
18 #define __HOS__sysapi_h__
19
20 #include "system/type/type.h"
21 #include "library/container/memif/memif.h"
22
23
24
25 /* システム用プロセスハンドル */
26 #define SYSPRC_HANDLE_NULL                      (0)
27 typedef void* SYSPRC_HANDLE;
28
29 /* システム用ミューテックスハンドル */
30 #define SYSMTX_HANDLE_NULL                      (0)
31 typedef void* SYSMTX_HANDLE;
32
33 /* システム用イベントハンドル */
34 #define SYSEVT_HANDLE_NULL                      (0)
35 typedef void* SYSEVT_HANDLE;
36
37 /* システム用割り込みサービスルーチンハンドル */
38 #define SYSISR_HANDLE_NULL                      (0)
39 typedef void* SYSISR_HANDLE;
40
41
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45
46 /* 初期化 */
47 void           System_Initialize(void *pMem, MEMSIZE lSize);    /* システムの初期化処理 */
48
49 /* システムロック */
50 void           System_Lock(void);                                                               /* システム全体のロック */
51 void           System_Unlock(void);                                                             /* システム全体のロック解除 */
52
53 /* システム用メモリ制御API */
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);                                                   /* メモリインターフェースの取得 */
59
60 /* システム用割り込み制御API */
61 void           SysInt_Enable(int iIntNum);
62 void           SysInt_Disable(int iIntNum);
63 void           SysInt_Clear(int iIntNum);
64
65 /* 割り込みサービスルーチン制御API */
66 SYSISR_HANDLE  SysIsr_Create(int iIntNum, void (*pfncIsr)(VPARAM Param), VPARAM Param);
67 void           SysIsr_Delete(SYSISR_HANDLE hIsr);
68
69
70 /* システム用プロセス制御API */
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);
77
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);                       /* システム用ミューテックスロック解除*/
83
84 /* システム用イベント制御API */
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);                        /* システム用イベントクリア */
90
91 /* 時間管理 */
92 void           SysTim_Wait(unsigned long ulTime);                       /* 時間待ち */
93 TIME           SysTim_GetCurrentTime(void);                                     /*  */
94
95
96 #ifdef __cplusplus
97 }
98 #endif
99
100
101 #endif
102