OSDN Git Service

(none)
authorryuz <ryuz>
Fri, 30 May 2008 12:22:56 +0000 (12:22 +0000)
committerryuz <ryuz>
Fri, 30 May 2008 12:22:56 +0000 (12:22 +0000)
52 files changed:
aplfw/application/filecmd/filelist/filelist_main.c
aplfw/application/syscmd/processsignal/processsignal.h [new file with mode: 0755]
aplfw/application/syscmd/processsignal/processsignal_main.c [new file with mode: 0755]
aplfw/application/syscmd/shell/shell_executecommand.c
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/misc/memdrv/memdrv.h
aplfw/driver/misc/memdrv/memdrv_close.c
aplfw/driver/misc/memdrv/memdrv_constructor.c [new file with mode: 0755]
aplfw/driver/misc/memdrv/memdrv_create.c
aplfw/driver/misc/memdrv/memdrv_delete.c
aplfw/driver/misc/memdrv/memdrv_destructor.c [new file with mode: 0755]
aplfw/driver/misc/memdrv/memdrv_local.h
aplfw/driver/misc/memdrv/memdrv_open.c
aplfw/driver/misc/memdrv/memdrv_seek.c
aplfw/driver/misc/memdrv/memdrv_write.c
aplfw/driver/misc/memdrv/memfile.h [new file with mode: 0755]
aplfw/driver/misc/memdrv/memfile_constructor.c [new file with mode: 0755]
aplfw/driver/misc/memdrv/memfile_create.c [new file with mode: 0755]
aplfw/driver/misc/memdrv/memfile_delete.c [new file with mode: 0755]
aplfw/driver/misc/memdrv/memfile_destructor.c [new file with mode: 0755]
aplfw/driver/misc/memdrv/memfile_local.h [new file with mode: 0755]
aplfw/driver/volume/fat/fatvol_iocontrol.c
aplfw/hosaplfw.h
aplfw/sample/arm/ez_arm7/boot.c
aplfw/sample/ia32/pcat/boot.c
aplfw/system/file/drvobj.h
aplfw/system/file/file.h
aplfw/system/file/file_driveropen.c [new file with mode: 0755]
aplfw/system/file/file_getdriverinformation.c [new file with mode: 0755]
aplfw/system/file/sysvol_iocontrol.c
aplfw/system/process/process.h
aplfw/system/process/process_constructor.c
aplfw/system/process/process_create.c
aplfw/system/process/process_createex.c [new file with mode: 0755]
aplfw/system/process/process_local.h
aplfw/system/process/process_sendsignal.c [new file with mode: 0755]
aplfw/system/process/process_setsignalproc.c [new file with mode: 0755]
aplfw/system/sysapi/sysapi.h
aplfw/system/sysapi/sysprc_sendsignal.c [new file with mode: 0755]
aplfw/system/sysapi/sysprc_setsignalhandler.c [new file with mode: 0755]
aplfw/system/system/system_initialize.c
kernel/build/common/gmake/knldep.inc
kernel/build/common/gmake/knlsrc.inc
kernel/build/common/nmake/knldep.inc
kernel/build/common/nmake/knlsrc.inc
kernel/build/common/tmp_mkinc/mk_inc.pl
kernel/source/object/sem/isig_sem.c
kernel/source/object/tsk/ena_tex.c [new file with mode: 0755]

index a02cda8..c730cda 100755 (executable)
@@ -50,8 +50,8 @@ int FileList_Main(int argc, char *argv[])
        if ( iFlagL )
        {
                /* 詳細表示 */
-               StdIo_PutString("filename        size      attr\n");
-               StdIo_PutString("------------+-----------+------\n");
+               StdIo_PutString("filename        size      attr  information\n");
+               StdIo_PutString("------------+-----------+------+---------------\n");
        }
        
        /* ディレクトリを読み出す */ 
@@ -65,6 +65,8 @@ int FileList_Main(int argc, char *argv[])
                        if ( FileInf.Attribute & FILE_ATTR_HIDDEN )             { StdIo_PutChar('h'); } else { StdIo_PutChar('-'); }
                        if ( FileInf.Attribute & FILE_ATTR_DIR )                { StdIo_PutChar('d'); } else { StdIo_PutChar('-'); }
                        if ( FileInf.Attribute & FILE_ATTR_ARCHIVE )    { StdIo_PutChar('a'); } else { StdIo_PutChar('-'); }
+                       StdIo_PutChar(' ');
+                       StdIo_PutString(FileInf.szInformation);
                        StdIo_PutChar('\n');
                }
                else
diff --git a/aplfw/application/syscmd/processsignal/processsignal.h b/aplfw/application/syscmd/processsignal/processsignal.h
new file mode 100755 (executable)
index 0000000..5bf7e8d
--- /dev/null
@@ -0,0 +1,30 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  processsignal.h
+ * @brief %jp{プロセスシグナルコマンド}
+ *
+ * Copyright (C) 2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#ifndef __HOS__processsignal_h__
+#define __HOS__processsignal_h__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int ProcessSignal_Main(int argc, char *argv[]);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __HOS__processsignal_h__ */
+
+
+/* end of file */
diff --git a/aplfw/application/syscmd/processsignal/processsignal_main.c b/aplfw/application/syscmd/processsignal/processsignal_main.c
new file mode 100755 (executable)
index 0000000..5428173
--- /dev/null
@@ -0,0 +1,43 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  processsignal.h
+ * @brief %jp{プロセスシグナルコマンド}
+ *
+ * Copyright (C) 2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdlib.h>
+#include <string.h>
+#include "hosaplfw.h"
+#include "processsignal.h"
+
+
+int ProcessSignal_Main(int argc, char *argv[])
+{
+       HANDLE  hProcess;
+       int             iSignal = PROCESS_SIGNAL_KILL;
+       
+       if ( argc < 2 )
+       {
+               StdIo_PrintFormat(
+                               "<usage>\n"
+                               " %s [options] prosesshandle\n\n",
+                               argv[0]
+                       );
+               return 1;
+       }
+       
+       hProcess = (HANDLE)strtoul(argv[1], NULL, 0);
+       
+       
+       Process_SendSignal(hProcess, iSignal);
+       
+       
+       return 0;
+}
+
+
+/* end of file */
index 4e0fe19..936e6b9 100755 (executable)
@@ -48,7 +48,7 @@ int Shell_ExecuteCommand(C_SHELL *self, const char *pszCommand)
                Inf.hStdIn         = Process_GetStdIn(HANDLE_NULL);                     /* 標準入力 */
                Inf.hStdOut        = Process_GetStdOut(HANDLE_NULL);            /* 標準出力 */
                Inf.hStdErr        = Process_GetStdErr(HANDLE_NULL);            /* 標準エラー出力 */
