OSDN Git Service

(none)
authorryuz <ryuz>
Tue, 26 Feb 2008 14:49:35 +0000 (14:49 +0000)
committerryuz <ryuz>
Tue, 26 Feb 2008 14:49:35 +0000 (14:49 +0000)
17 files changed:
aplfw/application/syscmd/commandlist/commandlist.h [new file with mode: 0755]
aplfw/application/syscmd/commandlist/commandlist_main.c [new file with mode: 0755]
aplfw/build/common/gmake/aplfwdep.inc
aplfw/build/common/gmake/aplfwsrc.inc
aplfw/build/common/nmake/aplfwdep.inc
aplfw/build/common/nmake/aplfwsrc.inc
aplfw/build/common/tmp_mkinc/mk_inc.pl
aplfw/driver/volume/fat/fatvol_filecreate.c [deleted file]
aplfw/driver/volume/fat/fatvol_filedelete.c [deleted file]
aplfw/library/container/assoc/assoc.c
aplfw/library/container/assoc/assoc.h
aplfw/system/command/command.c
aplfw/system/command/command.h
kernel/build/win/win32/gcc/gmake.mak
kernel/source/arch/proc/win/win32/ctxctl.c
kernel/source/object/tsk/sus_tsk.c
sample/win/win32/sample.c

