From 78560eac36eccead518b5768103ef678da4a523d Mon Sep 17 00:00:00 2001 From: ryuz Date: Mon, 31 Mar 2008 13:06:49 +0000 Subject: [PATCH] (none) --- aplfw/build/win/win32/msc/nmake.mak | 11 ++++--- kernel/build/win/win32/gcc/gmake.mak | 24 +++++++++++--- kernel/build/win/win32/msc/nmake.mak | 31 +++++++++++++++-- kernel/build/win/win32/vc60/hosv4a.dsp | 54 +++++++++++++++++++++++++++++- kernel/include/arch/proc/win/win32/proc.h | 55 +++++++++++++++---------------- 5 files changed, 132 insertions(+), 43 deletions(-) diff --git a/aplfw/build/win/win32/msc/nmake.mak b/aplfw/build/win/win32/msc/nmake.mak index c1c3ab8..5f5b6df 100755 --- a/aplfw/build/win/win32/msc/nmake.mak +++ b/aplfw/build/win/win32/msc/nmake.mak @@ -35,16 +35,16 @@ INC_DIRS = $(INC_DIRS) $(KERNEL_DIR)\include # %jp{オプションフラグ} -CFLAGS = $(CFLAGS) -AFLAGS = $(AFLAGS) -LFLAGS = $(LFLAGS) +AFLAGS = $(AFLAGS) +CFLAGS = $(CFLAGS) +ARFLAGS = $(LFLAGS) # %jp{リンク制御対象制御} LINK_WINSOCK = Yes - +# %jp{ルール定義} all: makelib_all clean: makelib_clean @@ -56,8 +56,9 @@ clean: makelib_clean # %jp{共通設定読込み} !include $(KERNEL_MAKINC_DIR)\makelib.inc -!include $(HOSAPLFW_MKINK_DIR)\aplfwsrc.inc +# %jp{共通ソース設定読込み} +!include $(HOSAPLFW_MKINK_DIR)\aplfwsrc.inc # %jp{MS-C用のルール定義読込み} !include $(KERNEL_MAKINC_DIR)\msc_r.inc diff --git a/kernel/build/win/win32/gcc/gmake.mak b/kernel/build/win/win32/gcc/gmake.mak index 5f6ef47..79c6c56 100755 --- a/kernel/build/win/win32/gcc/gmake.mak +++ b/kernel/build/win/win32/gcc/gmake.mak @@ -63,15 +63,25 @@ CFGRTR_DIR = $(TOP_DIR)/cfgrtr/build/gcc CFGRTR = h4acfg-win32 -# %jp{C言語ファイルの追加} -CSRCS += $(SRC_PROC_DIR)/ctxctl.c +# %jp{アセンブラファイルの追加} +ASRCS += -# アセンブラファイルの追加 -ASRCS += +# %jp{C言語ファイルの追加} +CSRCS += $(SRC_PROC_DIR)/vsig_int.c +CSRCS += $(SRC_PROC_DIR)/val_int.c +CSRCS += $(SRC_PROC_DIR)/kcre_ctx.c +CSRCS += $(SRC_PROC_DIR)/kdis_int.c +CSRCS += $(SRC_PROC_DIR)/kena_int.c +CSRCS += $(SRC_PROC_DIR)/kini_prc.c +CSRCS += $(SRC_PROC_DIR)/krst_ctx.c +CSRCS += $(SRC_PROC_DIR)/ksta_ctx.c +CSRCS += $(SRC_PROC_DIR)/kswi_ctx.c +CSRCS += $(SRC_PROC_DIR)/kwai_int.c + -# カーネル共通ソースの追加 +# %jp{カーネル共通ソースの追加} include $(KERNEL_MAKINC_DIR)/knlsrc.inc @@ -86,6 +96,10 @@ clean: makelib_clean $(MAKE) -C $(CFGRTR_DIR) -f gmake.mak TARGET=$(CFGRTR) ARCH_PROC=$(ARCH_PROC) ARCH_IRC=$(ARCH_IRC) clean $(RM) -f *.lst +# depend +.PHONY : depend +depend: + # %jp{コンパイラ依存の設定読込み} include $(KERNEL_MAKINC_DIR)/$(ARCH_CC)_d.inc diff --git a/kernel/build/win/win32/msc/nmake.mak b/kernel/build/win/win32/msc/nmake.mak index 0811794..5251f23 100755 --- a/kernel/build/win/win32/msc/nmake.mak +++ b/kernel/build/win/win32/msc/nmake.mak @@ -57,9 +57,34 @@ CFGRTR_DIR = $(TOP_DIR)\cfgrtr\build\msc CFGRTR = h4acfg-win32 -# %jp{オブジェクトファイル定義} -OBJS = $(OBJS) \ - $(OBJS_DIR)\ctxctl.obj \ + +# %jp{アセンブリ言語ファイルの追加} + +# %jp{C言語ファイルの追加} +CSRCS = $(CSRCS) $(SRC_PROC_DIR)/vsig_int.c +CSRCS = $(CSRCS) $(SRC_PROC_DIR)/val_int.c +CSRCS = $(CSRCS) $(SRC_PROC_DIR)/kcre_ctx.c +CSRCS = $(CSRCS) $(SRC_PROC_DIR)/kdis_int.c +CSRCS = $(CSRCS) $(SRC_PROC_DIR)/kena_int.c +CSRCS = $(CSRCS) $(SRC_PROC_DIR)/kini_prc.c +CSRCS = $(CSRCS) $(SRC_PROC_DIR)/krst_ctx.c +CSRCS = $(CSRCS) $(SRC_PROC_DIR)/ksta_ctx.c +CSRCS = $(CSRCS) $(SRC_PROC_DIR)/kswi_ctx.c +CSRCS = $(CSRCS) $(SRC_PROC_DIR)/kwai_int.c + +# %jp{オブジェクトファイルの追加} +OBJS = $(OBJS) $(OBJS_DIR)\vsig_int.$(EXT_OBJ) +OBJS = $(OBJS) $(OBJS_DIR)\vsig_int.$(EXT_OBJ) +OBJS = $(OBJS) $(OBJS_DIR)\val_int.$(EXT_OBJ) +OBJS = $(OBJS) $(OBJS_DIR)\kcre_ctx.$(EXT_OBJ) +OBJS = $(OBJS) $(OBJS_DIR)\kdis_int.$(EXT_OBJ) +OBJS = $(OBJS) $(OBJS_DIR)\kena_int.$(EXT_OBJ) +OBJS = $(OBJS) $(OBJS_DIR)\kini_prc.$(EXT_OBJ) +OBJS = $(OBJS) $(OBJS_DIR)\krst_ctx.$(EXT_OBJ) +OBJS = $(OBJS) $(OBJS_DIR)\ksta_ctx.$(EXT_OBJ) +OBJS = $(OBJS) $(OBJS_DIR)\kswi_ctx.$(EXT_OBJ) +OBJS = $(OBJS) $(OBJS_DIR)\kwai_int.$(EXT_OBJ) + # %jp{ALL} diff --git a/kernel/build/win/win32/vc60/hosv4a.dsp b/kernel/build/win/win32/vc60/hosv4a.dsp index 57486d4..c8ce25d 100755 --- a/kernel/build/win/win32/vc60/hosv4a.dsp +++ b/kernel/build/win/win32/vc60/hosv4a.dsp @@ -974,6 +974,9 @@ SOURCE=..\..\..\..\source\object\mtx\unl_mtx.c # Begin Group "arch" # PROP Default_Filter "" +# Begin Group "irc" + +# PROP Default_Filter "" # Begin Group "simple" # PROP Default_Filter "" @@ -1006,10 +1009,59 @@ SOURCE=..\..\..\..\source\arch\irc\simple\get_ilv.c SOURCE=..\..\..\..\source\arch\irc\simple\get_imsk.c # End Source File # End Group +# End Group +# Begin Group "proc" + +# PROP Default_Filter "" +# Begin Group "win" + +# PROP Default_Filter "" +# Begin Group "win32" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\..\source\arch\proc\win\win32\kcre_ctx.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\source\arch\proc\win\win32\kdis_int.c +# End Source File # Begin Source File -SOURCE=..\..\..\..\source\arch\proc\win\win32\ctxctl.c +SOURCE=..\..\..\..\source\arch\proc\win\win32\kena_int.c # End Source File +# Begin Source File + +SOURCE=..\..\..\..\source\arch\proc\win\win32\kini_prc.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\source\arch\proc\win\win32\krst_ctx.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\source\arch\proc\win\win32\ksta_ctx.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\source\arch\proc\win\win32\kswi_ctx.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\source\arch\proc\win\win32\kwai_int.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\source\arch\proc\win\win32\val_int.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\source\arch\proc\win\win32\vsig_int.c +# End Source File +# End Group +# End Group +# End Group # End Group # End Group # End Target diff --git a/kernel/include/arch/proc/win/win32/proc.h b/kernel/include/arch/proc/win/win32/proc.h index 6b9b7c0..fc19f34 100755 --- a/kernel/include/arch/proc/win/win32/proc.h +++ b/kernel/include/arch/proc/win/win32/proc.h @@ -27,32 +27,29 @@ /** %jp{コンテキスト情報保存ブロック} */ typedef struct _kernel_t_ctxcb { - BOOL blInterrupt; /**< %jp{割込み処理中フラグ} */ - - HANDLE hEvent; /**< %jp{イベントハンドル} */ - HANDLE hThread; /**< %jp{スレッドハンドル} */ - DWORD dwThreadId; /**< %jp{スレッドID} */ - - HANDLE hIntEvent; /**< %jp{イベントハンドル} */ - HANDLE hIntThread; /**< %jp{スレッドハンドル} */ - DWORD dwIntThreadId; /**< %jp{スレッドID} */ - - FP entry; /**< %jp{エントリーアドレス} */ - VP_INT exinf1; /**< %jp{パラメータ1} */ - VP_INT exinf2; /**< %jp{パラメータ2} */ - jmp_buf jmpenv; /**< %jp{コンテキストリセット用のlongjmpデータ} */ + FP entry; /**< %jp{エントリーアドレス} */ + VP_INT exinf1; /**< %jp{パラメータ1} */ + VP_INT exinf2; /**< %jp{パラメータ2} */ + jmp_buf jmpenv; /**< %jp{コンテキストリセット用のlongjmpデータ} */ + + BOOL blInterrupt; /**< %jp{割込み処理中フラグ} */ + HANDLE hEvent; /**< %jp{イベントハンドル} */ + HANDLE hThread; /**< %jp{スレッドハンドル} */ + DWORD dwThreadId; /**< %jp{スレッドID} */ + HANDLE hIntEvent; /**< %jp{イベントハンドル} */ + HANDLE hIntThread; /**< %jp{スレッドハンドル} */ + DWORD dwIntThreadId; /**< %jp{スレッドID} */ } _KERNEL_T_CTXCB; /** %jp{割込みコンテキスト制御ブロック} */ typedef struct _kernel_t_ictxcb { - CRITICAL_SECTION CriticalSection; _KERNEL_T_CTXCB *runctxcb; /**< %jp{実行中のコンテキスト} */ INHNO inhno; + CRITICAL_SECTION CriticalSection; /**< %jp{クリティカルセクション} */ HANDLE hSemIntLock; /**< %jp{システムの排他制御用セマフォ} */ - volatile BOOL blIntCtx; /**< %jp{割込み処理中フラグ} */ volatile BOOL blDisInt; /**< %jp{割込み禁止フラグ} */ volatile BOOL blIntDsp; /**< %jp{割込み時ディスパッチフラグ} */ @@ -68,19 +65,19 @@ extern _KERNEL_T_ICTXCB _kernel_ictxcb; /**< %jp{割込みコンテキスト制 extern "C" { #endif -void _kernel_ini_prc(void); /**< アーキテクチャ固有の初期化 */ +void _kernel_ini_prc(void); /**< %jp{アーキテクチャ固有の初期化} */ -void _kernel_ena_int(void); /**< 割り込み許可 */ -void _kernel_dis_int(void); /**< 割り込み禁止 */ -void _kernel_wai_int(void); /**< 割り込み待ち(アイドル時の処理) */ +void _kernel_ena_int(void); /**< %jp{割り込み許可} */ +void _kernel_dis_int(void); /**< %jp{割り込み禁止} */ +void _kernel_wai_int(void); /**< %jp{割り込み待ち(アイドル時の処理)} */ -void _kernel_cre_ctx(_KERNEL_T_CTXCB *ctxcb, FP entry, VP_INT exinf1, VP_INT exinf2); /**< 実行コンテキストの作成 */ -void _kernel_del_ctx(_KERNEL_T_CTXCB *ctxcb); /**< 実行コンテキストの削除 */ -void _kernel_rst_ctx(_KERNEL_T_CTXCB *ctxcb); /**< 実行コンテキストのリスタート */ -void _kernel_sta_ctx(_KERNEL_T_CTXCB *ctxcb); /**< 実行コンテキストの開始 */ -void _kernel_swi_ctx(_KERNEL_T_CTXCB *ctxcb_now, _KERNEL_T_CTXCB *ctxinf_nxt); /**< 実行コンテキストの切替 */ +void _kernel_cre_ctx(_KERNEL_T_CTXCB *ctxcb, FP entry, VP_INT exinf1, VP_INT exinf2); /**< %jp{実行コンテキストの作成} */ +void _kernel_del_ctx(_KERNEL_T_CTXCB *ctxcb); /**< %jp{実行コンテキストの削除} */ +void _kernel_rst_ctx(_KERNEL_T_CTXCB *ctxcb); /**< %jp{実行コンテキストのリスタート} */ +void _kernel_sta_ctx(_KERNEL_T_CTXCB *ctxcb); /**< %jp{実行コンテキストの開始} */ +void _kernel_swi_ctx(_KERNEL_T_CTXCB *ctxcb_now, _KERNEL_T_CTXCB *ctxinf_nxt); /**< %jp{実行コンテキストの切替} */ -void vsig_int(int inhno); /* %jp{割り込み} */ +void vsig_int(int inhno); /**< %jp{擬似割込みサポートAPI} */ #ifdef __cplusplus } @@ -90,9 +87,9 @@ void vsig_int(int inhno); /* %jp{割り込み} */ #define _KERNEL_INI_PRC() _kernel_ini_prc() #define _KERNEL_INI_INT(stksz, stk) do {} while(0) -#define _KERNEL_ENA_INT() _kernel_ena_int() /**< 割り込み許可 */ -#define _KERNEL_DIS_INT() _kernel_dis_int() /**< 割り込み禁止 */ -#define _KERNEL_WAI_INT() _kernel_wai_int() /**< 割り込み待ち(アイドル時の処理) */ +#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割り込み許可} */ +#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割り込み禁止} */ +#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割り込み待ち(アイドル時の処理)} */ #define _KERNEL_CRE_CTX(ctxcb, stksz, stk, isp, entry, par1, par2) \ -- 2.11.0