-               hProcess = Process_Create(&Inf);
+               hProcess = Process_CreateEx(&Inf);
 
                if ( iBackGround )
                {
index 5ba3593..340c720 100755 (executable)
@@ -43,6 +43,8 @@ $(OBJS_DIR)/sysprc_suspend.$(EXT_OBJ):        $(SYSAPI_DIR)/sysprc_suspend.c  $(COMMON_H
 $(OBJS_DIR)/sysprc_resume.$(EXT_OBJ):  $(SYSAPI_DIR)/sysprc_resume.c   $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/sysprc_getparam.$(EXT_OBJ):        $(SYSAPI_DIR)/sysprc_getparam.c $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/sysprc_getcurrenthandle.$(EXT_OBJ):        $(SYSAPI_DIR)/sysprc_getcurrenthandle.c $(COMMON_HEADERS) $(SYSTEM_HEADERS)
+$(OBJS_DIR)/sysprc_setsignalhandler.$(EXT_OBJ):        $(SYSAPI_DIR)/sysprc_setsignalhandler.c $(COMMON_HEADERS) $(SYSTEM_HEADERS)
+$(OBJS_DIR)/sysprc_sendsignal.$(EXT_OBJ):      $(SYSAPI_DIR)/sysprc_sendsignal.c       $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/systim_signal.$(EXT_OBJ):  $(SYSAPI_DIR)/systim_signal.c   $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/systim_wait.$(EXT_OBJ):    $(SYSAPI_DIR)/systim_wait.c     $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/systim_getsystemtime.$(EXT_OBJ):   $(SYSAPI_DIR)/systim_getsystemtime.c    $(COMMON_HEADERS) $(SYSTEM_HEADERS)
@@ -61,12 +63,15 @@ $(OBJS_DIR)/memory.$(EXT_OBJ):      $(MEMORY_DIR)/memory.c  $(COMMON_HEADERS) $(SYSTEM
 $(OBJS_DIR)/time_getsystemtime.$(EXT_OBJ):     $(TIME_DIR)/time_getsystemtime.c        $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/time_wait.$(EXT_OBJ):      $(TIME_DIR)/time_wait.c $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/process_create.$(EXT_OBJ): $(PROCESS_DIR)/process_create.c $(COMMON_HEADERS) $(SYSTEM_HEADERS)
+$(OBJS_DIR)/process_createex.$(EXT_OBJ):       $(PROCESS_DIR)/process_createex.c       $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/process_delete.$(EXT_OBJ): $(PROCESS_DIR)/process_delete.c $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/process_constructor.$(EXT_OBJ):    $(PROCESS_DIR)/process_constructor.c    $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/process_destructor.$(EXT_OBJ):     $(PROCESS_DIR)/process_destructor.c     $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/process_getcurrenthandle.$(EXT_OBJ):       $(PROCESS_DIR)/process_getcurrenthandle.c       $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/process_exit.$(EXT_OBJ):   $(PROCESS_DIR)/process_exit.c   $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/process_waitexit.$(EXT_OBJ):       $(PROCESS_DIR)/process_waitexit.c       $(COMMON_HEADERS) $(SYSTEM_HEADERS)
+$(OBJS_DIR)/process_setsignalproc.$(EXT_OBJ):  $(PROCESS_DIR)/process_setsignalproc.c  $(COMMON_HEADERS) $(SYSTEM_HEADERS)
+$(OBJS_DIR)/process_sendsignal.$(EXT_OBJ):     $(PROCESS_DIR)/process_sendsignal.c     $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/process_getexitcode.$(EXT_OBJ):    $(PROCESS_DIR)/process_getexitcode.c    $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/process_getparam.$(EXT_OBJ):       $(PROCESS_DIR)/process_getparam.c       $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/process_setparam.$(EXT_OBJ):       $(PROCESS_DIR)/process_setparam.c       $(COMMON_HEADERS) $(SYSTEM_HEADERS)
@@ -125,6 +130,8 @@ $(OBJS_DIR)/file_read.$(EXT_OBJ):   $(FILE_DIR)/file_read.c $(COMMON_HEADERS) $(SY
 $(OBJS_DIR)/file_readdir.$(EXT_OBJ):   $(FILE_DIR)/file_readdir.c      $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/file_seek.$(EXT_OBJ):      $(FILE_DIR)/file_seek.c $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/file_write.$(EXT_OBJ):     $(FILE_DIR)/file_write.c        $(COMMON_HEADERS) $(SYSTEM_HEADERS)
+$(OBJS_DIR)/file_driveropen.$(EXT_OBJ):        $(FILE_DIR)/file_driveropen.c   $(COMMON_HEADERS) $(SYSTEM_HEADERS)
+$(OBJS_DIR)/file_getdriverinformation.$(EXT_OBJ):      $(FILE_DIR)/file_getdriverinformation.c $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/file_printformat.$(EXT_OBJ):       $(FILE_DIR)/file_printformat.c  $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/file_printformatv.$(EXT_OBJ):      $(FILE_DIR)/file_printformatv.c $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/stdio_printformat.$(EXT_OBJ):      $(FILE_DIR)/stdio_printformat.c $(COMMON_HEADERS) $(SYSTEM_HEADERS)
@@ -445,6 +452,21 @@ $(OBJS_DIR)/fatfile_create.$(EXT_OBJ):     $(FATVOL_DIR)/fatfile_create.c  $(COMMON_H
 $(OBJS_DIR)/fatfile_delete.$(EXT_OBJ): $(FATVOL_DIR)/fatfile_delete.c  $(COMMON_HEADERS)
 $(OBJS_DIR)/fatfile_constructor.$(EXT_OBJ):    $(FATVOL_DIR)/fatfile_constructor.c     $(COMMON_HEADERS)
 $(OBJS_DIR)/fatfile_destructor.$(EXT_OBJ):     $(FATVOL_DIR)/fatfile_destructor.c      $(COMMON_HEADERS)
+$(OBJS_DIR)/memdrv_create.$(EXT_OBJ):  $(MEMDRV_DIR)/memdrv_create.c   $(COMMON_HEADERS)
+$(OBJS_DIR)/memdrv_delete.$(EXT_OBJ):  $(MEMDRV_DIR)/memdrv_delete.c   $(COMMON_HEADERS)
+$(OBJS_DIR)/memdrv_constructor.$(EXT_OBJ):     $(MEMDRV_DIR)/memdrv_constructor.c      $(COMMON_HEADERS)
+$(OBJS_DIR)/memdrv_destructor.$(EXT_OBJ):      $(MEMDRV_DIR)/memdrv_destructor.c       $(COMMON_HEADERS)
+$(OBJS_DIR)/memdrv_open.$(EXT_OBJ):    $(MEMDRV_DIR)/memdrv_open.c     $(COMMON_HEADERS)
+$(OBJS_DIR)/memdrv_close.$(EXT_OBJ):   $(MEMDRV_DIR)/memdrv_close.c    $(COMMON_HEADERS)
+$(OBJS_DIR)/memdrv_iocontrol.$(EXT_OBJ):       $(MEMDRV_DIR)/memdrv_iocontrol.c        $(COMMON_HEADERS)
+$(OBJS_DIR)/memdrv_flush.$(EXT_OBJ):   $(MEMDRV_DIR)/memdrv_flush.c    $(COMMON_HEADERS)
+$(OBJS_DIR)/memdrv_read.$(EXT_OBJ):    $(MEMDRV_DIR)/memdrv_read.c     $(COMMON_HEADERS)
+$(OBJS_DIR)/memdrv_seek.$(EXT_OBJ):    $(MEMDRV_DIR)/memdrv_seek.c     $(COMMON_HEADERS)
+$(OBJS_DIR)/memdrv_write.$(EXT_OBJ):   $(MEMDRV_DIR)/memdrv_write.c    $(COMMON_HEADERS)
+$(OBJS_DIR)/memfile_create.$(EXT_OBJ): $(MEMDRV_DIR)/memfile_create.c  $(COMMON_HEADERS)
+$(OBJS_DIR)/memfile_delete.$(EXT_OBJ): $(MEMDRV_DIR)/memfile_delete.c  $(COMMON_HEADERS)
+$(OBJS_DIR)/memfile_constructor.$(EXT_OBJ):    $(MEMDRV_DIR)/memfile_constructor.c     $(COMMON_HEADERS)
+$(OBJS_DIR)/memfile_destructor.$(EXT_OBJ):     $(MEMDRV_DIR)/memfile_destructor.c      $(COMMON_HEADERS)
 $(OBJS_DIR)/shell_main.$(EXT_OBJ):     $(SHELL_DIR)/shell_main.c       $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/shell_create.$(EXT_OBJ):   $(SHELL_DIR)/shell_create.c     $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)/shell_delete.$(EXT_OBJ):   $(SHELL_DIR)/shell_delete.c     $(COMMON_HEADERS) $(SYSTEM_HEADERS)
@@ -457,6 +479,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)/processsignal_main.$(EXT_OBJ):     $(PROCESSSIGNAL_DIR)/processsignal_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)
index 5c6d3f7..dcc1713 100755 (executable)
@@ -50,10 +50,12 @@ LINK_MX1UART          ?= No
 LINK_MN103SC          ?= No
 LINK_WINSOCK          ?= No
 LINK_FATVOL           ?= Yes
+LINK_MEMDRV           ?= Yes
 
 # Applications
 LINK_SHELL            ?= Yes
 LINK_PROCESSLIST      ?= Yes
+LINK_PROCESSSIGNAL    ?= Yes
 LINK_COMMANDLIST      ?= Yes
 LINK_MEMDUMP          ?= Yes
 LINK_MEMWRITE         ?= Yes
@@ -132,6 +134,8 @@ CSRCS += $(SYSAPI_DIR)/sysprc_suspend.c
 CSRCS += $(SYSAPI_DIR)/sysprc_resume.c
 CSRCS += $(SYSAPI_DIR)/sysprc_getparam.c
 CSRCS += $(SYSAPI_DIR)/sysprc_getcurrenthandle.c
+CSRCS += $(SYSAPI_DIR)/sysprc_setsignalhandler.c
+CSRCS += $(SYSAPI_DIR)/sysprc_sendsignal.c
 CSRCS += $(SYSAPI_DIR)/systim_signal.c
 CSRCS += $(SYSAPI_DIR)/systim_wait.c
 CSRCS += $(SYSAPI_DIR)/systim_getsystemtime.c
@@ -178,12 +182,15 @@ ifeq ($(LINK_PROCESS),Yes)
 PROCESS_DIR = $(HOSAPLFW_DIR)/system/process
 SRC_DIRS += $(PROCESS_DIR)
 CSRCS += $(PROCESS_DIR)/process_create.c
+CSRCS += $(PROCESS_DIR)/process_createex.c
 CSRCS += $(PROCESS_DIR)/process_delete.c
 CSRCS += $(PROCESS_DIR)/process_constructor.c
 CSRCS += $(PROCESS_DIR)/process_destructor.c
 CSRCS += $(PROCESS_DIR)/process_getcurrenthandle.c
 CSRCS += $(PROCESS_DIR)/process_exit.c
 CSRCS += $(PROCESS_DIR)/process_waitexit.c
+CSRCS += $(PROCESS_DIR)/process_setsignalproc.c
+CSRCS += $(PROCESS_DIR)/process_sendsignal.c
 CSRCS += $(PROCESS_DIR)/process_getexitcode.c
 CSRCS += $(PROCESS_DIR)/process_getparam.c
 CSRCS += $(PROCESS_DIR)/process_setparam.c
@@ -256,6 +263,8 @@ CSRCS += $(FILE_DIR)/file_read.c
 CSRCS += $(FILE_DIR)/file_readdir.c
 CSRCS += $(FILE_DIR)/file_seek.c
 CSRCS += $(FILE_DIR)/file_write.c
+CSRCS += $(FILE_DIR)/file_driveropen.c
+CSRCS += $(FILE_DIR)/file_getdriverinformation.c
 CSRCS += $(FILE_DIR)/file_printformat.c
 CSRCS += $(FILE_DIR)/file_printformatv.c
 CSRCS += $(FILE_DIR)/stdio_printformat.c
@@ -764,6 +773,28 @@ CSRCS += $(FATVOL_DIR)/fatfile_destructor.c
 endif
 
 
+# Memory maped file driver
+ifeq ($(LINK_MEMDRV),Yes)
+MEMDRV_DIR = $(HOSAPLFW_DIR)/driver/misc/memdrv
+SRC_DIRS += $(MEMDRV_DIR)
+CSRCS += $(MEMDRV_DIR)/memdrv_create.c
+CSRCS += $(MEMDRV_DIR)/memdrv_delete.c
+CSRCS += $(MEMDRV_DIR)/memdrv_constructor.c
+CSRCS += $(MEMDRV_DIR)/memdrv_destructor.c
+CSRCS += $(MEMDRV_DIR)/memdrv_open.c
+CSRCS += $(MEMDRV_DIR)/memdrv_close.c
+CSRCS += $(MEMDRV_DIR)/memdrv_iocontrol.c
+CSRCS += $(MEMDRV_DIR)/memdrv_flush.c
+CSRCS += $(MEMDRV_DIR)/memdrv_read.c
+CSRCS += $(MEMDRV_DIR)/memdrv_seek.c
+CSRCS += $(MEMDRV_DIR)/memdrv_write.c
+CSRCS += $(MEMDRV_DIR)/memfile_create.c
+CSRCS += $(MEMDRV_DIR)/memfile_delete.c
+CSRCS += $(MEMDRV_DIR)/memfile_constructor.c
+CSRCS += $(MEMDRV_DIR)/memfile_destructor.c
+endif
+
+
 
 # --------------------------------------------------
 #  Applications
@@ -795,6 +826,14 @@ CSRCS += $(PROCESSLIST_DIR)/processlist_main.c
 endif
 
 
+# Process Signal
+ifeq ($(LINK_PROCESSSIGNAL),Yes)
+PROCESSSIGNAL_DIR = $(HOSAPLFW_DIR)/application/syscmd/processsignal
+SRC_DIRS += $(PROCESSSIGNAL_DIR)
+CSRCS += $(PROCESSSIGNAL_DIR)/processsignal_main.c
+endif
+
+
 # Command List
 ifeq ($(LINK_COMMANDLIST),Yes)
 COMMANDLIST_DIR = $(HOSAPLFW_DIR)/application/syscmd/commandlist
index 12131d9..2393b8b 100755 (executable)
@@ -132,6 +132,12 @@ $(OBJS_DIR)\sysprc_getparam.c : $(SYSAPI_DIR)\sysprc_getparam.c
 $(OBJS_DIR)\sysprc_getcurrenthandle.c : $(SYSAPI_DIR)\sysprc_getcurrenthandle.c
        $(CMD_CP) $(SYSAPI_DIR)\sysprc_getcurrenthandle.c $(OBJS_DIR)\
 
+$(OBJS_DIR)\sysprc_setsignalhandler.c : $(SYSAPI_DIR)\sysprc_setsignalhandler.c
+       $(CMD_CP) $(SYSAPI_DIR)\sysprc_setsignalhandler.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\sysprc_sendsignal.c : $(SYSAPI_DIR)\sysprc_sendsignal.c
+       $(CMD_CP) $(SYSAPI_DIR)\sysprc_sendsignal.c $(OBJS_DIR)\
+
 $(OBJS_DIR)\systim_signal.c : $(SYSAPI_DIR)\systim_signal.c
        $(CMD_CP) $(SYSAPI_DIR)\systim_signal.c $(OBJS_DIR)\
 
@@ -211,6 +217,9 @@ $(OBJS_DIR)\process_local.h : $(PROCESS_DIR)\process_local.h
 $(OBJS_DIR)\process_create.c : $(PROCESS_DIR)\process_create.c
        $(CMD_CP) $(PROCESS_DIR)\process_create.c $(OBJS_DIR)\
 
+$(OBJS_DIR)\process_createex.c : $(PROCESS_DIR)\process_createex.c
+       $(CMD_CP) $(PROCESS_DIR)\process_createex.c $(OBJS_DIR)\
+
 $(OBJS_DIR)\process_delete.c : $(PROCESS_DIR)\process_delete.c
        $(CMD_CP) $(PROCESS_DIR)\process_delete.c $(OBJS_DIR)\
 
@@ -229,6 +238,12 @@ $(OBJS_DIR)\process_exit.c : $(PROCESS_DIR)\process_exit.c
 $(OBJS_DIR)\process_waitexit.c : $(PROCESS_DIR)\process_waitexit.c
        $(CMD_CP) $(PROCESS_DIR)\process_waitexit.c $(OBJS_DIR)\
 
+$(OBJS_DIR)\process_setsignalproc.c : $(PROCESS_DIR)\process_setsignalproc.c
+       $(CMD_CP) $(PROCESS_DIR)\process_setsignalproc.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\process_sendsignal.c : $(PROCESS_DIR)\process_sendsignal.c
+       $(CMD_CP) $(PROCESS_DIR)\process_sendsignal.c $(OBJS_DIR)\
+
 $(OBJS_DIR)\process_getexitcode.c : $(PROCESS_DIR)\process_getexitcode.c
        $(CMD_CP) $(PROCESS_DIR)\process_getexitcode.c $(OBJS_DIR)\
 
@@ -468,6 +483,12 @@ $(OBJS_DIR)\file_seek.c : $(FILE_DIR)\file_seek.c
 $(OBJS_DIR)\file_write.c : $(FILE_DIR)\file_write.c
        $(CMD_CP) $(FILE_DIR)\file_write.c $(OBJS_DIR)\
 
+$(OBJS_DIR)\file_driveropen.c : $(FILE_DIR)\file_driveropen.c
+       $(CMD_CP) $(FILE_DIR)\file_driveropen.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\file_getdriverinformation.c : $(FILE_DIR)\file_getdriverinformation.c
+       $(CMD_CP) $(FILE_DIR)\file_getdriverinformation.c $(OBJS_DIR)\
+
 $(OBJS_DIR)\file_printformat.c : $(FILE_DIR)\file_printformat.c
        $(CMD_CP) $(FILE_DIR)\file_printformat.c $(OBJS_DIR)\
 
@@ -1625,6 +1646,64 @@ $(OBJS_DIR)\fatfile_destructor.c : $(FATVOL_DIR)\fatfile_destructor.c
        $(CMD_CP) $(FATVOL_DIR)\fatfile_destructor.c $(OBJS_DIR)\
 
 
+$(OBJS_DIR)\memdrv.h : $(MEMDRV_DIR)\memdrv.h
+       $(CMD_CP) $(MEMDRV_DIR)\memdrv.h $(OBJS_DIR)\
+
+$(OBJS_DIR)\memdrv_local.h : $(MEMDRV_DIR)\memdrv_local.h
+       $(CMD_CP) $(MEMDRV_DIR)\memdrv_local.h $(OBJS_DIR)\
+
+$(OBJS_DIR)\memfile.h : $(MEMDRV_DIR)\memfile.h
+       $(CMD_CP) $(MEMDRV_DIR)\memfile.h $(OBJS_DIR)\
+
+$(OBJS_DIR)\memfile_local.h : $(MEMDRV_DIR)\memfile_local.h
+       $(CMD_CP) $(MEMDRV_DIR)\memfile_local.h $(OBJS_DIR)\
+
+$(OBJS_DIR)\memdrv_create.c : $(MEMDRV_DIR)\memdrv_create.c
+       $(CMD_CP) $(MEMDRV_DIR)\memdrv_create.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\memdrv_delete.c : $(MEMDRV_DIR)\memdrv_delete.c
+       $(CMD_CP) $(MEMDRV_DIR)\memdrv_delete.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\memdrv_constructor.c : $(MEMDRV_DIR)\memdrv_constructor.c
+       $(CMD_CP) $(MEMDRV_DIR)\memdrv_constructor.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\memdrv_destructor.c : $(MEMDRV_DIR)\memdrv_destructor.c
+       $(CMD_CP) $(MEMDRV_DIR)\memdrv_destructor.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\memdrv_open.c : $(MEMDRV_DIR)\memdrv_open.c
+       $(CMD_CP) $(MEMDRV_DIR)\memdrv_open.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\memdrv_close.c : $(MEMDRV_DIR)\memdrv_close.c
+       $(CMD_CP) $(MEMDRV_DIR)\memdrv_close.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\memdrv_iocontrol.c : $(MEMDRV_DIR)\memdrv_iocontrol.c
+       $(CMD_CP) $(MEMDRV_DIR)\memdrv_iocontrol.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\memdrv_flush.c : $(MEMDRV_DIR)\memdrv_flush.c
+       $(CMD_CP) $(MEMDRV_DIR)\memdrv_flush.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\memdrv_read.c : $(MEMDRV_DIR)\memdrv_read.c
+       $(CMD_CP) $(MEMDRV_DIR)\memdrv_read.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\memdrv_seek.c : $(MEMDRV_DIR)\memdrv_seek.c
+       $(CMD_CP) $(MEMDRV_DIR)\memdrv_seek.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\memdrv_write.c : $(MEMDRV_DIR)\memdrv_write.c
+       $(CMD_CP) $(MEMDRV_DIR)\memdrv_write.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\memfile_create.c : $(MEMDRV_DIR)\memfile_create.c
+       $(CMD_CP) $(MEMDRV_DIR)\memfile_create.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\memfile_delete.c : $(MEMDRV_DIR)\memfile_delete.c
+       $(CMD_CP) $(MEMDRV_DIR)\memfile_delete.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\memfile_constructor.c : $(MEMDRV_DIR)\memfile_constructor.c
+       $(CMD_CP) $(MEMDRV_DIR)\memfile_constructor.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\memfile_destructor.c : $(MEMDRV_DIR)\memfile_destructor.c
+       $(CMD_CP) $(MEMDRV_DIR)\memfile_destructor.c $(OBJS_DIR)\
+
+
 $(OBJS_DIR)\shell.h : $(SHELL_DIR)\shell.h
        $(CMD_CP) $(SHELL_DIR)\shell.h $(OBJS_DIR)\
 
@@ -1672,6 +1751,13 @@ $(OBJS_DIR)\processlist_main.c : $(PROCESSLIST_DIR)\processlist_main.c
        $(CMD_CP) $(PROCESSLIST_DIR)\processlist_main.c $(OBJS_DIR)\
 
 
+$(OBJS_DIR)\processsignal.h : $(PROCESSSIGNAL_DIR)\processsignal.h
+       $(CMD_CP) $(PROCESSSIGNAL_DIR)\processsignal.h $(OBJS_DIR)\
+
+$(OBJS_DIR)\processsignal_main.c : $(PROCESSSIGNAL_DIR)\processsignal_main.c
+       $(CMD_CP) $(PROCESSSIGNAL_DIR)\processsignal_main.c $(OBJS_DIR)\
+
+
 $(OBJS_DIR)\commandlist.h : $(COMMANDLIST_DIR)\commandlist.h
        $(CMD_CP) $(COMMANDLIST_DIR)\commandlist.h $(OBJS_DIR)\
 
@@ -1826,6 +1912,8 @@ $(OBJS_DIR)\sysprc_suspend.$(EXT_OBJ):    $(OBJS_DIR)\sysprc_suspend.c    $(COMMON_HEA
 $(OBJS_DIR)\sysprc_resume.$(EXT_OBJ):  $(OBJS_DIR)\sysprc_resume.c     $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\sysprc_getparam.$(EXT_OBJ):        $(OBJS_DIR)\sysprc_getparam.c   $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\sysprc_getcurrenthandle.$(EXT_OBJ):        $(OBJS_DIR)\sysprc_getcurrenthandle.c   $(COMMON_HEADERS) $(SYSTEM_HEADERS)
+$(OBJS_DIR)\sysprc_setsignalhandler.$(EXT_OBJ):        $(OBJS_DIR)\sysprc_setsignalhandler.c   $(COMMON_HEADERS) $(SYSTEM_HEADERS)
+$(OBJS_DIR)\sysprc_sendsignal.$(EXT_OBJ):      $(OBJS_DIR)\sysprc_sendsignal.c $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\systim_signal.$(EXT_OBJ):  $(OBJS_DIR)\systim_signal.c     $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\systim_wait.$(EXT_OBJ):    $(OBJS_DIR)\systim_wait.c       $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\systim_getsystemtime.$(EXT_OBJ):   $(OBJS_DIR)\systim_getsystemtime.c      $(COMMON_HEADERS) $(SYSTEM_HEADERS)
@@ -1848,12 +1936,15 @@ $(OBJS_DIR)\time_getsystemtime.$(EXT_OBJ):      $(OBJS_DIR)\time_getsystemtime.c        $(CO
 $(OBJS_DIR)\time_wait.$(EXT_OBJ):      $(OBJS_DIR)\time_wait.c $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 
 $(OBJS_DIR)\process_create.$(EXT_OBJ): $(OBJS_DIR)\process_create.c    $(COMMON_HEADERS) $(SYSTEM_HEADERS)
+$(OBJS_DIR)\process_createex.$(EXT_OBJ):       $(OBJS_DIR)\process_createex.c  $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\process_delete.$(EXT_OBJ): $(OBJS_DIR)\process_delete.c    $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\process_constructor.$(EXT_OBJ):    $(OBJS_DIR)\process_constructor.c       $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\process_destructor.$(EXT_OBJ):     $(OBJS_DIR)\process_destructor.c        $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\process_getcurrenthandle.$(EXT_OBJ):       $(OBJS_DIR)\process_getcurrenthandle.c  $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\process_exit.$(EXT_OBJ):   $(OBJS_DIR)\process_exit.c      $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\process_waitexit.$(EXT_OBJ):       $(OBJS_DIR)\process_waitexit.c  $(COMMON_HEADERS) $(SYSTEM_HEADERS)
+$(OBJS_DIR)\process_setsignalproc.$(EXT_OBJ):  $(OBJS_DIR)\process_setsignalproc.c     $(COMMON_HEADERS) $(SYSTEM_HEADERS)
+$(OBJS_DIR)\process_sendsignal.$(EXT_OBJ):     $(OBJS_DIR)\process_sendsignal.c        $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\process_getexitcode.$(EXT_OBJ):    $(OBJS_DIR)\process_getexitcode.c       $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\process_getparam.$(EXT_OBJ):       $(OBJS_DIR)\process_getparam.c  $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\process_setparam.$(EXT_OBJ):       $(OBJS_DIR)\process_setparam.c  $(COMMON_HEADERS) $(SYSTEM_HEADERS)
@@ -1914,6 +2005,8 @@ $(OBJS_DIR)\file_read.$(EXT_OBJ): $(OBJS_DIR)\file_read.c $(COMMON_HEADERS) $(SY
 $(OBJS_DIR)\file_readdir.$(EXT_OBJ):   $(OBJS_DIR)\file_readdir.c      $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\file_seek.$(EXT_OBJ):      $(OBJS_DIR)\file_seek.c $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\file_write.$(EXT_OBJ):     $(OBJS_DIR)\file_write.c        $(COMMON_HEADERS) $(SYSTEM_HEADERS)
+$(OBJS_DIR)\file_driveropen.$(EXT_OBJ):        $(OBJS_DIR)\file_driveropen.c   $(COMMON_HEADERS) $(SYSTEM_HEADERS)
+$(OBJS_DIR)\file_getdriverinformation.$(EXT_OBJ):      $(OBJS_DIR)\file_getdriverinformation.c $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\file_printformat.$(EXT_OBJ):       $(OBJS_DIR)\file_printformat.c  $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\file_printformatv.$(EXT_OBJ):      $(OBJS_DIR)\file_printformatv.c $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\stdio_printformat.$(EXT_OBJ):      $(OBJS_DIR)\stdio_printformat.c $(COMMON_HEADERS) $(SYSTEM_HEADERS)
@@ -2260,6 +2353,22 @@ $(OBJS_DIR)\fatfile_delete.$(EXT_OBJ):   $(OBJS_DIR)\fatfile_delete.c    $(COMMON_HEA
 $(OBJS_DIR)\fatfile_constructor.$(EXT_OBJ):    $(OBJS_DIR)\fatfile_constructor.c       $(COMMON_HEADERS)
 $(OBJS_DIR)\fatfile_destructor.$(EXT_OBJ):     $(OBJS_DIR)\fatfile_destructor.c        $(COMMON_HEADERS)
 
+$(OBJS_DIR)\memdrv_create.$(EXT_OBJ):  $(OBJS_DIR)\memdrv_create.c     $(COMMON_HEADERS)
+$(OBJS_DIR)\memdrv_delete.$(EXT_OBJ):  $(OBJS_DIR)\memdrv_delete.c     $(COMMON_HEADERS)
+$(OBJS_DIR)\memdrv_constructor.$(EXT_OBJ):     $(OBJS_DIR)\memdrv_constructor.c        $(COMMON_HEADERS)
+$(OBJS_DIR)\memdrv_destructor.$(EXT_OBJ):      $(OBJS_DIR)\memdrv_destructor.c $(COMMON_HEADERS)
+$(OBJS_DIR)\memdrv_open.$(EXT_OBJ):    $(OBJS_DIR)\memdrv_open.c       $(COMMON_HEADERS)
+$(OBJS_DIR)\memdrv_close.$(EXT_OBJ):   $(OBJS_DIR)\memdrv_close.c      $(COMMON_HEADERS)
+$(OBJS_DIR)\memdrv_iocontrol.$(EXT_OBJ):       $(OBJS_DIR)\memdrv_iocontrol.c  $(COMMON_HEADERS)
+$(OBJS_DIR)\memdrv_flush.$(EXT_OBJ):   $(OBJS_DIR)\memdrv_flush.c      $(COMMON_HEADERS)
+$(OBJS_DIR)\memdrv_read.$(EXT_OBJ):    $(OBJS_DIR)\memdrv_read.c       $(COMMON_HEADERS)
+$(OBJS_DIR)\memdrv_seek.$(EXT_OBJ):    $(OBJS_DIR)\memdrv_seek.c       $(COMMON_HEADERS)
+$(OBJS_DIR)\memdrv_write.$(EXT_OBJ):   $(OBJS_DIR)\memdrv_write.c      $(COMMON_HEADERS)
+$(OBJS_DIR)\memfile_create.$(EXT_OBJ): $(OBJS_DIR)\memfile_create.c    $(COMMON_HEADERS)
+$(OBJS_DIR)\memfile_delete.$(EXT_OBJ): $(OBJS_DIR)\memfile_delete.c    $(COMMON_HEADERS)
+$(OBJS_DIR)\memfile_constructor.$(EXT_OBJ):    $(OBJS_DIR)\memfile_constructor.c       $(COMMON_HEADERS)
+$(OBJS_DIR)\memfile_destructor.$(EXT_OBJ):     $(OBJS_DIR)\memfile_destructor.c        $(COMMON_HEADERS)
+
 $(OBJS_DIR)\shell_main.$(EXT_OBJ):     $(OBJS_DIR)\shell_main.c        $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\shell_create.$(EXT_OBJ):   $(OBJS_DIR)\shell_create.c      $(COMMON_HEADERS) $(SYSTEM_HEADERS)
 $(OBJS_DIR)\shell_delete.$(EXT_OBJ):   $(OBJS_DIR)\shell_delete.c      $(COMMON_HEADERS) $(SYSTEM_HEADERS)
@@ -2274,6 +2383,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)\processsignal_main.$(EXT_OBJ):     $(OBJS_DIR)\processsignal_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)
index e65340e..f6af0c3 100755 (executable)
@@ -116,6 +116,9 @@ LINK_WINSOCK          = No
 !ifndef LINK_FATVOL
 LINK_FATVOL           = Yes
 !endif
+!ifndef LINK_MEMDRV
+LINK_MEMDRV           = Yes
+!endif
 
 # Applications
 !ifndef LINK_SHELL
@@ -124,6 +127,9 @@ LINK_SHELL            = Yes
 !ifndef LINK_PROCESSLIST
 LINK_PROCESSLIST      = Yes
 !endif
+!ifndef LINK_PROCESSSIGNAL
+LINK_PROCESSSIGNAL    = Yes
+!endif
 !ifndef LINK_COMMANDLIST
 LINK_COMMANDLIST      = Yes
 !endif
@@ -271,6 +277,10 @@ CSRCS = $(CSRCS) $(SYSAPI_DIR)\sysprc_getparam.c
 OBJS  = $(OBJS)  $(OBJS_DIR)\sysprc_getparam.$(EXT_OBJ)
 CSRCS = $(CSRCS) $(SYSAPI_DIR)\sysprc_getcurrenthandle.c
 OBJS  = $(OBJS)  $(OBJS_DIR)\sysprc_getcurrenthandle.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(SYSAPI_DIR)\sysprc_setsignalhandler.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\sysprc_setsignalhandler.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(SYSAPI_DIR)\sysprc_sendsignal.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\sysprc_sendsignal.$(EXT_OBJ)
 CSRCS = $(CSRCS) $(SYSAPI_DIR)\systim_signal.c
 OBJS  = $(OBJS)  $(OBJS_DIR)\systim_signal.$(EXT_OBJ)
 CSRCS = $(CSRCS) $(SYSAPI_DIR)\systim_wait.c
@@ -338,6 +348,8 @@ HEADERS = $(HEADERS) $(OBJS_DIR)\process.h
 HEADERS = $(HEADERS) $(OBJS_DIR)\process_local.h
 CSRCS = $(CSRCS) $(PROCESS_DIR)\process_create.c
 OBJS  = $(OBJS)  $(OBJS_DIR)\process_create.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(PROCESS_DIR)\process_createex.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\process_createex.$(EXT_OBJ)
 CSRCS = $(CSRCS) $(PROCESS_DIR)\process_delete.c
 OBJS  = $(OBJS)  $(OBJS_DIR)\process_delete.$(EXT_OBJ)
 CSRCS = $(CSRCS) $(PROCESS_DIR)\process_constructor.c
@@ -350,6 +362,10 @@ CSRCS = $(CSRCS) $(PROCESS_DIR)\process_exit.c
 OBJS  = $(OBJS)  $(OBJS_DIR)\process_exit.$(EXT_OBJ)
 CSRCS = $(CSRCS) $(PROCESS_DIR)\process_waitexit.c
 OBJS  = $(OBJS)  $(OBJS_DIR)\process_waitexit.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(PROCESS_DIR)\process_setsignalproc.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\process_setsignalproc.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(PROCESS_DIR)\process_sendsignal.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\process_sendsignal.$(EXT_OBJ)
 CSRCS = $(CSRCS) $(PROCESS_DIR)\process_getexitcode.c
 OBJS  = $(OBJS)  $(OBJS_DIR)\process_getexitcode.$(EXT_OBJ)
 CSRCS = $(CSRCS) $(PROCESS_DIR)\process_getparam.c
@@ -499,6 +515,10 @@ CSRCS = $(CSRCS) $(FILE_DIR)\file_seek.c
 OBJS  = $(OBJS)  $(OBJS_DIR)\file_seek.$(EXT_OBJ)
 CSRCS = $(CSRCS) $(FILE_DIR)\file_write.c
 OBJS  = $(OBJS)  $(OBJS_DIR)\file_write.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(FILE_DIR)\file_driveropen.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\file_driveropen.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(FILE_DIR)\file_getdriverinformation.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\file_getdriverinformation.$(EXT_OBJ)
 CSRCS = $(CSRCS) $(FILE_DIR)\file_printformat.c
 OBJS  = $(OBJS)  $(OBJS_DIR)\file_printformat.$(EXT_OBJ)
 CSRCS = $(CSRCS) $(FILE_DIR)\file_printformatv.c
@@ -1359,6 +1379,46 @@ OBJS  = $(OBJS)  $(OBJS_DIR)\fatfile_destructor.$(EXT_OBJ)
 !endif
 
 
+# Memory maped file driver
+!if "$(LINK_MEMDRV)" == "Yes"
+MEMDRV_DIR = $(HOSAPLFW_DIR)\driver\misc\memdrv
+HEADERS = $(HEADERS) $(OBJS_DIR)\memdrv.h
+HEADERS = $(HEADERS) $(OBJS_DIR)\memdrv_local.h
+HEADERS = $(HEADERS) $(OBJS_DIR)\memfile.h
+HEADERS = $(HEADERS) $(OBJS_DIR)\memfile_local.h
+CSRCS = $(CSRCS) $(MEMDRV_DIR)\memdrv_create.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\memdrv_create.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(MEMDRV_DIR)\memdrv_delete.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\memdrv_delete.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(MEMDRV_DIR)\memdrv_constructor.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\memdrv_constructor.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(MEMDRV_DIR)\memdrv_destructor.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\memdrv_destructor.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(MEMDRV_DIR)\memdrv_open.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\memdrv_open.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(MEMDRV_DIR)\memdrv_close.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\memdrv_close.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(MEMDRV_DIR)\memdrv_iocontrol.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\memdrv_iocontrol.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(MEMDRV_DIR)\memdrv_flush.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\memdrv_flush.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(MEMDRV_DIR)\memdrv_read.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\memdrv_read.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(MEMDRV_DIR)\memdrv_seek.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\memdrv_seek.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(MEMDRV_DIR)\memdrv_write.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\memdrv_write.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(MEMDRV_DIR)\memfile_create.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\memfile_create.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(MEMDRV_DIR)\memfile_delete.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\memfile_delete.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(MEMDRV_DIR)\memfile_constructor.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\memfile_constructor.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(MEMDRV_DIR)\memfile_destructor.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\memfile_destructor.$(EXT_OBJ)
+!endif
+
+
 
 # --------------------------------------------------
 #  Applications
@@ -1403,6 +1463,15 @@ OBJS  = $(OBJS)  $(OBJS_DIR)\processlist_main.$(EXT_OBJ)
 !endif
 
 
+# Process Signal
+!if "$(LINK_PROCESSSIGNAL)" == "Yes"
+PROCESSSIGNAL_DIR = $(HOSAPLFW_DIR)\application\syscmd\processsignal
+HEADERS = $(HEADERS) $(OBJS_DIR)\processsignal.h
+CSRCS = $(CSRCS) $(PROCESSSIGNAL_DIR)\processsignal_main.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\processsignal_main.$(EXT_OBJ)
+!endif
+
+
 # Command List
 !if "$(LINK_COMMANDLIST)" == "Yes"
 COMMANDLIST_DIR = $(HOSAPLFW_DIR)\application\syscmd\commandlist
index a111f7a..044257a 100755 (executable)
@@ -65,6 +65,8 @@
                                "sysprc_resume.c",
                                "sysprc_getparam.c",
                                "sysprc_getcurrenthandle.c",
+                               "sysprc_setsignalhandler.c",
+                               "sysprc_sendsignal.c",
                                "systim_signal.c",
                                "systim_wait.c",
                                "systim_getsystemtime.c",
                        ],
                        [
                                "process_create.c",
+                               "process_createex.c",
                                "process_delete.c",
                                "process_constructor.c",
                                "process_destructor.c",
                                "process_getcurrenthandle.c",
                                "process_exit.c",
                                "process_waitexit.c",
+                               "process_setsignalproc.c",
+                               "process_sendsignal.c",
                                "process_getexitcode.c",
                                "process_getparam.c",
                                "process_setparam.c",
                                "file_readdir.c",
                                "file_seek.c",
                                "file_write.c",
+                               "file_driveropen.c",
+                               "file_getdriverinformation.c",
                                "file_printformat.c",
                                "file_printformatv.c",
                                "stdio_printformat.c",
                                "fatfile_destructor.c",
                        ],
                ],
+               [
+                       "Memory maped file driver",
+                       "\$(COMMON_HEADERS)",
+                       "\$(HOSAPLFW_DIR)/driver/misc/memdrv",
+                       "MEMDRV",
+                       "Yes",
+                       [
+                               "memdrv.h",
+                               "memdrv_local.h",
+                               "memfile.h",
+                               "memfile_local.h",
+                       ],
+                       [
+                               "memdrv_create.c",
+                               "memdrv_delete.c",
+                               "memdrv_constructor.c",
+                               "memdrv_destructor.c",
+                               "memdrv_open.c",
+                               "memdrv_close.c",
+                               "memdrv_iocontrol.c",
+                               "memdrv_flush.c",
+                               "memdrv_read.c",
+                               "memdrv_seek.c",
+                               "memdrv_write.c",
+                               "memfile_create.c",
+                               "memfile_delete.c",
+                               "memfile_constructor.c",
+                               "memfile_destructor.c",
+                       ],
+               ],
        ],
        [
                "Applications",
                        ],
                ],
                [
+                       "Process Signal",
+                       "\$(COMMON_HEADERS)",
+                       "\$(HOSAPLFW_DIR)/application/syscmd/processsignal",
+                       "PROCESSSIGNAL",
+                       "Yes",
+                       [
+                               "processsignal.h",
+                       ],
+                       [
+                               "processsignal_main.c",
+                       ],
+               ],
+               [
                        "Command List",
                        "\$(COMMON_HEADERS)",
                        "\$(HOSAPLFW_DIR)/application/syscmd/commandlist",
index f4c9f04..cc0186b 100755 (executable)
 #define __HOS__memdrv_h__
 
 
-#include "system/sysapi/sysapi.h"
 #include "system/file/drvobj.h"
 
 
-/* ドライバ制御部 */
-typedef struct c_memdrv
-{
-       C_DRVOBJ                DrvObj;                 /* デバイスドライバを継承 */
-
-       int                             iOpenCount;             /* オープンカウンタ */
-       unsigned char   *pubMemAddr;    /* メモリの先頭アドレス */
-       FILE_POS                MemSize;                /* メモリサイズ */
-       FILE_POS                FileSize;               /* ファイルとしてのサイズ */
-       int                             iAttr;                  /* 属性 */
-       
-       SYSMTX_HANDLE   hMtx;                   /* 排他制御用ミューテックス */
-} C_MEMDRV;
-
-
-
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-void MemDrv_Create(C_MEMDRV *self, void *pMemAddr, FILE_POS MemSize, FILE_POS IniSize, int iAttr);             /**< コンストラクタ */
-void MemDrv_Delete(C_DRVOBJ *self);                                                                                                                                            /**< デストラクタ */
+HANDLE MemDrv_Create(void *pMemAddr, FILE_POS MemSize, FILE_POS IniSize, int iAttr);   /**< 生成 */
+void   MemDrv_Delete(HANDLE hDriver);                                                                                                  /**< 削除 */
 
 #ifdef __cplusplus
 }
