From 5c9c6b6f0060a3166579ddc75987b470c46440f7 Mon Sep 17 00:00:00 2001 From: ryuz Date: Thu, 3 May 2007 07:58:02 +0000 Subject: [PATCH] (none) --- aplfw/apl/util/keytest/keytest_main.c | 2 +- aplfw/build/common/gmake/aplfwsrc.inc | 14 +++-- aplfw/sample/arm/ez_arm7/sample.c | 34 ++++-------- aplfw/system/process/process.h | 4 +- aplfw/system/sysapi/sysapi.h | 6 +-- .../{system_initialize.c => sysapi_initialize.c} | 8 +-- aplfw/system/sysapi/sysapi_local.h | 1 - .../system/sysapi/{system_lock.c => sysloc_lock.c} | 5 +- .../sysapi/{system_unlock.c => sysloc_unlock.c} | 4 +- aplfw/system/system/system.h | 35 ++++++++++++ aplfw/system/system/system_boot.c | 62 ++++++++++++++++++++++ aplfw/system/system/system_initialize.c | 32 +++++++++++ 12 files changed, 163 insertions(+), 44 deletions(-) rename aplfw/system/sysapi/{system_initialize.c => sysapi_initialize.c} (71%) rename aplfw/system/sysapi/{system_lock.c => sysloc_lock.c} (84%) rename aplfw/system/sysapi/{system_unlock.c => sysloc_unlock.c} (84%) create mode 100755 aplfw/system/system/system.h create mode 100755 aplfw/system/system/system_boot.c create mode 100755 aplfw/system/system/system_initialize.c diff --git a/aplfw/apl/util/keytest/keytest_main.c b/aplfw/apl/util/keytest/keytest_main.c index 0c2128b..ef76d7b 100755 --- a/aplfw/apl/util/keytest/keytest_main.c +++ b/aplfw/apl/util/keytest/keytest_main.c @@ -19,7 +19,7 @@ int KeyTest_Main(int argc, char *argv[]) HANDLE hTty; StdIo_PutString("\n[KeyTest] start\n"); - hTty = Process_GetTty(); + hTty = Process_GetTerminal(); for ( ; ; ) { diff --git a/aplfw/build/common/gmake/aplfwsrc.inc b/aplfw/build/common/gmake/aplfwsrc.inc index 6f26bab..f9ee742 100755 --- a/aplfw/build/common/gmake/aplfwsrc.inc +++ b/aplfw/build/common/gmake/aplfwsrc.inc @@ -16,10 +16,19 @@ INC_DIRS += $(APLFW_DIR) # Systems # -------------------------------------------------- +SYSTEM_DIR = $(APLFW_DIR)/system/system +SRC_DIRS += $(SYSTEM_DIR) +CSRCS += $(SYSTEM_DIR)/system_initialize.c \ + $(SYSTEM_DIR)/system_boot.c + + # System API SYSAPI_DIR = $(APLFW_DIR)/system/sysapi SRC_DIRS += $(SYSAPI_DIR) -CSRCS += $(SYSAPI_DIR)/sysevt_clear.c \ +CSRCS += $(SYSAPI_DIR)/sysapi_initialize.c \ + $(SYSAPI_DIR)/sysloc_lock.c \ + $(SYSAPI_DIR)/sysloc_unlock.c \ + $(SYSAPI_DIR)/sysevt_clear.c \ $(SYSAPI_DIR)/sysevt_create.c \ $(SYSAPI_DIR)/sysevt_delete.c \ $(SYSAPI_DIR)/sysevt_set.c \ @@ -43,9 +52,6 @@ CSRCS += $(SYSAPI_DIR)/sysevt_clear.c \ $(SYSAPI_DIR)/sysprc_exit.c \ $(SYSAPI_DIR)/sysprc_getcurrenthandle.c \ $(SYSAPI_DIR)/sysprc_start.c \ - $(SYSAPI_DIR)/system_initialize.c \ - $(SYSAPI_DIR)/system_lock.c \ - $(SYSAPI_DIR)/system_unlock.c \ $(SYSAPI_DIR)/systim_wait.c diff --git a/aplfw/sample/arm/ez_arm7/sample.c b/aplfw/sample/arm/ez_arm7/sample.c index b4ca4ad..207caba 100755 --- a/aplfw/sample/arm/ez_arm7/sample.c +++ b/aplfw/sample/arm/ez_arm7/sample.c @@ -14,6 +14,7 @@ #include #include "kernel.h" #include "kernel_id.h" +#include "system/system/system.h" #include "system/sysapi/sysapi.h" #include "system/file/console.h" #include "system/process/process.h" @@ -33,14 +34,13 @@ C_PC16550DRV g_Pc16550Drv[1]; C_VT100DRV g_Vt100Drv[1]; -int System_Boot(VPARAM Param); #define PINSEL0 ((volatile UW *)0xe002c000) + void Sample_Task(VP_INT exinf) { - T_PROCESS_INF ProcInfo; HANDLE hTty; HANDLE hCon; @@ -56,8 +56,7 @@ void Sample_Task(VP_INT exinf) /* システム初期化 */ System_Initialize(g_SystemHeap, sizeof(g_SystemHeap)); - File_Initialize(); - Command_Initialize(); + /*************************/ @@ -68,11 +67,17 @@ void Sample_Task(VP_INT exinf) Pc16550Drv_Create(&g_Pc16550Drv[0], (void *)0xe000c000, 2, 6, (14700000/4), 64); File_AddDevice("com0", (C_DRVOBJ *)&g_Pc16550Drv[0]); - /* シリアル上にコンソールを生成( /dev/com0 に登録) */ + /* シリアルを開く */ hTty = File_Open("/dev/com0", FILE_OPEN_READ | FILE_OPEN_WRITE); + + /* シリアル上にコンソールを生成( /dev/com0 に登録) */ Vt100Drv_Create(&g_Vt100Drv[0], hTty); File_AddDevice("con0", (C_DRVOBJ *)&g_Vt100Drv[0]); + /* コンソールを開く */ + hCon = File_Open("/dev/con0", FILE_OPEN_READ | FILE_OPEN_WRITE); + + /*************************/ /* コマンド登録 */ @@ -88,24 +93,7 @@ void Sample_Task(VP_INT exinf) /*************************/ /* システムプロセス起動 */ /*************************/ - - hCon = File_Open("/dev/con0", FILE_OPEN_READ | FILE_OPEN_WRITE); - ProcInfo.hTty = hTty; - ProcInfo.hConsole = hCon; - ProcInfo.hStdIn = hCon; - ProcInfo.hStdOut = hCon; - ProcInfo.hStdErr = hCon; - Process_CreateEx(System_Boot, 0, 4096, PROCESS_PRIORITY_NORMAL, &ProcInfo); - - return; -} - - -/* システムプロセス */ -int System_Boot(VPARAM Param) -{ - /* シェル起動 */ - return Command_Execute("hsh", NULL); + System_Boot(hTty, hCon, "hsh", 4096); } diff --git a/aplfw/system/process/process.h b/aplfw/system/process/process.h index 686a564..1fb7560 100755 --- a/aplfw/system/process/process.h +++ b/aplfw/system/process/process.h @@ -19,7 +19,7 @@ /* プロセス固有情報 */ typedef struct t_process_inf { - HANDLE hTty; /* ターミナル */ + HANDLE hTerminal; /* ターミナル */ HANDLE hConsole; /* コンソール */ HANDLE hStdIn; /* 標準入力 */ HANDLE hStdOut; /* 標準出力 */ @@ -39,7 +39,7 @@ HANDLE Process_GetCurrentHandle(void); int Process_GetExitCode(HANDLE hProcess); const T_PROCESS_INF *Process_GetInfo(HANDLE hProcess); -#define Process_GetTty() (Process_GetInfo(Process_GetCurrentHandle())->hTty) +#define Process_GetTerminal() (Process_GetInfo(Process_GetCurrentHandle())->hTerminal) #define Process_GetConsole() (Process_GetInfo(Process_GetCurrentHandle())->hConsole) #define Process_GetStdIn() (Process_GetInfo(Process_GetCurrentHandle())->hStdIn) #define Process_GetStdOut() (Process_GetInfo(Process_GetCurrentHandle())->hStdOut) diff --git a/aplfw/system/sysapi/sysapi.h b/aplfw/system/sysapi/sysapi.h index 2b97968..e6d5a2c 100755 --- a/aplfw/system/sysapi/sysapi.h +++ b/aplfw/system/sysapi/sysapi.h @@ -44,11 +44,11 @@ extern "C" { #endif /* 初期化 */ -void System_Initialize(void *pMem, MEMSIZE lSize); /* システムの初期化処理 */ +void SysApi_Initialize(void *pMem, MEMSIZE lSize); /* システムの初期化処理 */ /* システムロック */ -void System_Lock(void); /* システム全体のロック */ -void System_Unlock(void); /* システム全体のロック解除 */ +void SysLoc_Lock(void); /* システム全体のロック */ +void SysLok_Unlock(void); /* システム全体のロック解除 */ /* システム用メモリ制御API */ void *SysMem_Alloc(MEMSIZE Size); /* システムメモリの割り当て */ diff --git a/aplfw/system/sysapi/system_initialize.c b/aplfw/system/sysapi/sysapi_initialize.c similarity index 71% rename from aplfw/system/sysapi/system_initialize.c rename to aplfw/system/sysapi/sysapi_initialize.c index 53c84d5..6404fb5 100755 --- a/aplfw/system/sysapi/system_initialize.c +++ b/aplfw/system/sysapi/sysapi_initialize.c @@ -4,7 +4,7 @@ * @file system.h * @brief %jp{システム用API定義} * - * Copyright (C) 2006 by Project HOS + * Copyright (C) 2006-2007 by Project HOS * http://sourceforge.jp/projects/hos/ */ @@ -15,17 +15,13 @@ #include "kernel.h" -SYSMTX_HANDLE System_hMtx; SYSMTX_HANDLE SysMem_hMtx; C_MEMPOL SysMem_MemPol; /* システムの初期化 */ -void System_Initialize(void *pMem, MEMSIZE Size) +void SysApi_Initialize(void *pMem, MEMSIZE Size) { - /* システムロックの作成 */ - System_hMtx = SysMtx_Create(); /* システムロック用ミューテックス生成 */ - /* メモリ管理の初期化 */ SysMem_hMtx = SysMtx_Create(); /* メモリ管理用排他制御用ミューテックス生成 */ MemPol_Create(&SysMem_MemPol, pMem, Size); /* メモリプール生成 */ diff --git a/aplfw/system/sysapi/sysapi_local.h b/aplfw/system/sysapi/sysapi_local.h index 4938c0d..f46b05e 100755 --- a/aplfw/system/sysapi/sysapi_local.h +++ b/aplfw/system/sysapi/sysapi_local.h @@ -18,7 +18,6 @@ #include "library/container/mempol/mempol.h" -extern SYSMTX_HANDLE System_hMtx; extern SYSMTX_HANDLE SysMem_hMtx; extern C_MEMPOL SysMem_MemPol; diff --git a/aplfw/system/sysapi/system_lock.c b/aplfw/system/sysapi/sysloc_lock.c similarity index 84% rename from aplfw/system/sysapi/system_lock.c rename to aplfw/system/sysapi/sysloc_lock.c index 0ba26b5..9c37abb 100755 --- a/aplfw/system/sysapi/system_lock.c +++ b/aplfw/system/sysapi/sysloc_lock.c @@ -10,12 +10,13 @@ #include "sysapi_local.h" +#include "kernel.h" /* システム全体のロック */ -void System_Lock(void) +void SysLoc_Lock(void) { - SysMtx_Lock(System_hMtx); + loc_cpu(); } diff --git a/aplfw/system/sysapi/system_unlock.c b/aplfw/system/sysapi/sysloc_unlock.c similarity index 84% rename from aplfw/system/sysapi/system_unlock.c rename to aplfw/system/sysapi/sysloc_unlock.c index 7ef656c..c143cb4 100755 --- a/aplfw/system/sysapi/system_unlock.c +++ b/aplfw/system/sysapi/sysloc_unlock.c @@ -13,9 +13,9 @@ /* システム全体のロック解除 */ -void System_Unlock(void) +void SysLoc_Unlock(void) { - SysMtx_Unlock(System_hMtx); + unl_cpu(); } diff --git a/aplfw/system/system/system.h b/aplfw/system/system/system.h new file mode 100755 index 0000000..dc63cfe --- /dev/null +++ b/aplfw/system/system/system.h @@ -0,0 +1,35 @@ +/** + * Hyper Operating System Application Framework + * + * @file system.h + * @brief %jp{システム用API定義} + * + * Copyright (C) 2006-2007 by Project HOS + * http://sourceforge.jp/projects/hos/ + */ + + + +#ifndef __HOS__system_h__ +#define __HOS__system_h__ + + +#include "system/type/type.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +void System_Initialize(void *pMem, MEMSIZE Size); +void System_Boot(HANDLE hTerminal, HANDLE hConsole, const char *pszCommand, int iStackSize); + +#ifdef __cplusplus +} +#endif + + +#endif /* __HOS__system_h__ */ + + +/* end of file */ diff --git a/aplfw/system/system/system_boot.c b/aplfw/system/system/system_boot.c new file mode 100755 index 0000000..bce6589 --- /dev/null +++ b/aplfw/system/system/system_boot.c @@ -0,0 +1,62 @@ +/** + * Hyper Operating System Application Framework + * + * @file system.h + * @brief %jp{システム用API定義} + * + * Copyright (C) 2006-2007 by Project HOS + * http://sourceforge.jp/projects/hos/ + */ + + +#include "hosaplfw.h" +#include "system/system/system.h" +#include "system/sysapi/sysapi.h" +#include "system/process/process.h" +#include "system/file/stdfile.h" + + +static int System_ProcessEntry(VPARAM Param); + + +/* システムのブート */ +void System_Boot(HANDLE hTerminal, HANDLE hConsole, const char *pszCommand, int iStackSize) +{ + T_PROCESS_INF ProcInf; + + ProcInf.hTerminal = hTerminal; + ProcInf.hConsole = hConsole; + ProcInf.hStdIn = hConsole; + ProcInf.hStdOut = hConsole; + ProcInf.hStdErr = hConsole; + Process_CreateEx(System_ProcessEntry, (VPARAM)pszCommand, iStackSize, PROCESS_PRIORITY_NORMAL, &ProcInf); +} + + +/* システムプロセス */ +int System_ProcessEntry(VPARAM Param) +{ + const char *pszCommand; + int iExitCode; + + pszCommand = (const char *)Param; + + /* 起動メッセージ */ + StdIo_PutString( + "\n\n" + "================================================================\n" + " Hyper Operating System Application Flamework --Alpha version\n" + "\n" + " Copyright (C) 1998-2006 by Project HOS\n" + " http://sourceforge.jp/projects/hos/\n" + "================================================================\n" + "\n"); + + /* 起動 */ + Command_Execute(pszCommand, &iExitCode); + + return iExitCode; +} + + +/* end of file */ diff --git a/aplfw/system/system/system_initialize.c b/aplfw/system/system/system_initialize.c new file mode 100755 index 0000000..8108815 --- /dev/null +++ b/aplfw/system/system/system_initialize.c @@ -0,0 +1,32 @@ +/** + * Hyper Operating System Application Framework + * + * @file system.h + * @brief %jp{システム用API定義} + * + * Copyright (C) 2006-2007 by Project HOS + * http://sourceforge.jp/projects/hos/ + */ + + +#include "system/system/system.h" +#include "system/sysapi/sysapi.h" +#include "system/file/file.h" +#include "system/command/command.h" + + +/* システムの初期化 */ +void System_Initialize(void *pMem, MEMSIZE Size) +{ + /* システムAPIの初期化 */ + SysApi_Initialize(pMem, Size); + + /* ファイルシステム初期化 */ + File_Initialize(); + + /* コマンドシステム初期化 */ + Command_Initialize(); +} + + +/* end of file */ -- 2.11.0