diff --git a/aplfw/application/syscmd/commandlist/commandlist.h b/aplfw/application/syscmd/commandlist/commandlist.h
new file mode 100755 (executable)
index 0000000..95ef95b
--- /dev/null
@@ -0,0 +1,30 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  commandlist.h
+ * @brief %jp{コマンドリストコマンド}
+ *
+ * Copyright (C) 2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#ifndef __HOS__commandlist_h__
+#define __HOS__commandlist_h__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int CommandList_Main(int argc, char *argv[]);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __HOS__commandlist_h__ */
+
+
+/* end of file */
diff --git a/aplfw/application/syscmd/commandlist/commandlist_main.c b/aplfw/application/syscmd/commandlist/commandlist_main.c
new file mode 100755 (executable)
index 0000000..c070398
--- /dev/null
@@ -0,0 +1,36 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  commandlist_main.c
+ * @brief %jp{コマンドリストコマンド}
+ *
+ * Copyright (C) 2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdlib.h>
+#include <string.h>
+#include "hosaplfw.h"
+#include "commandlist.h"
+
+
+int CommandList_Main(int argc, char *argv[])
+{
+       COMMAND_PTR     Ptr;
+       const char      *pszName;
+               
+       /* 最初のコマンドを得る */
+       Ptr = Command_GetFirstCommand();
+       while ( Ptr != NULL )
+       {
+               Ptr = Command_GetNextCommand(Ptr, &pszName);
+               
+               StdIo_PrintFormat("%s\n", pszName);
+       }
+               
+       return 0;
+}
+
+
+/* end of file */
index 1482820..05e312f 100755 (executable)
@@ -392,6 +392,7 @@ $(OBJS_DIR)/shell_curright.$(EXT_OBJ):      $(SHELL_DIR)/shell_curright.c   $(COMMON_HE
 $(OBJS_DIR)/shell_curleft.$(EXT_OBJ):  $(SHELL_DIR)/shell_curleft.c    $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/shell_replaceline.$(EXT_OBJ):      $(SHELL_DIR)/shell_replaceline.c        $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/processlist_main.$(EXT_OBJ):       $(PROCESSLIST_DIR)/processlist_main.c   $(COMMON_HEADERS)
+$(OBJS_DIR)/commandlist_main.$(EXT_OBJ):       $(COMMANDLIST_DIR)/commandlist_main.c   $(COMMON_HEADERS)
 $(OBJS_DIR)/memdump_main.$(EXT_OBJ):   $(MEMDUMP_DIR)/memdump_main.c   $(COMMON_HEADERS)
 $(OBJS_DIR)/memwrite_main.$(EXT_OBJ):  $(MEMWRITE_DIR)/memwrite_main.c $(COMMON_HEADERS)
 $(OBJS_DIR)/memtest_main.$(EXT_OBJ):   $(MEMTEST_DIR)/memtest_main.c   $(COMMON_HEADERS)
index dece3df..d5ebf19 100755 (executable)
@@ -51,6 +51,7 @@ LINK_FATVOL           ?= Yes
 # Applications
 LINK_SHELL            ?= Yes
 LINK_PROCESSLIST      ?= Yes
+LINK_COMMANDLIST      ?= Yes
 LINK_MEMDUMP          ?= Yes
 LINK_MEMWRITE         ?= Yes
 LINK_MEMTEST          ?= Yes
@@ -702,6 +703,14 @@ CSRCS += $(PROCESSLIST_DIR)/processlist_main.c
 endif
 
 
+# Command List
+ifeq ($(LINK_COMMANDLIST),Yes)
+COMMANDLIST_DIR = $(HOSAPLFW_DIR)/application/syscmd/commandlist
+SRC_DIRS += $(COMMANDLIST_DIR)
+CSRCS += $(COMMANDLIST_DIR)/commandlist_main.c
+endif
+
+
 # Memory Dump
 ifeq ($(LINK_MEMDUMP),Yes)
 MEMDUMP_DIR = $(HOSAPLFW_DIR)/application/utility/memdump
index e490fec..594ced9 100755 (executable)
@@ -1450,6 +1450,13 @@ $(OBJS_DIR)\processlist_main.c : $(PROCESSLIST_DIR)\processlist_main.c
        $(CMD_CP) $(PROCESSLIST_DIR)\processlist_main.c $(OBJS_DIR)\
 
 
+$(OBJS_DIR)\commandlist.h : $(COMMANDLIST_DIR)\commandlist.h
+       $(CMD_CP) $(COMMANDLIST_DIR)\commandlist.h $(OBJS_DIR)\
+
+$(OBJS_DIR)\commandlist_main.c : $(COMMANDLIST_DIR)\commandlist_main.c
+       $(CMD_CP) $(COMMANDLIST_DIR)\commandlist_main.c $(OBJS_DIR)\
+
+
 $(OBJS_DIR)\memdump.h : $(MEMDUMP_DIR)\memdump.h
        $(CMD_CP) $(MEMDUMP_DIR)\memdump.h $(OBJS_DIR)\
 
@@ -1956,6 +1963,8 @@ $(OBJS_DIR)\shell_replaceline.$(EXT_OBJ): $(OBJS_DIR)\shell_replaceline.c $(COMM
 
 $(OBJS_DIR)\processlist_main.$(EXT_OBJ):       $(OBJS_DIR)\processlist_main.c  $(COMMON_HEADERS)
 
+$(OBJS_DIR)\commandlist_main.$(EXT_OBJ):       $(OBJS_DIR)\commandlist_main.c  $(COMMON_HEADERS)
+
 $(OBJS_DIR)\memdump_main.$(EXT_OBJ):   $(OBJS_DIR)\memdump_main.c      $(COMMON_HEADERS)
 
 $(OBJS_DIR)\memwrite_main.$(EXT_OBJ):  $(OBJS_DIR)\memwrite_main.c     $(COMMON_HEADERS)
index c7517eb..2fac074 100755 (executable)
@@ -115,6 +115,9 @@ LINK_SHELL            = Yes
 !ifndef LINK_PROCESSLIST
 LINK_PROCESSLIST      = Yes
 !endif
+!ifndef LINK_COMMANDLIST
+LINK_COMMANDLIST      = Yes
+!endif
 !ifndef LINK_MEMDUMP
 LINK_MEMDUMP          = Yes
 !endif
@@ -1226,6 +1229,15 @@ OBJS  = $(OBJS)  $(OBJS_DIR)\processlist_main.$(EXT_OBJ)
 !endif
 
 
+# Command List
+!if "$(LINK_COMMANDLIST)" == "Yes"
+COMMANDLIST_DIR = $(HOSAPLFW_DIR)\application\syscmd\commandlist
+HEADERS = $(HEADERS) $(OBJS_DIR)\commandlist.h
+CSRCS = $(CSRCS) $(COMMANDLIST_DIR)\commandlist_main.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\commandlist_main.$(EXT_OBJ)
+!endif
+
+
 # Memory Dump
 !if "$(LINK_MEMDUMP)" == "Yes"
 MEMDUMP_DIR = $(HOSAPLFW_DIR)\application\utility\memdump
index 80db4d9..935c590 100755 (executable)
                        ],
                ],
                [
+                       "Command List",
+                       "\$(COMMON_HEADERS)",
+                       "\$(HOSAPLFW_DIR)/application/syscmd/commandlist",
+                       "COMMANDLIST",
+                       "Yes",
+                       [
+                               "commandlist.h",
+                       ],
+                       [
+                               "commandlist_main.c",
+                       ],
+               ],
+               [
                        "Memory Dump",
                        "\$(COMMON_HEADERS)",
                        "\$(HOSAPLFW_DIR)/application/utility/memdump",
diff --git a/aplfw/driver/volume/fat/fatvol_filecreate.c b/aplfw/driver/volume/fat/fatvol_filecreate.c
deleted file mode 100755 (executable)
index 8b8385e..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/** 
- *  Hyper Operating System  Application Framework
- *
- * @file  fatvol.c
- * @brief %jp{FATボリューム用デバイスドライバ}
- *
- * Copyright (C) 2006-2007 by Project HOS
- * http://sourceforge.jp/projects/hos/
- */
-
-
-#include <stdio.h>
-#include "fatvol_local.h"
-
-
-HANDLE FatVol_FileCreate(C_FATVOL *self, FATVOL_UINT uiStartCluster, FATVOL_UINT uiDirCluster, FATVOL_UINT uiDirEntryPos, FILE_POS FileSize, int iMode)
-{
-       C_FATFILE *pFile;
-
-       /* create file descriptor */
-       if ( (pFile = SysMem_Alloc(sizeof(*pFile))) == NULL )
-       {
-               return HANDLE_NULL;
-       }
-       FileObj_Create(&pFile->FileObj, (C_DRVOBJ *)self, NULL);
-       
-       /* 初期化 */
-       pFile->iMode          = iMode;
-       pFile->uiStartCluster = uiStartCluster;
-       pFile->uiDirCluster   = uiDirCluster;
-       pFile->uiDirEntryPos  = uiDirEntryPos;
-       pFile->FileSize       = FileSize;
-       
-       /* ファイルポインタ初期化 */
-       pFile->FilePos          = 0;
-       
-       return (HANDLE)pFile;
-}
-
-
-/* end of file */
diff --git a/aplfw/driver/volume/fat/fatvol_filedelete.c b/aplfw/driver/volume/fat/fatvol_filedelete.c
deleted file mode 100755 (executable)
index e28c9d1..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/** 
- *  Hyper Operating System  Application Framework
- *
- * @file  fatvol.c
- * @brief %jp{FATボリューム用デバイスドライバ}
- *
- * Copyright (C) 2006-2007 by Project HOS
- * http://sourceforge.jp/projects/hos/
- */
-
-
-#include <stdio.h>
-#include "fatvol_local.h"
-
-
-void FatVol_FileDelete(C_FATVOL *self, HANDLE hFile)
-{
-       C_FATFILE *pFile;
-       
-       pFile = (C_FATFILE *)hFile;
-       
-       FileObj_Delete(pFile);
-       SysMem_Free(pFile);
-}
-
-
-/* end of file */
index c202ec5..425a304 100755 (executable)
@@ -73,3 +73,27 @@ const void *Assoc_Get(C_ASSOC *self, const char *pszKey)
        
        return NULL;
 }