index b4988ca..dd85501 100755 (executable)
@@ -22,15 +22,17 @@ void MemDrv_Close(C_DRVOBJ *pDrvObj, C_FILEOBJ *pFileObj)
        /* upper cast */
        self  = (C_MEMDRV *)pDrvObj;
        pFile = (C_MEMDRVFILE *)pFileObj;
+
+       SysMtx_Lock(self->hMtx);
        
        /* クローズ処理 */
-       SysMtx_Lock(self->hMtx);
        --self->iOpenCount;
-       SysMtx_Unlock(self->hMtx);
        
        /* ディスクリプタ削除 */
        FileObj_Delete((C_FILEOBJ *)pFile);     
        SysMem_Free(pFile);
+
+       SysMtx_Unlock(self->hMtx);
 }
 
 
diff --git a/aplfw/driver/misc/memdrv/memdrv_constructor.c b/aplfw/driver/misc/memdrv/memdrv_constructor.c
new file mode 100755 (executable)
index 0000000..90f3665
--- /dev/null
@@ -0,0 +1,52 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  memdrv.h
+ * @brief %jp{メモリマップドファイル用デバイスドライバ}
+ *
+ * Copyright (C) 2006-2007 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include "memdrv_local.h"
+
+
+/* 仮想関数テーブル */
+static const T_DRVOBJ_METHODS MemDrv_Methods = 
+       {
+               { MemDrv_Delete },
+               MemDrv_Open,
+               MemDrv_Close,
+               MemDrv_IoControl,
+               MemDrv_Seek,
+               MemDrv_Read,
+               MemDrv_Write,
+               MemDrv_Flush,
+       };
+
+
+/** コンストラクタ */
+void MemDrv_Constructor(C_MEMDRV *self, const T_DRVOBJ_METHODS *pMethods, void *pMemAddr, FILE_POS MemSize, FILE_POS IniSize, int iAttr)
+{
+       if ( pMethods == NULL )
+       {
+               pMethods = &MemDrv_Methods;
+       }
+       
+       /* 親クラスコンストラクタ呼び出し */
+       DrvObj_Constructor(&self->DrvObj, pMethods);
+       
+       /* メンバ変数初期化 */
+       self->iOpenCount = 0;
+       self->pubMemAddr = pMemAddr;    /* メモリの先頭アドレス */
+       self->MemSize    = MemSize;             /* メモリサイズ */
+       self->FileSize   = IniSize;             /* ファイルとしてのサイズ */
+       self->iAttr      = iAttr;               /* 属性 */
+       
+       /* ミューテックス生成 */
+       self->hMtx = SysMtx_Create(SYSMTX_ATTR_NORMAL);
+}
+
+
+/* end of file */
index 0ad2a20..b76f2d9 100755 (executable)
 #include "memdrv_local.h"
 
 
