HANDLE hTty;
StdIo_PutString("\n[KeyTest] start\n");
- hTty = Process_GetTty();
+ hTty = Process_GetTerminal();
for ( ; ; )
{
# 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 \
$(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
#include <string.h>
#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"
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;
/* システム初期化 */
System_Initialize(g_SystemHeap, sizeof(g_SystemHeap));
- File_Initialize();
- Command_Initialize();
+
/*************************/
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);
+
+
/*************************/
/* コマンド登録 */
/*************************/
/* システムプロセス起動 */
/*************************/
-
- 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);
}
/* プロセス固有情報 */
typedef struct t_process_inf
{
- HANDLE hTty; /* ターミナル */
+ HANDLE hTerminal; /* ターミナル */
HANDLE hConsole; /* コンソール */
HANDLE hStdIn; /* 標準入力 */
HANDLE hStdOut; /* 標準出力 */
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)
#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); /* システムメモリの割り当て */
* @file system.h
* @brief %jp{システム用API定義}
*
- * Copyright (C) 2006 by Project HOS
+ * Copyright (C) 2006-2007 by Project HOS
* http://sourceforge.jp/projects/hos/
*/
#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); /* メモリプール生成 */
#include "library/container/mempol/mempol.h"
-extern SYSMTX_HANDLE System_hMtx;
extern SYSMTX_HANDLE SysMem_hMtx;
extern C_MEMPOL SysMem_MemPol;
#include "sysapi_local.h"
+#include "kernel.h"
/* システム全体のロック */
-void System_Lock(void)
+void SysLoc_Lock(void)
{
- SysMtx_Lock(System_hMtx);
+ loc_cpu();
}
/* システム全体のロック解除 */
-void System_Unlock(void)
+void SysLoc_Unlock(void)
{
- SysMtx_Unlock(System_hMtx);
+ unl_cpu();
}
--- /dev/null
+/**
+ * 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 */
--- /dev/null
+/**
+ * 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 */
--- /dev/null
+/**
+ * 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 */