+
+
+ASSOC_POS Assoc_GetFirst(C_ASSOC *self)
+{
+       return (ASSOC_POS)List_GetHeadPos(&self->List);
+}
+
+
+ASSOC_POS Assoc_GetNext(C_ASSOC *self, ASSOC_POS *Pos)
+{
+       return (ASSOC_POS)List_GetNextPos(&self->List, (LIST_POS)Pos);
+}
+
+
+const void *Assoc_GetAt(C_ASSOC *self, ASSOC_POS *Pos, const char **ppszKey)
+{
+       char *pDataKey;
+
+       pDataKey = List_GetAt(&self->List, Pos);
+       *ppszKey = pDataKey;
+       
+       return (void *)(pDataKey + MEMIF_ALIGNSIZE(strlen(pDataKey) + 1));
+}
+
index 4320701..22c1dd1 100755 (executable)
 
 #include "library/container/list/list.h"
 
-#define ASSOC_ERR_OK   0
-#define ASSOC_ERR_NG   (-1)
+#define ASSOC_ERR_OK           0
+#define ASSOC_ERR_NG           (-1)
+#define ASSOC_POS_NULL         LIST_POS_NULL
 
 typedef void*  ASSOC_POS;
 typedef int     ASSOC_ERR;
 
+
 /* ストリームバッファクラス */
 typedef struct c_assocbuf
 {
index b81f62d..d74c835 100755 (executable)
@@ -98,3 +98,39 @@ COMMAND_ERR Command_Execute(const char *pszCommandLine, int *piExitCode)
        return Ret;
 }
 