-/* 仮想関数テーブル */
-static const T_DRVOBJ_METHODS MemDrv_Methods = 
-       {
-               MemDrv_Delete,
-               MemDrv_Open,
-               MemDrv_Close,
-               MemDrv_IoControl,
-               MemDrv_Seek,
-               MemDrv_Read,
-               MemDrv_Write,
-               MemDrv_Flush,
-       };
-
-
-/** コンストラクタ */
-void MemDrv_Create(C_MEMDRV *self, void *pMemAddr, FILE_POS MemSize, FILE_POS IniSize, int iAttr)
+
+
+/** 生成 */
+HANDLE MemDrv_Create(void *pMemAddr, FILE_POS MemSize, FILE_POS IniSize, int iAttr)
 {
-       void *pMem;
+       C_MEMDRV *self;
        
-       /* 親クラスコンストラクタ呼び出し */
-       DrvObj_Create(&self->DrvObj, &MemDrv_Methods);
+       /* メモリ確保 */
+       if ( (self = (C_MEMDRV *)SysMem_Alloc(sizeof(C_MEMDRV))) == NULL )
+       {
+               return HANDLE_NULL;
+       }
        
-       /* メンバ変数初期化 */
-       self->iOpenCount = 0;
-       self->pubMemAddr = pMemAddr;    /* メモリの先頭アドレス */
-       self->MemSize    = MemSize;             /* メモリサイズ */
-       self->FileSize   = IniSize;             /* ファイルとしてのサイズ */
-       self->iAttr      = iAttr;               /* 属性 */
+       /* コンストラクタ呼び出し */
+       MemDrv_Constructor(self, NULL, pMemAddr, MemSize, IniSize, iAttr);
        
-       /* ミューテックス生成 */
-       self->hMtx = SysMtx_Create(SYSMTX_ATTR_NORMAL);
+       return (HANDLE)self;
 }
 
 
index b7b179b..914b303 100755 (executable)
 
 
 #include "memdrv_local.h"
-#include "system/sysapi/sysapi.h"
 
 
-/** デストラクタ */
-void MemDrv_Delete(C_DRVOBJ *pDrvObj)
+/** 削除 */
+void MemDrv_Delete(HANDLE hDriver)
 {
-       C_MEMDRV *self;
+       C_MEMDRV        *self;
        
        /* upper cast */
-       self = (C_MEMDRV *)pDrvObj;
+       self = (C_MEMDRV *)hDriver;
 
-       /* オブジェクト削除 */
-       SysMtx_Delete(self->hMtx);
+       /* デストラクタ呼び出し */
+       MemDrv_Destructor(self);
+       
+       /* メモリ削除 */
+       SysMem_Free(self);
 }
 
 
+
 /* end of file */
diff --git a/aplfw/driver/misc/memdrv/memdrv_destructor.c b/aplfw/driver/misc/memdrv/memdrv_destructor.c
new file mode 100755 (executable)
index 0000000..a7057d3
--- /dev/null
@@ -0,0 +1,26 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  memdrv.h
+ * @brief %jp{メモリマップドファイル用デバイスドライバ}
+ *
+ * Copyright (C) 2006-2007 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include "memdrv_local.h"
+
+
+/** デストラクタ */
+void MemDrv_Destructor(C_MEMDRV *self)
+{
+       /* オブジェクト削除 */
+       SysMtx_Delete(self->hMtx);
+       
+       /* 親クラスデストラクタ */
+       DrvObj_Destructor(&self->DrvObj);
+}
+
+
+/* end of file */
index 302233b..64b0064 100755 (executable)
 
 
 #include "memdrv.h"
+#include "system/file/drvobj_local.h"
+#include "system/sysapi/sysapi.h"
+
+
+/* ドライバ制御部 */
+typedef struct c_memdrv
+{
+       C_DRVOBJ                DrvObj;                 /* デバイスドライバを継承 */
+
+       int                             iOpenCount;             /* オープンカウンタ */
+       unsigned char   *pubMemAddr;    /* メモリの先頭アドレス */
+       FILE_POS                MemSize;                /* メモリサイズ */
+       FILE_POS                FileSize;               /* ファイルとしてのサイズ */
+       int                             iAttr;                  /* 属性 */
+       
+       SYSMTX_HANDLE   hMtx;                   /* 排他制御用ミューテックス */
+} C_MEMDRV;
+
 
 
 typedef struct c_memdrvfile
@@ -29,6 +47,9 @@ typedef struct c_memdrvfile
 extern "C" {
 #endif
 
+void      MemDrv_Constructor(C_MEMDRV *self, const T_DRVOBJ_METHODS *pMethods, void *pMemAddr, FILE_POS MemSize, FILE_POS IniSize, int iAttr); /** コンストラクタ */
+void      MemDrv_Destructor(C_MEMDRV *self);                                                                                                                                                                                                   /** デストラクタ */
+
 HANDLE    MemDrv_Open(C_DRVOBJ *pDrvObj, const char *pszPath, int iMode);
 void      MemDrv_Close(C_DRVOBJ *pDrvObj, C_FILEOBJ *pFileObj);
 FILE_ERR  MemDrv_IoControl(C_DRVOBJ *pDrvObj, C_FILEOBJ *pFileObj, int iFunc, void *pInBuf, FILE_SIZE InSize, const void *pOutBuf, FILE_SIZE OutSize);
index 81f421e..3291c4d 100755 (executable)
 
 #include "memdrv_local.h"
 #include "system/sysapi/sysapi.h"
-
+#include "memfile.h"
 
 
 /** オープン */
 HANDLE MemDrv_Open(C_DRVOBJ *pDrvObj, const char *pszPath, int iMode)
 {
-       C_MEMDRV                *self;
-       C_MEMDRVFILE    *pFile;
+       C_MEMDRV        *self;
+       HANDLE          hFile;
        
        /* upper cast */
        self = (C_MEMDRV *)pDrvObj;
+
+       SysMtx_Lock(self->hMtx);
        
        /* create file descriptor */
-       if ( (pFile = SysMem_Alloc(sizeof(C_MEMDRVFILE))) == NULL )
+       hFile = MemFile_Create(self, iMode);
+       if ( hFile == HANDLE_NULL )
        {
+               SysMtx_Unlock(self->hMtx);
                return HANDLE_NULL;
        }
-       FileObj_Create(&pFile->FileObj, pDrvObj, NULL);
-       pFile->FilePos = 0;
-
+       
+       if ( iMode & FILE_OPEN_CREATE )
+       {
+               self->FileSize = 0;
+       }
+       
        /* オープン処理 */
-       SysMtx_Lock(self->hMtx);
        self->iOpenCount++;
+
        SysMtx_Unlock(self->hMtx);
        
-       return (HANDLE)pFile;
+       return hFile;
 }
 
 
index 5e43e65..d9471a4 100755 (executable)
@@ -33,7 +33,7 @@ FILE_POS MemDrv_Seek(C_DRVOBJ *pDrvObj, C_FILEOBJ *pFileObj, FILE_POS Offset, in
                break;
                
        case FILE_SEEK_END:
-               pFile->FilePos = self ->FileSize - Offset;
+               pFile->FilePos = self ->FileSize + Offset;
                break;
                
        default:
index 573cca2..7f60dc4 100755 (executable)
 
 #include <string.h>
 #include "memdrv_local.h"
-
+#include "memfile_local.h"
 
 
 FILE_SIZE MemDrv_Write(C_DRVOBJ *pDrvObj, C_FILEOBJ *pFileObj, const void *pData, FILE_SIZE Size)
 {
-       C_MEMDRV                *self;
-       C_MEMDRVFILE    *pFile;
+       C_MEMDRV        *self;
+       C_MEMFILE       *pFile;
        
        SysMtx_Lock(self->hMtx);
        
diff --git a/aplfw/driver/misc/memdrv/memfile.h b/aplfw/driver/misc/memdrv/memfile.h
new file mode 100755 (executable)
index 0000000..c6f6f5f
--- /dev/null
@@ -0,0 +1,34 @@
+/** 
+ * Hyper Operating System  Application Framework
+ *
+ * @file  memfile.h
+ * @brief %jp{memory file 公開ヘッダファイル}%en{Memory File public header file}
+ *
+ * Copyright (C) 2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#ifndef __HOS__memfile_h__
+#define __HOS__memfile_h__
+
+
+#include "memdrv_local.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HANDLE MemFile_Create(C_MEMDRV *pMemDrv, int iMode);
+void   MemFile_Delete(HANDLE hFile);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /*  __HOS__memfile_h__ */
+
+
+/* end of file */
diff --git a/aplfw/driver/misc/memdrv/memfile_constructor.c b/aplfw/driver/misc/memdrv/memfile_constructor.c
new file mode 100755 (executable)
index 0000000..6cfc77c
--- /dev/null
@@ -0,0 +1,25 @@
+/** 
+ * Hyper Operating System  Application Framework
+ *
+ * @file  memfile_constructor.c
+ * @brief %jp{memory file コンストラクタ}%en{Memory File  constructor}
+ *
+ * Copyright (C) 2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include "memfile_local.h"
+
+
+void MemFile_Constructor(C_MEMFILE *self, const T_FILEOBJ_METHODS *pMethods, C_MEMDRV *pMemDrv, int iMode)
+{
+       /* 親クラスコンストラクタ */
+       FileObj_Constructor(&self->FileObj, pMethods, &pMemDrv->DrvObj, iMode);
+       
+       /* メンバ変数初期化 */
+       self->FilePos = 0;
+}
+
+
+/* end of file */
diff --git a/aplfw/driver/misc/memdrv/memfile_create.c b/aplfw/driver/misc/memdrv/memfile_create.c
new file mode 100755 (executable)
index 0000000..9f59633
--- /dev/null
@@ -0,0 +1,38 @@
+/** 
+ * Hyper Operating System  Application Framework
+ *
+ * @file  memfile.h
+ * @brief %jp{memory file 公開ヘッダファイル}%en{Memory File public header file}
+ *
+ * Copyright (C) 2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include "memfile_local.h"
+
+
+static const T_FILEOBJ_METHODS MemFile_FileObjMethods =
+       {
+               {File_Close},   /* デストラクタ */
+       };
+
+
+HANDLE MemFile_Create(C_MEMDRV *pMemVol, int iMode)
+{
+       C_MEMFILE *self;
+
+       /* create file descriptor */
+       if ( (self = (C_MEMFILE *)SysMem_Alloc(sizeof(C_MEMFILE))) == NULL )
+       {
+               return HANDLE_NULL;
+       }
+       
+       /* コンストラクタ呼び出し */
+       MemFile_Constructor(self, &MemFile_FileObjMethods, pMemVol, iMode);
+       
+       return (HANDLE)self;
+}
+
+
+/* end of file */
diff --git a/aplfw/driver/misc/memdrv/memfile_delete.c b/aplfw/driver/misc/memdrv/memfile_delete.c
new file mode 100755 (executable)
index 0000000..0be9940
--- /dev/null
@@ -0,0 +1,29 @@
+/** 
+ * Hyper Operating System  Application Framework
+ *
+ * @file  memfile.h
+ * @brief %jp{memory file オブジェクト削除}%en{Memory File  delete}
+ *
+ * Copyright (C) 2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include "memfile_local.h"
+
+
+void MemFile_Delete(HANDLE hFile)
+{
+       C_MEMFILE *self;
+       
+       self = (C_MEMFILE *)hFile;
+       
+       /* デストラクタ */
+       MemFile_Destructor(self);
+       
+       /* メモリ削除 */
+       SysMem_Free(self);
+}
+
+
+/* end of file */
diff --git a/aplfw/driver/misc/memdrv/memfile_destructor.c b/aplfw/driver/misc/memdrv/memfile_destructor.c
new file mode 100755 (executable)
index 0000000..6bf0b2a
--- /dev/null
@@ -0,0 +1,22 @@
+/** 
+ * Hyper Operating System  Application Framework
+ *
+ * @file  memfile_destructor.c
+ * @brief %jp{memory file デストラクタ}%en{Memory File  destructor}
+ *
+ * Copyright (C) 2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include "memfile_local.h"
+
+
+void  MemFile_Destructor(C_MEMFILE *self)
+{
+       /* 親クラスデストラクタ */            
+       FileObj_Destructor(&self->FileObj);
+}
+
+
+/* end of file */
diff --git a/aplfw/driver/misc/memdrv/memfile_local.h b/aplfw/driver/misc/memdrv/memfile_local.h
new file mode 100755 (executable)
index 0000000..03696a5
--- /dev/null
@@ -0,0 +1,46 @@
+/** 
+ * Hyper Operating System  Application Framework
+ *
+ * @file  memfile.h
+ * @brief %jp{memory file ローカルヘッダファイル}%en{Memory File private header file}
+ *
+ * Copyright (C) 2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#ifndef __HOS__memfile_local_h__
+#define __HOS__memfile_local_h__
+
+
+#include "memfile.h"
+#include "system/file/fileobj_local.h"
+#include "system/sysapi/sysapi.h"
+
+
+/* ファイルディスクリプタ */
+typedef struct c_memfile
+{
+       C_FILEOBJ       FileObj;                        /* 継承 */
+
+       FILE_POS        FilePos;
+} C_MEMFILE;
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void  MemFile_Constructor(C_MEMFILE *self, const T_FILEOBJ_METHODS *pMethods, C_MEMDRV *pMemDrv, int iMode);
+void  MemFile_Destructor(C_MEMFILE *self);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+#endif /*  __HOS__memfile_local_h__ */
+
+
+/* end of file */
index 4b9672a..2167bcf 100755 (executable)
@@ -92,6 +92,9 @@ FILE_ERR FatVol_IoControl(C_DRVOBJ *pDrvObj, C_FILEOBJ *pFileObj, int iFunc, voi
                        /* ファイル属性 */
                        pFileInf->Attribute = ubBuf[11];
                        
+                       /* 情報 */
+                       pFileInf->szInformation[0] = '\0';
+                       
                        return FILE_ERR_OK;
                }
                break;