+
+COMMAND_PTR Command_GetFirstCommand(void)
+{
+       ASSOC_POS Pos;
+       
+       Pos = Assoc_GetFirst(&Command_Assoc);
+       
+       return (COMMAND_PTR)Pos;
+}
+
+
+COMMAND_PTR Command_GetNextCommand(COMMAND_PTR Ptr, const char **ppszName)
+{
+       ASSOC_POS Pos;
+       
+       Pos = (ASSOC_POS)Ptr;
+       
+       Assoc_GetAt(&Command_Assoc, Pos, ppszName);
+       
+       Pos = Assoc_GetNext(&Command_Assoc, Pos);
+
+       return (COMMAND_PTR)Pos;
+}
+
+
+COMMAND_FUNC Command_GetCommandAddr(const char *pszName)
+{
+       const COMMAND_FUNC *ppfncMain;
+
+       ppfncMain = (const COMMAND_FUNC *)Assoc_Get(&Command_Assoc, pszName);
+       
+       return *ppfncMain;
+}
+
+
+
index 728a867..7a02bca 100755 (executable)
 typedef int COMMAND_ERR;
 typedef int (*COMMAND_FUNC)(int argc, char *argv[]);
 
+typedef        void    *COMMAND_PTR;   
+
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-void        Command_Initialize(void);
-void        Command_AddCommand(const char *pszName, COMMAND_FUNC pfncMain);            /* コマンドを登録する */
-COMMAND_ERR Command_Execute(const char *pszCommandLine, int *piExitCode);              /* コマンドを実行する */
+void         Command_Initialize(void);
+void         Command_AddCommand(const char *pszName, COMMAND_FUNC pfncMain);           /* コマンドを登録する */
+COMMAND_ERR  Command_Execute(const char *pszCommandLine, int *piExitCode);                     /* コマンドを実行する */
+
+COMMAND_PTR  Command_GetFirstCommand(void);
+COMMAND_PTR     Command_GetNextCommand(COMMAND_PTR Ptr, const char **ppszName);
+COMMAND_FUNC Command_GetCommandAddr(const char *pszName);
 
 #ifdef __cplusplus
 }
index 1700c8f..119e2ca 100755 (executable)
@@ -50,9 +50,9 @@ INC_DIRS += $(INC_PROC_DIR) $(INC_IRC_DIR)
 SRC_DIRS += $(SRC_PROC_DIR) $(SRC_PROC_DIR) $(SRC_PROC_ASM_DIR) $(SRC_IRC_DIR) $(SRC_IRC_ASM_DIR)
 
 # %jp{オプションフラグ}
-AFLAGS  +
-CFLAGS  +
-ARFLAGS +
+AFLAGS  = 
+CFLAGS  = 
+ARFLAGS = 
 
 # %jp{コンフィギュレータ定義}
 CFGRTR_DIR = $(TOP_DIR)/cfgrtr/build/gcc
index 3f2d77f..169a1fb 100755 (executable)
@@ -9,25 +9,23 @@
  */
 
 
-
+#include <process.h>
 #include "core/core.h"
 #include "object/inhobj.h"
 
 
+static unsigned __stdcall      _kernel_ctx_ent(void *param);                                   /**< %jp{スレッドの開始関数} */
+static void                                    _kernel_run_ctx(_KERNEL_T_CTXCB *pk_ctxcb);             /**< %jp{スレッドの実行開始} */
+static void                                    _kernel_wai_ctx(_KERNEL_T_CTXCB *pk_ctxcb);             /**< %jp{スレッドの停止待ち} */
 