index 7a21724..45b4beb 100755 (executable)
@@ -17,6 +17,9 @@
 #include "system/file/volume.h"
 #include "system/file/stdfile.h"
 
+#include "library/algorithm/stringformat/stringformat.h"
+
+
 
 #define _DEBUG_PRINTF  StdIo_PrintFormat
 
index bcceecf..b68d718 100755 (executable)
@@ -185,7 +185,7 @@ int Boot_Process(VPARAM Param)
        ProcInf.hStdErr        = Process_GetStdErr(HANDLE_NULL);                /* 標準エラー出力 */
        for ( ; ; )
        {
-               hProcess = Process_Create(&ProcInf);
+               hProcess = Process_CreateEx(&ProcInf);
                Process_WaitExit(hProcess);
                Process_Delete(hProcess);
        }
index 8ae296a..a2e18b6 100755 (executable)
@@ -165,7 +165,7 @@ int Boot_Process(VPARAM Param)
        ProcInf.hStdErr        = Process_GetStdErr(HANDLE_NULL);                /* 標準エラー出力 */
        for ( ; ; )
        {
-               hProcess = Process_Create(&ProcInf);
+               hProcess = Process_CreateEx(&ProcInf);
                Process_WaitExit(hProcess);
                Process_Delete(hProcess);
        }
index 55c6d7f..5371a84 100755 (executable)
@@ -32,6 +32,7 @@ typedef struct t_drvobj_methods
        FILE_SIZE (*pfncRead)(struct c_drvobj *self, struct c_fileobj *pFileObj, void *pBuf, FILE_SIZE Size);
        FILE_SIZE (*pfncWrite)(struct c_drvobj *self, struct c_fileobj *pFileObj, const void *pData, FILE_SIZE Size);
        FILE_ERR  (*pfncFlush)(struct c_drvobj *self, struct c_fileobj *pFileObj);
+       FILE_ERR  (*pfncGetInformation)(struct c_drvobj *self, char *pszInformation, int iLen);
 } T_DRVOBJ_METHODS;
 
 
index c7a9651..6fe6d95 100755 (executable)
@@ -81,7 +81,8 @@
 
 
 /* IoControl機能コード(ディレクトリ) */
-#define FILE_IOCTL_DIR_READ                                    0x0101          /* デバイス情報を得る */
+#define FILE_IOCTL_DIR_READ                                    0x0101          /* ディレクトリ情報を得る */
+
 
 /* IoControl機能コード(コンソール) */
 #define FILE_IOCTL_CON_GETCH                           0x0201          /* 文字読込み */
@@ -135,6 +136,8 @@ typedef struct t_file_fileinf
        FILE_TIME       timeAceess;
        FILE_TIME       timeWrite;
 */
+
+       char            szInformation[64];
 } T_FILE_FILEINF;
 
 
@@ -175,7 +178,7 @@ HANDLE    File_GetVolume(const char *pszName);                                                              /* ボリュームの取
 
 
 /* 基本API */
-HANDLE    File_Open(const char *pszPatah, int iMode);
+HANDLE    File_Open(const char *pszPath, int iMode);
 void      File_Close(HANDLE hFile);
 FILE_ERR  File_IoControl(HANDLE hFile, int iFunc, void *pInBuf, FILE_SIZE InSize, const void *pOutBuf, FILE_SIZE OutSize);
 FILE_POS  File_Seek(HANDLE hFile, FILE_POS Offset, int iOrign);
@@ -183,6 +186,10 @@ FILE_SIZE File_Read(HANDLE hFile, void *pBuf, FILE_SIZE Size);
 FILE_SIZE File_Write(HANDLE hFile, const void *pData, FILE_SIZE Size);
 FILE_ERR  File_Flush(HANDLE hFile);
 
+/* デバイスドライバ直接制御 */
+HANDLE    File_DriverOpen(HANDLE hDriver, const char *pszPath, int iMode);                             /* 名無しファイルのオープン */
+FILE_ERR  File_GetDriverInformation(HANDLE hDriver, char *pszInformation, int iLen);   /* デバイスドライバ情報取得 */
+
 
 /* 同期制御API */
 FILE_ERR  File_SetWriteMode(HANDLE hFile, int iWriteMode);
diff --git a/aplfw/system/file/file_driveropen.c b/aplfw/system/file/file_driveropen.c
new file mode 100755 (executable)
index 0000000..73caa14
--- /dev/null
@@ -0,0 +1,34 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  file_driveropen.c
+ * @brief %jp{ファイルシステム}
+ *
+ * Copyright (C) 2006 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdio.h>
+#include "file_local.h"
+#include "drvobj_local.h"
+
+
+
+/* ドライバから直接名無しファイルとしてオープン */
+HANDLE File_DriverOpen(HANDLE hDriver, const char *pszPath, int iMode)
+{
+       C_DRVOBJ *self;
+       
+       self = (C_DRVOBJ *)hDriver;
+       
+       if ( DrvObj_GetMethods(self)->pfncOpen == NULL )
+       {
+               return HANDLE_NULL;
+       }
+       
+       return DrvObj_GetMethods(self)->pfncOpen(self, pszPath, iMode);
+}
+
+
+/* end of file */
diff --git a/aplfw/system/file/file_getdriverinformation.c b/aplfw/system/file/file_getdriverinformation.c
new file mode 100755 (executable)
index 0000000..00849f4
--- /dev/null
@@ -0,0 +1,34 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  file_driveropen.c
+ * @brief %jp{ファイルシステム}
+ *
+ * Copyright (C) 2006 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdio.h>
+#include "file_local.h"
+#include "drvobj_local.h"
+
+
+
+/* デバイスドライバ情報取得 */
+FILE_ERR  File_GetDriverInformation(HANDLE hDriver, char *pszInformation, int iLen)
+{
+       C_DRVOBJ *self;
+       
+       self = (C_DRVOBJ *)hDriver;
+       
+       if ( DrvObj_GetMethods(self)->pfncGetInformation == NULL )
+       {
+               return FILE_ERR_NG;
+       }
+       
+       return DrvObj_GetMethods(self)->pfncGetInformation(self, pszInformation, iLen);
+}
+
+
+/* end of file */
index b12c701..2c69c73 100755 (executable)
@@ -36,8 +36,14 @@ FILE_ERR SysVol_IoControl(C_DRVOBJ *pDrvObj, C_FILEOBJ *pFileObj, int iFunc, voi
                        {
                                strcpy(pFileInf->szFileName, self->DevTable[pFile->iReadPtr].szName);
                                pFileInf->FileSize  = 0;
-                               pFileInf->Attribute = self->DevTable[pFile->iReadPtr].iAttr;
+                               pFileInf->Attribute = self->DevTable[pFile->iReadPtr].iAttr;                            
+                               if ( File_GetDriverInformation(self->DevTable[pFile->iReadPtr].hDriver, pFileInf->szInformation, sizeof(pFileInf->szInformation)) != FILE_ERR_OK )
+                               {
+                                       pFileInf->szInformation[0] = '\0';
+                               }
+                               pFileInf->szInformation[sizeof(pFileInf->szInformation) - 1] = '\0';
                                pFile->iReadPtr++;
+                               
                                return FILE_ERR_OK;
                        }
                }
index fd96604..e1e8e3e 100755 (executable)
@@ -25,6 +25,9 @@
 #define PROCESS_PRIORITY_NORMAL                12
 #define PROCESS_PRIORITY_HIGH          11
 
+#define PROCESS_SIGNAL_HUP                     1
+#define PROCESS_SIGNAL_KILL                    9
+
 
 #define PROCESS_ERR_OK                         0
 #define PROCESS_ERR_NG                         (-1)