-static DWORD WINAPI            _kernel_ctx_ent(LPVOID param);                                  /* %jp{スレッドの開始関数} */
-static void                            _kernel_run_ctx(_KERNEL_T_CTXCB *pk_ctxcb);             /* %jp{スレッドの実行開始} */
-static void                            _kernel_wai_ctx(_KERNEL_T_CTXCB *pk_ctxcb);             /* %jp{スレッドの停止待ち} */
-
-
-static CRITICAL_SECTION        _kernel_win32_CriticalSection;
-static _KERNEL_T_CTXCB *_kernel_win32_runctxcb        = NULL;          /**< %jp{実行中のコンテキスト} */
-static _KERNEL_T_CTXCB *_kernel_win32_intctxcb        = NULL;          /**< %jp{割込みからスイッチされたコンテキスト} */
-static HANDLE                  _kernel_win32_hSemDisInt       = NULL;          /**< %jp{システムの排他制御用セマフォ} */
-static volatile BOOL   _kernel_win32_blIntCtx         = FALSE;         /**< %jp{割込み処理中フラグ} */
-static volatile BOOL   _kernel_win32_blDisInt         = TRUE;          /**< %jp{割込み禁止フラグ} */
-static volatile BOOL   _kernel_win32_blIntDsp         = FALSE;         /**< %jp{割込み時ディスパッチフラグ} */
-static DWORD                   _kernel_win32_hPrimaryThreadId = 0;                     /**< %jp{プライマリスレッドID} */
+static CRITICAL_SECTION                _kernel_win32_CriticalSection;
+static _KERNEL_T_CTXCB         *_kernel_win32_runctxcb        = NULL;                  /**< %jp{実行中のコンテキスト} */
+static _KERNEL_T_CTXCB         *_kernel_win32_intctxcb        = NULL;                  /**< %jp{割込みからスイッチされたコンテキスト} */
+static HANDLE                          _kernel_win32_hSemDisInt       = NULL;                  /**< %jp{システムの排他制御用セマフォ} */
+static volatile BOOL           _kernel_win32_blIntCtx         = FALSE;                 /**< %jp{割込み処理中フラグ} */
+static volatile BOOL           _kernel_win32_blDisInt         = TRUE;                  /**< %jp{割込み禁止フラグ} */
+static volatile BOOL           _kernel_win32_blIntDsp         = FALSE;                 /**< %jp{割込み時ディスパッチフラグ} */
+static DWORD                           _kernel_win32_hPrimaryThreadId = 0;                             /**< %jp{プライマリスレッドID} */
 
 
 
@@ -80,7 +78,6 @@ void _kernel_ena_int(void)
 }
 
 
-
 /** %jp{実行コンテキストの作成} */
 void _kernel_cre_ctx(
                _KERNEL_T_CTXCB *pk_ctxcb,              /* コンテキストを作成するアドレス */
@@ -97,13 +94,17 @@ void _kernel_cre_ctx(
        
        /* %jp{コンテキストスレッド生成} */
        pk_ctxcb->hEvent  = CreateEvent(NULL, FALSE, FALSE, NULL);
-       pk_ctxcb->hThread = CreateThread(NULL, 0, _kernel_ctx_ent, (LPVOID)pk_ctxcb,
-                                                                       0, &pk_ctxcb->dwThreadId);
+
+#if defined(_MSC_VER)  /* Visual-C++ の場合 */
+       pk_ctxcb->hThread = (HANDLE)_beginthreadex(NULL, 0, _kernel_ctx_ent, (void *)pk_ctxcb, 0, &pk_ctxcb->dwThreadId);
+#else                                  /* Visual-C++ 以外 */
+       pk_ctxcb->hThread = CreateThread(NULL, 0, _kernel_ctx_ent, (LPVOID)pk_ctxcb, 0, &pk_ctxcb->dwThreadId);
+#endif
 }
 
 
 /** %jp{スレッドの開始関数} */
-DWORD WINAPI _kernel_ctx_ent(LPVOID param)
+unsigned __stdcall _kernel_ctx_ent(void *param)
 {
        _KERNEL_T_CTXCB *pk_ctxcb;
 
@@ -218,7 +219,6 @@ void _kernel_run_ctx(_KERNEL_T_CTXCB *pk_ctxcb)
 }
 
 
-
 /* %jp{割り込み用処理} */
 void vsig_int(int inhno)
 {
index e21ccaf..1b5ad1d 100755 (executable)
@@ -58,7 +58,7 @@ ER sus_tsk(
        
        /* %jp{コンテキストチェック} */       
 #if _KERNEL_SPT_SUS_TSK_E_CTX
-               if ( _KERNEL_SYS_GET_RUNTSK() == _KERNEL_SYS_SNS_DPN() && _KERNEL_SYS_SNS_DPN() )
+               if ( _KERNEL_SYS_GET_RUNTSK() == tskhdl && _KERNEL_SYS_SNS_DPN() )
                {
                        _KERNEL_LEAVE_SVC();    /* %jp{サービスコールを出る}%en{leave service-call} */
                        return E_CTX;                   /* %jp{コンテキスト不正} */
index a1b023c..58bc39a 100755 (executable)
@@ -37,7 +37,6 @@ void Sample_Initialize(VP_INT exinf)
 {
        T_CMPF cmpf;
        T_CMBX cmbx;
-       T_CCYC ccyc;
        
        /* %jp{固定長メモリプール生成} */
        cmpf.mpfatr = TA_TFIFO;