@@ -54,42 +57,46 @@ typedef struct t_process_create_inf
 extern "C" {
 #endif
 
-HANDLE        Process_Create(const T_PROCESS_CREATE_INF *pInf);                                                        /**< プロセス生成 */
-void          Process_Delete(HANDLE hProcess);                                                                                 /**< プロセス削除 */
-
-HANDLE        Process_GetCurrentHandle(void);                                                                                  /**< 現在のプロセスハンドル取得 */ 
-void          Process_Exit(int iExitCode);                                                                                             /**< 現在のプロセスを終了させる */
-
-int           Process_IsExit(HANDLE hProcess);                                                                                 /**< プロセスの終了を確認 */
-int           Process_WaitExit(HANDLE hProcess);                                                                               /**< プロセスの終了を待つ */
-int           Process_GetExitCode(HANDLE hProcess);                                                                            /**< プロセスの終了コード取得 */
-
-PROCESS_ERR   Process_EnterSystemMode(void);                                                                                   /**< システムモードに入る */
-void          Process_LeaveSystemMode(void);                                                                                   /**< システムモードを出る */
-int           Process_IsSystemMode(void);                                                                                              /**< システムモードかどうか問い合わせ */
-
-const char    *Process_GetCommandLine(HANDLE hProcess);                                                                        /**< コマンドラインの取得 */  
-unsigned long Process_GetExecutionTime(HANDLE hProcess, unsigned long *pulNanosecond); /**< 実行時間の取得 */   
-HANDLE        Process_GetParentProcess(HANDLE hProcess);                                                               /**< 親プロセスの取得 */
-
-void          Process_SetParam(HANDLE hProcess, VPARAM Param);                                                 /**< プロセス固有情報の設定 */
-VPARAM        Process_GetParam(HANDLE hProcess);                                                                               /**< プロセス固有情報の取得 */
-
-int           Process_SetCurrentDir(HANDLE hProcess, const char *pszPath);                             /**< プロセスのカレントディレクトリ設定 */
-const char    *Process_GetCurrentDir(HANDLE hProcess);                                                                 /**< プロセスのカレントディレクトリ取得 */
-
-void          Process_SetTerminal(HANDLE hProcess, HANDLE hFile);                                              /**< プロセスの標準ターミナル設定 */
-HANDLE        Process_GetTerminal(HANDLE hProcess);                                                                            /**< プロセスの標準ターミナル取得 */
-void          Process_SetConIn(HANDLE hProcess, HANDLE hFile);                                                 /**< プロセスの標準コンソール設定 */
-HANDLE        Process_GetConIn(HANDLE hProcess);                                                                               /**< プロセスの標準コンソール取得 */
-void          Process_SetConOut(HANDLE hProcess, HANDLE hFile);                                                        /**< プロセスの標準コンソール設定 */
-HANDLE        Process_GetConOut(HANDLE hProcess);                                                                              /**< プロセスの標準コンソール取得 */
-void          Process_SetStdIn(HANDLE hProcess, HANDLE hFile);                                                 /**< プロセスの標準入力設定 */
-HANDLE        Process_GetStdIn(HANDLE hProcess);                                                                               /**< プロセスの標準入力取得 */
-void          Process_SetStdOut(HANDLE hProcess, HANDLE hFile);                                                        /**< プロセスの標準出力設定 */
-HANDLE        Process_GetStdOut(HANDLE hProcess);                                                                              /**< プロセスの標準出力取得 */
-void          Process_SetStdErr(HANDLE hProcess, HANDLE hFile);                                                        /**< プロセスの標準エラー出力設定 */
-HANDLE        Process_GetStdErr(HANDLE hProcess);                                                                              /**< プロセスの標準エラー出力取得 */
+HANDLE        Process_Create(const char *pszCommand, MEMSIZE StackSize, int Priority);         /**< プロセス生成 */
+HANDLE        Process_CreateEx(const T_PROCESS_CREATE_INF *pInf);                                                      /**< プロセス生成(詳細制御版) */
+void          Process_Delete(HANDLE hProcess);                                                                                         /**< プロセス削除 */
+
+HANDLE        Process_GetCurrentHandle(void);                                                                                          /**< 現在のプロセスハンドル取得 */ 
+void          Process_Exit(int iExitCode);                                                                                                     /**< 現在のプロセスを終了させる */
+       
+int           Process_IsExit(HANDLE hProcess);                                                                                         /**< プロセスの終了を確認 */
+int           Process_WaitExit(HANDLE hProcess);                                                                                       /**< プロセスの終了を待つ */
+int           Process_GetExitCode(HANDLE hProcess);                                                                                    /**< プロセスの終了コード取得 */
+
+void          Process_SetSignalProc(HANDLE hProcess, void (*pfncSignalProc)(int iSignal));     /**< プロセスにシグナル受信プロシージャを登録 */
+void          Process_SendSignal(HANDLE hProcess, int iSignal);                                                                /**< プロセスにシグナルを送信 */
+
+PROCESS_ERR   Process_EnterSystemMode(void);                                                                                           /**< システムモードに入る */
+void          Process_LeaveSystemMode(void);                                                                                           /**< システムモードを出る */
+int           Process_IsSystemMode(void);                                                                                                      /**< システムモードかどうか問い合わせ */
+
+const char    *Process_GetCommandLine(HANDLE hProcess);                                                                                /**< コマンドラインの取得 */  
+unsigned long Process_GetExecutionTime(HANDLE hProcess, unsigned long *pulNanosecond);         /**< 実行時間の取得 */   
+HANDLE        Process_GetParentProcess(HANDLE hProcess);                                                                       /**< 親プロセスの取得 */
+
+void          Process_SetParam(HANDLE hProcess, VPARAM Param);                                                         /**< プロセス固有情報の設定 */
+VPARAM        Process_GetParam(HANDLE hProcess);                                                                                       /**< プロセス固有情報の取得 */
+
+int           Process_SetCurrentDir(HANDLE hProcess, const char *pszPath);                                     /**< プロセスのカレントディレクトリ設定 */
+const char    *Process_GetCurrentDir(HANDLE hProcess);                                                                         /**< プロセスのカレントディレクトリ取得 */
+
+void          Process_SetTerminal(HANDLE hProcess, HANDLE hFile);                                                      /**< プロセスの標準ターミナル設定 */
+HANDLE        Process_GetTerminal(HANDLE hProcess);                                                                                    /**< プロセスの標準ターミナル取得 */
+void          Process_SetConIn(HANDLE hProcess, HANDLE hFile);                                                         /**< プロセスの標準コンソール設定 */
+HANDLE        Process_GetConIn(HANDLE hProcess);                                                                                       /**< プロセスの標準コンソール取得 */
+void          Process_SetConOut(HANDLE hProcess, HANDLE hFile);                                                                /**< プロセスの標準コンソール設定 */
+HANDLE        Process_GetConOut(HANDLE hProcess);                                                                                      /**< プロセスの標準コンソール取得 */
+void          Process_SetStdIn(HANDLE hProcess, HANDLE hFile);                                                         /**< プロセスの標準入力設定 */
+HANDLE        Process_GetStdIn(HANDLE hProcess);                                                                                       /**< プロセスの標準入力取得 */
+void          Process_SetStdOut(HANDLE hProcess, HANDLE hFile);                                                                /**< プロセスの標準出力設定 */
+HANDLE        Process_GetStdOut(HANDLE hProcess);                                                                                      /**< プロセスの標準出力取得 */
+void          Process_SetStdErr(HANDLE hProcess, HANDLE hFile);                                                                /**< プロセスの標準エラー出力設定 */
+HANDLE        Process_GetStdErr(HANDLE hProcess);                                                                                      /**< プロセスの標準エラー出力取得 */
 
 #ifdef __cplusplus
 }
index 3657f48..e910cff 100755 (executable)
@@ -22,6 +22,7 @@ static const T_HANDLEOBJ_METHODS Process_Methods =
 
 
 static void Process_Entry(void);
+static void Process_SignalHandler(void);
 
 
 /** コンストラクタ */
@@ -33,20 +34,22 @@ PROCESS_ERR Process_Constructor(C_PROCESS *self, const T_HANDLEOBJ_METHODS *pMet
        }
 
        /* メンバ変数初期化 */
-       self->iExitCode   = -1;                                 /* 終了コード */
-       self->pHandleList = NULL;                               /* 所有するハンドルのリスト(終了時に開放) */
-       self->pfncEntry = pInf->pfncEntry;              /* 起動アドレス */
-       self->Param     = pInf->Param;                  /* ユーザーパラメータ */
-       self->StackSize = pInf->StackSize;              /* スタックサイズ */
-       self->Priority  = pInf->Priority;               /* プロセス優先度 */
-       self->SysMode   = 0;                                    /* システムモード */
-       self->Exit      = 0;                                    /* 終了フラグ */
-       self->hTerminal = pInf->hTerminal;              /* ターミナル */
-       self->hConIn    = pInf->hConIn;                 /* コンソール入力 */
-       self->hConOut   = pInf->hConOut;                /* コンソール出力 */
-       self->hStdIn    = pInf->hStdIn;                 /* 標準入力 */
-       self->hStdOut   = pInf->hStdOut;                /* 標準出力 */
-       self->hStdErr   = pInf->hStdErr;                /* 標準エラー出力 */
+       self->iExitCode     = -1;                                       /* 終了コード */
+       self->iSignal        = 0;                                       /* シグナル番号 */
+       self->pfncSignalProc = NULL;
+       self->pHandleList    = NULL;                            /* 所有するハンドルのリスト(終了時に開放) */
+       self->pfncEntry      = pInf->pfncEntry;         /* 起動アドレス */
+       self->Param          = pInf->Param;                     /* ユーザーパラメータ */
+       self->StackSize      = pInf->StackSize;         /* スタックサイズ */
+       self->Priority       = pInf->Priority;          /* プロセス優先度 */
+       self->SysMode        = 0;                                       /* システムモード */
+       self->Exit           = 0;                                       /* 終了フラグ */
+       self->hTerminal      = pInf->hTerminal;         /* ターミナル */
+       self->hConIn         = pInf->hConIn;            /* コンソール入力 */
+       self->hConOut        = pInf->hConOut;           /* コンソール出力 */
+       self->hStdIn         = pInf->hStdIn;            /* 標準入力 */
+       self->hStdOut        = pInf->hStdOut;           /* 標準出力 */
+       self->hStdErr        = pInf->hStdErr;           /* 標準エラー出力 */
        
        /* コマンドラインコピー */
        if ( pInf->pszCommandLine != NULL )
@@ -131,6 +134,8 @@ void Process_Entry(void)
        
        self = (C_PROCESS *)SysPrc_GetParam(SysPrc_GetCurrentHandle());
        
+       SysPrc_SetSignalHandler(SysPrc_GetCurrentHandle(), Process_SignalHandler);
+       
        pfncEntry = self->pfncEntry;
        ProcParam = self->Param;
 
@@ -152,4 +157,24 @@ void Process_Entry(void)
 }
 
 
+/* シグナル受信ポイント */
+void Process_SignalHandler(void)
+{
+       C_PROCESS       *self;
+
+       self = (C_PROCESS *)SysPrc_GetParam(SysPrc_GetCurrentHandle());
+       
+       if ( self->pfncSignalProc != NULL )
+       {
+               self->pfncSignalProc(self->iSignal);
+               return;
+       }
+
+       if ( self->iSignal == PROCESS_SIGNAL_KILL )
+       {
+               Process_Exit(-1);
+       }
+}
+
+
 /* end of file */
index 7bc2ded..5ad4aa7 100755 (executable)
 
 
 /* プロセス生成 */
-HANDLE Process_Create(const T_PROCESS_CREATE_INF *pInf)
+HANDLE Process_Create(const char *pszCommand, MEMSIZE StackSize, int Priority)
 {
-       C_PROCESS *self;
+       T_PROCESS_CREATE_INF Inf;
        
-       /* ã\83¡ã\83¢ã\83ªç¢ºä¿\9d */
-       if ( (self = (C_PROCESS *)SysMem_Alloc(sizeof(C_PROCESS))) == NULL )
+       /* ã\83\87ã\83\95ã\82©ã\83«ã\83\88å\80¤ */
+       if ( StackSize == 0 )
        {
-               return HANDLE_NULL;
+               StackSize = 4096;
        }
-       
-       /* コンストラクタ呼び出し */
-       if ( Process_Constructor(self, NULL, pInf) != PROCESS_ERR_OK )
+       if ( Priority == 0 )
        {
-               SysMem_Free(self);
-               return HANDLE_NULL;
+               Priority = PROCESS_PRIORITY_NORMAL;
        }
        
-       return (HANDLE)self;
+       Inf.pszCommandLine = pszCommand;                                                        /**< コマンドライン */
+       Inf.pszCurrentDir  = Process_GetCurrentDir(HANDLE_NULL);        /**< 起動ディレクトリ */
+       Inf.pfncEntry      = NULL;                                                                      /**< 起動アドレス */
+       Inf.Param          = 0;                                                                         /**< ユーザーパラメータ */
+       Inf.StackSize      = StackSize;                                                         /**< スタックサイズ */
+       Inf.Priority       = Priority;                                                          /**< プロセス優先度 */
+       Inf.hTerminal      = Process_GetTerminal(HANDLE_NULL);          /**< ターミナル */
+       Inf.hConIn         = Process_GetConIn(HANDLE_NULL);                     /**< コンソール入力 */
+       Inf.hConOut        = Process_GetConOut(HANDLE_NULL);            /**< コンソール出力 */
+       Inf.hStdIn         = Process_GetStdIn(HANDLE_NULL);                     /**< 標準入力 */
+       Inf.hStdOut        = Process_GetStdOut(HANDLE_NULL);            /**< 標準出力 */
+       Inf.hStdErr        = Process_GetStdErr(HANDLE_NULL);            /**< 標準エラー出力 */
+       
+       return Process_CreateEx(&Inf);
 }
+       
 
 
 /* end of file */
diff --git a/aplfw/system/process/process_createex.c b/aplfw/system/process/process_createex.c
new file mode 100755 (executable)
index 0000000..e0e8b38
--- /dev/null
@@ -0,0 +1,37 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  process.h
+ * @brief %jp{プロセスオブジェクト}
+ *
+ * Copyright (C) 2006-2007 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+#include "process_local.h"
+
+
+
+/* プロセス生成 */
+HANDLE Process_CreateEx(const T_PROCESS_CREATE_INF *pInf)
+{
+       C_PROCESS *self;
+       
+       /* メモリ確保 */
+       if ( (self = (C_PROCESS *)SysMem_Alloc(sizeof(C_PROCESS))) == NULL )
+       {
+               return HANDLE_NULL;
+       }
+       
+       /* コンストラクタ呼び出し */
+       if ( Process_Constructor(self, NULL, pInf) != PROCESS_ERR_OK )
+       {
+               SysMem_Free(self);
+               return HANDLE_NULL;
+       }
+       
+       return (HANDLE)self;
+}
+
+
+/* end of file */
index dd5cb39..8dcfd9a 100755 (executable)
@@ -39,6 +39,9 @@ typedef struct c_process
        int                                     (*pfncEntry)(VPARAM Param);             /**< 起動アドレス */
        VPARAM                          Param;                                                  /**< ユーザーパラメータ */
 
+       void                            (*pfncSignalProc)(int iSignal); /**< シグナル受信プロシージャ */
+       int                                     iSignal;                                                /**< ユーザーパラメータ */
+
        MEMSIZE                         StackSize;                                              /**< スタックサイズ */
        int                                     Priority;                                               /**< プロセス優先度 */
        char                            SysMode;                                                /**< システムモード */
diff --git a/aplfw/system/process/process_sendsignal.c b/aplfw/system/process/process_sendsignal.c
new file mode 100755 (executable)
index 0000000..8db509b
--- /dev/null
@@ -0,0 +1,38 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  process.c
+ * @brief %jp{プロセスオブジェクト}
+ *
+ * Copyright (C) 2006-2007 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+
+#include "process_local.h"
+
+
+
+/**< プロセスにシグナル受信プロシージャを登録 */
+void Process_SendSignal(HANDLE hProcess, int iSignal)
+{
+       C_PROCESS *self;
+       
+       /* 指定が無ければ現在のプロセスとする */
+       if ( hProcess == HANDLE_NULL )
+       {
+               hProcess = Process_GetCurrentHandle();
+       }
+       
+       /* ハンドルをキャスト */
+       self = (C_PROCESS *)hProcess;
+       
+       /* シグナル送信 */
+       self->iSignal = iSignal;
+       SysPrc_SendSignal(self->hPrc);
+}
+
+
+
+/* end of file */
diff --git a/aplfw/system/process/process_setsignalproc.c b/aplfw/system/process/process_setsignalproc.c
new file mode 100755 (executable)
index 0000000..e334ee3
--- /dev/null
@@ -0,0 +1,36 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  process.c
+ * @brief %jp{プロセスオブジェクト}
+ *
+ * Copyright (C) 2006-2007 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+
+#include "process_local.h"
+
+
+/**< プロセスにシグナル受信プロシージャを登録 */
+void Process_SetSignalProc(HANDLE hProcess, void (*pfncSignalProc)(int iSignal))
+{
+       C_PROCESS *self;
+       
+       /* 指定が無ければ現在のプロセスとする */
+       if ( hProcess == HANDLE_NULL )
+       {
+               hProcess = Process_GetCurrentHandle();
+       }
+       
+       /* ハンドルをキャスト */
+       self = (C_PROCESS *)hProcess;
+       
+       /* ハンドルを設定 */
+       self->pfncSignalProc = pfncSignalProc; 
+}
+
+
+
+/* end of file */
index b2ef2f7..ebdf440 100755 (executable)
@@ -96,8 +96,8 @@ VPARAM         SysPrc_GetParam(SYSPRC_HANDLE hPrc);                                                   /**< プロセスの
 void           SysPrc_Terminate(SYSPRC_HANDLE hPrc);                                           /**< プロセス終了(システム用) */
 void           SysPrc_Suspend(SYSPRC_HANDLE hPrc);                                                     /**< プロセス強制停止(システム用) */                       
 void           SysPrc_Resume(SYSPRC_HANDLE hPrc);                                                      /**< プロセス強制停止解除(システム用) */ 
-void           SysPrc_Signal(SYSPRC_HANDLE hPrc, VPARAM Signal);                       /**< プロセスへのシグナル送信(システム用) */
-void           SysPrc_SetSignalHandler(SYSPRC_HANDLE hPrc, void (*pfncHanler)(VPARAM Signal));
+void           SysPrc_SendSignal(SYSPRC_HANDLE hPrc);                                          /**< プロセスへのシグナル送信(システム用) */
+void           SysPrc_SetSignalHandler(SYSPRC_HANDLE hPrc, void (*pfncHanler)(void));
                                                                                                                                                        /**< プロセスへのシグナルハンドラ登録(システム用) */
 SYSPRC_HANDLE  SysPrc_GetCurrentHandle(void);                                                          /**< 現在のプロセスの取得(システム用) */
 void           SysPrc_SetExecTime(SYSPRC_HANDLE hPrc, SYSTIM_CPUTIME Time);    /**< プロセス実行時間計測タイマを初期化 */
diff --git a/aplfw/system/sysapi/sysprc_sendsignal.c b/aplfw/system/sysapi/sysprc_sendsignal.c
new file mode 100755 (executable)
index 0000000..2d3aaab
--- /dev/null
@@ -0,0 +1,21 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  system.h
+ * @brief %jp{システム用API定義}
+ *
+ * Copyright (C) 2006 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include "sysapi_local.h"
+
+
+void SysPrc_SendSignal(SYSPRC_HANDLE hPrc)
+{
+       ras_tex((ID)hPrc, 1);
+}
+
+
+/* end of file */
diff --git a/aplfw/system/sysapi/sysprc_setsignalhandler.c b/aplfw/system/sysapi/sysprc_setsignalhandler.c
new file mode 100755 (executable)
index 0000000..3866379
--- /dev/null
@@ -0,0 +1,26 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  system.h
+ * @brief %jp{システム用API定義}
+ *
+ * Copyright (C) 2006 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include "sysapi_local.h"
+
+
+void SysPrc_SetSignalHandler(SYSPRC_HANDLE hPrc, void (*pfncSinalProc)(void))
+{
+       T_DTEX  dtex;
+       
+       dtex.texatr = TA_HLNG;
+       dtex.texrtn = (FP)pfncSinalProc;
+       def_tex((ID)hPrc, &dtex);
+       ena_tex();
+}
+
+
+/* end of file */
index b4ff4ba..b7918a3 100755 (executable)
@@ -93,7 +93,7 @@ void System_BootProcess(VPARAM Param1, VPARAM Param2)
        pProcessInf = (T_PROCESS_CREATE_INF *)Param2;
        
        /* ブートプロセスをシステムプロセスの子プロセスとして開始 */
-       self->hBootProcess = Process_Create(pProcessInf);
+       self->hBootProcess = Process_CreateEx(pProcessInf);
        
        /* プロセス生成情報用メモリ開放 */
        SysMem_Free(pProcessInf);
index 67ffd3e..82598ab 100755 (executable)
@@ -86,6 +86,7 @@ $(OBJS_DIR)/ref_tsk.$(EXT_OBJ):       $(TSKOBJ_DIR)/ref_tsk.c $(COMMON_HEADERS)
 $(OBJS_DIR)/ref_tst.$(EXT_OBJ):        $(TSKOBJ_DIR)/ref_tst.c $(COMMON_HEADERS)
 $(OBJS_DIR)/def_tex.$(EXT_OBJ):        $(TSKOBJ_DIR)/def_tex.c $(COMMON_HEADERS)
 $(OBJS_DIR)/ras_tex.$(EXT_OBJ):        $(TSKOBJ_DIR)/ras_tex.c $(COMMON_HEADERS)
+$(OBJS_DIR)/ena_tex.$(EXT_OBJ):        $(TSKOBJ_DIR)/ena_tex.c $(COMMON_HEADERS)
 $(OBJS_DIR)/kexe_tex.$(EXT_OBJ):       $(TSKOBJ_DIR)/kexe_tex.c        $(COMMON_HEADERS)
 
 $(OBJS_DIR)/cre_sem.$(EXT_OBJ):        $(SEMOBJ_DIR)/cre_sem.c $(COMMON_HEADERS) $(SEMOBJ_HEADERS)
index a6f92dc..66e1e6f 100755 (executable)
@@ -202,6 +202,7 @@ CSRCS += $(TSKOBJ_DIR)/ref_tsk.c
 CSRCS += $(TSKOBJ_DIR)/ref_tst.c
 CSRCS += $(TSKOBJ_DIR)/def_tex.c
 CSRCS += $(TSKOBJ_DIR)/ras_tex.c
+CSRCS += $(TSKOBJ_DIR)/ena_tex.c
 CSRCS += $(TSKOBJ_DIR)/kexe_tex.c
 
 
index 3a07bbf..36f8faa 100755 (executable)
@@ -226,6 +226,9 @@ $(OBJS_DIR)\def_tex.c : $(TSKOBJ_DIR)\def_tex.c
 $(OBJS_DIR)\ras_tex.c : $(TSKOBJ_DIR)\ras_tex.c
        $(CMD_CP) $(TSKOBJ_DIR)\ras_tex.c $(OBJS_DIR)\
 
+$(OBJS_DIR)\ena_tex.c : $(TSKOBJ_DIR)\ena_tex.c
+       $(CMD_CP) $(TSKOBJ_DIR)\ena_tex.c $(OBJS_DIR)\
+
 $(OBJS_DIR)\kexe_tex.c : $(TSKOBJ_DIR)\kexe_tex.c
        $(CMD_CP) $(TSKOBJ_DIR)\kexe_tex.c $(OBJS_DIR)\
 
@@ -517,6 +520,7 @@ $(OBJS_DIR)\exe_isr..$(EXT_OBJ):    $(OBJS_DIR)\ref_tsk.c   $(COMMON_HEADERS)
 $(OBJS_DIR)\exe_isr..$(EXT_OBJ):       $(OBJS_DIR)\ref_tst.c   $(COMMON_HEADERS)
 $(OBJS_DIR)\exe_isr..$(EXT_OBJ):       $(OBJS_DIR)\def_tex.c   $(COMMON_HEADERS)
 $(OBJS_DIR)\exe_isr..$(EXT_OBJ):       $(OBJS_DIR)\ras_tex.c   $(COMMON_HEADERS)
+$(OBJS_DIR)\exe_isr..$(EXT_OBJ):       $(OBJS_DIR)\ena_tex.c   $(COMMON_HEADERS)
 $(OBJS_DIR)\exe_isr..$(EXT_OBJ):       $(OBJS_DIR)\kexe_tex.c  $(COMMON_HEADERS)
 
 $(OBJS_DIR)\exe_isr..$(EXT_OBJ):       $(OBJS_DIR)\cre_sem.c   $(COMMON_HEADERS) $(SEMOBJ_HEADERS)
index 64402d2..58768e3 100755 (executable)
@@ -241,6 +241,7 @@ CSRCS = $(CSRCS) $(TSKOBJ_DIR)\ref_tsk.c
 CSRCS = $(CSRCS) $(TSKOBJ_DIR)\ref_tst.c
 CSRCS = $(CSRCS) $(TSKOBJ_DIR)\def_tex.c
 CSRCS = $(CSRCS) $(TSKOBJ_DIR)\ras_tex.c
+CSRCS = $(CSRCS) $(TSKOBJ_DIR)\ena_tex.c
 CSRCS = $(CSRCS) $(TSKOBJ_DIR)\kexe_tex.c
 OBJS = $(OBJS) $(OBJS_DIR)\acre_tsk.$(EXT_OBJ)
 OBJS = $(OBJS) $(OBJS_DIR)\kcre_tsk.$(EXT_OBJ)
@@ -259,6 +260,7 @@ OBJS = $(OBJS) $(OBJS_DIR)\ref_tsk.$(EXT_OBJ)
 OBJS = $(OBJS) $(OBJS_DIR)\ref_tst.$(EXT_OBJ)
 OBJS = $(OBJS) $(OBJS_DIR)\def_tex.$(EXT_OBJ)
 OBJS = $(OBJS) $(OBJS_DIR)\ras_tex.$(EXT_OBJ)
+OBJS = $(OBJS) $(OBJS_DIR)\ena_tex.$(EXT_OBJ)
 OBJS = $(OBJS) $(OBJS_DIR)\kexe_tex.$(EXT_OBJ)
 
 
index f37b307..3965a81 100755 (executable)
                "ref_tst.c",
                "def_tex.c",
                "ras_tex.c",
+               "ena_tex.c",
                "kexe_tex.c",
        ],
        [
index c782b28..f37da46 100755 (executable)
@@ -74,7 +74,7 @@ void _kernel_dpc_sig_sem(void)
        if ( !_KERNEL_SEM_CHECK_EXS(semid) )
        {
                _KERNEL_LEAVE_SVC();    /* %jp{サービスコール終了} */
-               return E_NOEXS;                 /* %jp{オブジェクト未生成} */
+               return;                                 /* %jp{オブジェクト未生成} */
        }
 #endif
        /* %jp{セマフォコントロールブロック取得} */
diff --git a/kernel/source/object/tsk/ena_tex.c b/kernel/source/object/tsk/ena_tex.c
new file mode 100755 (executable)
index 0000000..a29c711
--- /dev/null
@@ -0,0 +1,67 @@
+/** 
+ *  Hyper Operating System V4 Advance
+ *
+ * @file  rsm_tsk.c
+ * @brief 
+ *
+ * Copyright (C) 1998-2006 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+
+#include "core/core.h"
+
+
+#if _KERNEL_SPT_ENA_TEX
+
+
+/* %jp{タスク例外処理の禁止} */
+ER ena_tex(void)
+{
+       _KERNEL_T_TSKHDL      tskhdl;
+       _KERNEL_T_TCB         *tcb;
+       _KERNEL_TSK_T_TSKSTAT tskstat;
+
+
+#if _KERNEL_SPT_ENA_TSK_E_CTX
+       if ( _KERNEL_SYS_SNS_CTX() )
+       {
+               return E_CTX;
+       }
+#endif
+       
+       _KERNEL_ENTER_SVC();                    /* %jp{enter service-call}%jp{サービスコールに入る} */
+               
+
+       /* %jp{実行中タスクを取得} */
+       tskhdl = _KERNEL_SYS_GET_RUNTSK();
+       
+       /* %jp{コントロールブロック取得} */
+       tcb = _KERNEL_TSK_TSKHDL2TCB(tskhdl);
+
+       _KERNEL_TSK_SET_TEXSTAT(tcb, _KERNEL_TXS_ENA);
+       
+       _KERNEL_LEAVE_SVC();    /* %jp{サービスコール終了} */
+
+       return E_OK;
+}
+
+
+#else  /* _KERNEL_SPT_ENA_TEX */
+
+
+#if _KERNEL_SPT_ENA_TEX_E_NOSPT
+
+ER ena_tex(void)
+{
+       return E_NOSPT;
+}
+
+#endif
+
+
+#endif
+
+
+/* end of file */