OSDN Git Service

デバッグトレースログ出力追加、バグ修正、文字コードをUTF-8に修正
authorMochi <master.c.mochi@gmail.com>
Sun, 12 Mar 2017 06:14:57 +0000 (15:14 +0900)
committerMochi <master.c.mochi@gmail.com>
Sun, 12 Mar 2017 06:14:57 +0000 (15:14 +0900)
22 files changed:
src/booter/Initctrl/InitctrlA20.s
src/booter/Initctrl/InitctrlCpu.s
src/booter/Initctrl/InitctrlMain.s
src/kernel/Debug/DebugLog.c
src/kernel/InitCtrl/InitCtrlInit.c
src/kernel/IntMng/IntMngHdl.c
src/kernel/IntMng/IntMngIdt.c
src/kernel/IntMng/IntMngInit.c
src/kernel/IntMng/IntMngPic.c
src/kernel/MemMng/MemMngArea.c
src/kernel/MemMng/MemMngGdt.c
src/kernel/MemMng/MemMngInit.c
src/kernel/ProcMng/ProcMngInit.c
src/kernel/ProcMng/ProcMngSched.c
src/kernel/ProcMng/ProcMngTask.c
src/kernel/ProcMng/ProcMngTss.c
src/kernel/TimerMng/TimerMngInit.c
src/kernel/TimerMng/TimerMngPit.c
src/kernel/include/Cmn.h
src/kernel/include/hardware/IA32/IA32.h
src/libraries/libc/string/memset.c
vm/vmware/mochi.vmx

index beefa2e..60b48a0 100644 (file)
 /******************************************************************************/
 /* src/booter/Initctrl/InitctrlA20.s                                          */
-/*                                                                 2016/12/04 */
-/* Copyright (C) 2016 Mochi.                                                  */
+/*                                                                 2017/03/12 */
+/* Copyright (C) 2016-2017 Mochi.                                             */
 /******************************************************************************/
  .intel_syntax noprefix
 .code16
 /******************************************************************************/
-/* \83O\83\8d\81[\83o\83\8b\90é\8c¾                                                             */
+/* グローバル宣言                                                             */
 /******************************************************************************/
 .global A20Enable
 
 
 /******************************************************************************/
-/* TEXT\83Z\83N\83V\83\87\83\93                                                             */
+/* TEXTセクション                                                             */
 /******************************************************************************/
 .section .text
 /******************************************************************************/
-/* \83O\83\8d\81[\83o\83\8b\8aÖ\90\94                                                             */
+/* グローバル関数                                                             */
 /******************************************************************************/
 A20Enable:
-    /* A20\83\89\83C\83\93\97L\8cø\89»\94»\92è */
+    /* A20ライン有効化判定 */
     call        CheckA20
     cmp         ax, 0
     je          A20Enable_0
     
-    /* System Port A\82ð\97p\82¢\82Ä\97L\8cø\89» */
+    /* System Port Aを用いて有効化 */
     in          al, 0x92
-    or          al, 0x02        /* \97L\8cø\89»                       */
-    and         al, 0xFE        /* \83V\83X\83e\83\80\83\8a\83Z\83b\83g\82ð\8am\8eÀ\82É\96h\82® */
-    out         0x92, al        /* \90Ý\92è                         */
+    or          al, 0x02        /* 有効化                       */
+    and         al, 0xFE        /* システムリセットを確実に防ぐ */
+    out         0x92, al        /* 設定                         */
     
-    /* A20\83\89\83C\83\93\97L\8cø\89»\94»\92è */
+    /* A20ライン有効化判定 */
     call        CheckA20
     cmp         ax, 0
     je          A20Enable_0
     
-    /* \83L\81[\83{\81[\83h\83R\83\93\83g\83\8d\81[\83\89\82ð\97p\82¢\82Ä\97L\8cø\89» */
-    call        waitKBC     /* \93ü\97Í\8eó\95t\8am\94F   */
+    /* キーボードコントローラを用いて有効化 */
+    call        waitKBC     /* 入力受付確認   */
     mov         al, 0xD1
-    out         0x64, al    /* \83R\83}\83\93\83h\8f\91\8d\9e\82Ý */
-    call        waitKBC     /* \93ü\97Í\8eó\95t\8am\94F   */
+    out         0x64, al    /* コマンド書込み */
+    call        waitKBC     /* 入力受付確認   */
     mov         al, 0xDF
-    out         0x60, al    /* \97L\8cø\89»         */
-    call        waitKBC     /* \93ü\97Í\8eó\95t\8am\94F   */
+    out         0x60, al    /* 有効化         */
+    call        waitKBC     /* 入力受付確認   */
     
-    /* A20\83\89\83C\83\93\97L\8cø\89»\94»\92è */
+    /* A20ライン有効化判定 */
     call        CheckA20
     cmp         ax, 0
     je          A20Enable_0
     
-    /* BIOS\82ð\97p\82¢\82Ä\97L\8cø\89» */
+    /* BIOSを用いて有効化 */
     mov         ax, 0x2401
     int         0x15
     
-    /* A20\83\89\83C\83\93\97L\8cø\89»\94»\92è */
+    /* A20ライン有効化判定 */
     call        CheckA20
     cmp         ax, 0
     je          A20Enable_0
     
 A20Enable_0:
-    /* A20\83\89\83C\83\93\97L\8cø\89»\8e¸\94s */
+    /* A20ライン有効化失敗 */
     mov         ax, -1
     ret
 A20Enable_M1:
-    /* A20\83\89\83C\83\93\97L\8cø\89»\90¬\8c÷ */
+    /* A20ライン有効化成功 */
     xor         ax, ax
     ret
 
 
 /******************************************************************************/
-/* \83\8d\81[\83J\83\8b\8aÖ\90\94                                                               */
+/* ローカル関数                                                               */
 /******************************************************************************/
 CheckA20:
-    /* 0xFFFF:0x0010(0x0010_0000)\82ð\83o\83b\83N\83A\83b\83v */
+    /* 0xFFFF:0x0010(0x0010_0000)をバックアップ */
     mov         ax, 0xFFFF
     mov         fs, ax
     mov         ax, [ fs:0x0010 ]
     push        ax
     
-    /* CPU\83L\83\83\83b\83V\83\93\83O\96³\8cø\89» */
-    mov         eax, cr0            /* CR0\83\8c\83W\83X\83^\8eæ\93¾              */
-    or          eax, 0x40000000     /* CD\83r\83b\83g\82ð1\82É\90Ý\92è            */
-    and         eax, 0xD0000000     /* NW\83r\83b\83g\82ð0\82É\90Ý\92è            */
-    mov         cr0, eax            /* CR0\83\8c\83W\83X\83^\82É\90Ý\92è\82µ\82Ä\96³\8cø\89»  */
-    wbinvd                          /* \83L\83\83\83b\83V\83\85\83\81\83\82\83\8a\83\89\83C\83g\83o\83b\83N */
+    /* CPUキャッシング無効化 */
+    mov         eax, cr0            /* CR0レジスタ取得              */
+    or          eax, 0x40000000     /* CDビットを1に設定            */
+    and         eax, 0xD0000000     /* NWビットを0に設定            */
+    mov         cr0, eax            /* CR0レジスタに設定して無効化  */
+    wbinvd                          /* キャッシュメモリライトバック */
     
-    /* 0xFFFF:0x0010(0x0010_0000)\82É\92l0xC0DE\8f\91\82«\8d\9e\82Ý */
+    /* 0xFFFF:0x0010(0x0010_0000)に値0xC0DE書き込み */
     mov         word ptr [ fs:0x0010 ], 0xC0DE
     
-    /* 0x0000:0x0000(0x0000_0000)\82Ì\92l\82ð\93Ç\82Ý\8d\9e\82Þ */
+    /* 0x0000:0x0000(0x0000_0000)の値を読み込む */
     xor         ax, ax
     mov         gs, ax
     mov         bx, [ gs:0x0000 ]
     
-    /* 0xFFFF:0x0010(0x0010_0000)\82ð\83\8a\83X\83g\83A */
+    /* 0xFFFF:0x0010(0x0010_0000)をリストア */
     pop         ax
     mov         [ fs:0x0010 ], ax
     
-    /* CPU\83L\83\83\83b\83V\83\93\83O\97L\8cø\89» */
-    mov         eax, cr0            /* CR0\83\8c\83W\83X\83^\8eæ\93¾             */
-    or          eax, 0x60000000     /* CD,NW\83r\83b\83g\82ð1\82É\90Ý\92è        */
-    mov         cr0, eax            /* CR0\83\8c\83W\83X\83^\82É\90Ý\92è\82µ\82Ä\97L\8cø\89» */
+    /* CPUキャッシング有効化 */
+    mov         eax, cr0            /* CR0レジスタ取得             */
+    or          eax, 0x60000000     /* CD,NWビットを1に設定        */
+    mov         cr0, eax            /* CR0レジスタに設定して有効化 */
     
-    /* \93Ç\82Ý\8d\9e\82ñ\82¾\92l\82Æ\94ä\8ar */
+    /* 読み込んだ値と比較 */
     cmp         bx, 0xC0DE
     je          checkA20_M1
     
-    /* A20\83\89\83C\83\93\82Í\97L\8cø */
+    /* A20ラインは有効 */
     xor         ax, ax
     ret
 checkA20_M1:
-    /* A20\83\89\83C\83\93\82Í\96³\8cø */
+    /* A20ラインは無効 */
     mov         ax, -1
     ret
 
 waitKBC:
-    /* IBF\83`\83F\83b\83N */
+    /* IBFチェック */
     in          al, 0x64
     test        al, 0x02
     jnz         waitKBC
index 2949e27..6e4a777 100644 (file)
@@ -1,43 +1,43 @@
 /******************************************************************************/
 /* src/booter/Initctrl/InitctrlCpu.s                                          */
-/*                                                                 2016/12/04 */
-/* Copyright (C) 2016 Mochi.                                                  */
+/*                                                                 2017/03/12 */
+/* Copyright (C) 2016-2017 Mochi.                                             */
 /******************************************************************************/
  .intel_syntax noprefix
 .code16
 /******************************************************************************/
-/* \83O\83\8d\81[\83o\83\8b\90é\8c¾                                                             */
+/* グローバル宣言                                                             */
 /******************************************************************************/
 .global CpuSwitchMode
 
 
 /******************************************************************************/
-/* TEXT\83Z\83N\83V\83\87\83\93                                                             */
+/* TEXTセクション                                                             */
 /******************************************************************************/
 .section .text
 
 CpuSwitchMode:
-    /* \8a\84\82è\8d\9e\82Ý\96³\8cø\89» */
+    /* 割り込み無効化 */
     mov         al, 0xFF
-    out         0xA1, al        /* PIC2\8a\84\82è\8d\9e\82Ý\96³\8cø\89» */
+    out         0xA1, al        /* PIC2割り込み無効化 */
     nop
-    out         0x21, al        /* PIC1\8a\84\82è\8d\9e\82Ý\96³\8cø\89» */
-    cli                         /* CPU\8a\84\82è\8d\9e\82Ý\96³\8cø\89»  */
+    out         0x21, al        /* PIC1割り込み無効化 */
+    cli                         /* CPU割り込み無効化  */
     
-    /* GDT\90Ý\92è */
+    /* GDT設定 */
     lgdt        [ pGDTR ]
     
-    /* CR0\83\8c\83W\83X\83^\90Ý\92è */
+    /* CR0レジスタ設定 */
     mov         eax, cr0
-    or          eax, 0x00000001 /* PE\83r\83b\83gON       */
-    mov         cr0, eax        /* \95Û\8cì\83\82\81[\83h\97L\8cø\89» */
+    or          eax, 0x00000001 /* PEビットON       */
+    mov         cr0, eax        /* 保護モード有効化 */
     
-    /* \95Û\8cì\83\82\81[\83h\88Ú\8ds\81ifar jump\81j */
+    /* 保護モード移行(far jump) */
     jmp         0x8:setSegment
     
 .code32
 setSegment:
-    /* \83f\81[\83^\83Z\83O\83\81\83\93\83g\8f\89\8aú\89» */
+    /* データセグメント初期化 */
     mov         ax, 2 * 8
     mov         ds, ax
     mov         es, ax
@@ -45,28 +45,28 @@ setSegment:
     mov         gs, ax
     mov         ss, ax
     
-    /* \83X\83^\83b\83N\83|\83C\83\93\83^\95Ï\8dX */
-    mov         esp, 0x200000
+    /* スタックポインタ変更 */
+    mov         esp, 0x03000000
     
-    /* \83J\81[\83l\83\8b\8eÀ\8ds */
+    /* カーネル実行 */
     jmp         0x00100000
 
 
 /******************************************************************************/
-/* DATA\83Z\83N\83V\83\87\83\93                                                             */
+/* DATAセクション                                                             */
 /******************************************************************************/
 .section .data
 /* GDT */
 .align 8
 pGDT:
-    .word   0x0000, 0x0000, 0x0000, 0x0000  /* \83i\83\8b\83Z\83O\83\81\83\93\83g   */
-    .word   0xFFFF, 0x0000, 0x9800, 0x00CF  /* \83R\81[\83h\83Z\83O\83\81\83\93\83g */
-    .word   0xFFFF, 0x0000, 0x9200, 0x00CF  /* \83f\81[\83^\83Z\83O\83\81\83\93\83g */
+    .word   0x0000, 0x0000, 0x0000, 0x0000  /* ナルセグメント   */
+    .word   0xFFFF, 0x0000, 0x9800, 0x00CF  /* コードセグメント */
+    .word   0xFFFF, 0x0000, 0x9200, 0x00CF  /* データセグメント */
 
 /* GDTR */
 pGDTR:
-    .word   . - pGDT - 1     /* \83\8a\83~\83b\83g          */
-    .long   pGDT             /* GDT\83x\81[\83X\83A\83h\83\8c\83X */
+    .word   . - pGDT - 1     /* リミット          */
+    .long   pGDT             /* GDTベースアドレス */
 
 
 /******************************************************************************/
index b8bd9ae..0f0e286 100644 (file)
@@ -1,18 +1,18 @@
 /******************************************************************************/
 /* src/booter/Initctrl/InitctrlMain.s                                         */
-/*                                                                 2016/12/04 */
-/* Copyright (C) 2016 Mochi.                                                  */
+/*                                                                 2017/03/12 */
+/* Copyright (C) 2016-2017 Mochi.                                             */
 /******************************************************************************/
  .intel_syntax noprefix
 .code16
 /******************************************************************************/
-/* \83O\83\8d\81[\83o\83\8b\90é\8c¾                                                             */
+/* グローバル宣言                                                             */
 /******************************************************************************/
 .global InitctrlMain
 
 
 /******************************************************************************/
-/* \8aO\95\94\8aÖ\90\94\90é\8c¾                                                               */
+/* 外部関数宣言                                                               */
 /******************************************************************************/
 .extern A20Enable
 .extern LoaderKernel
 
 
 /******************************************************************************/
-/* TEXT\83Z\83N\83V\83\87\83\93                                                             */
+/* TEXTセクション                                                             */
 /******************************************************************************/
 .section .text
 
 InitctrlMain:
-    /* \83r\83f\83I\83\82\81[\83h\90Ý\92è */
+    /* ビデオモード設定 */
     mov         ax, 0x0003
     int         0x10
     
-    /* A20\83\89\83C\83\93\97L\8cø\89» */
+    /* A20ライン有効化 */
     call        A20Enable
     
-    /* \83J\81[\83l\83\8b\93Ç\8d\9e\82Ý */
+    /* カーネル読込み */
     call        LoaderLoadKernel
     
-    /* CPU\83\82\81[\83h\95Ï\8dX */
+    /* CPUモード変更 */
     call        CpuSwitchMode
     
 Stop:
index c31ae56..d2c339d 100644 (file)
@@ -1,6 +1,6 @@
 /******************************************************************************/
 /* src/kernel/Debug/DebugLog.c                                                */
-/*                                                                 2017/03/11 */
+/*                                                                 2017/03/12 */
 /* Copyright (C) 2017 Mochi.                                                  */
 /******************************************************************************/
 /******************************************************************************/
@@ -116,7 +116,7 @@ const static logIdTrans_t gIdTransTbl[ CMN_MODULE_NUM + 1 ] = {
     { CMN_MODULE_INTMNG_IDT,    "INT-IDT " },   /* 割込管理(IDT管理)          */
     { CMN_MODULE_INTMNG_HDL,    "INT-HDL " },   /* 割込管理(ハンドラ管理)     */
     { CMN_MODULE_TIMERMNG_INIT, "TIM-INIT" },   /* タイマ管理(初期化)         */
-    { CMN_MODUlE_TIMERMNG_PIT,  "TIM-PIT " },   /* タイマ管理(PIT管理)        */
+    { CMN_MODULE_TIMERMNG_PIT,  "TIM-PIT " },   /* タイマ管理(PIT管理)        */
     { CMN_MODULE_PROCMNG_INIT,  "PRC-INIT" },   /* プロセス管理(初期化)       */
     { CMN_MODULE_PROCMNG_TSS,   "PRC-TSS " },   /* プロセス管理(TSS管理)      */
     { CMN_MODULE_PROCMNG_SCHED, "PRC-SCHD" },   /* プロセス管理(スケジューラ) */
@@ -216,7 +216,7 @@ void DebugLogInit( void )
  *                  - CMN_MODULE_INTMNG_IDT    割込管理(IDT管理)
  *                  - CMN_MODULE_INTMNG_HDL    割込管理(ハンドラ管理)
  *                  - CMN_MODULE_TIMERMNG_INIT タイマ管理(初期化)
- *                  - CMN_MODUlE_TIMERMNG_PIT  タイマ管理(PIT管理)
+ *                  - CMN_MODULE_TIMERMNG_PIT  タイマ管理(PIT管理)
  *                  - CMN_MODULE_PROCMNG_INIT  プロセス管理(初期化)
  *                  - CMN_MODULE_PROCMNG_TSS   プロセス管理(TSS管理)
  *                  - CMN_MODULE_PROCMNG_SCHED プロセス管理(スケジューラ)
index 042aa61..edf9b7c 100644 (file)
@@ -49,7 +49,7 @@ void InitCtrlInit( void )
 {
     /* [TODO]カーネル起動引数対応まで仮 */
     MochiKernelMemoryMap_t map = {
-        ( void * ) 0x200000,
+        ( void * ) 0x03000000,
         0x500000,
         MOCHIKERNEL_MEMORY_TYPE_AVAILABLE };
     
@@ -72,7 +72,7 @@ void InitCtrlInit( void )
     TimerMngInit();
     
     /* デバッグトレースログ出力 */
-    DEBUG_LOG( "hlt!!!" );
+    DEBUG_LOG( "Idle running." );
     
     /* アイドル(仮) */
     while ( 1 ) {
index 5d89a8c..19af7d1 100644 (file)
@@ -26,9 +26,9 @@
 /******************************************************************************/
 /* デバッグトレースログ出力マクロ */
 #ifdef DEBUG_LOG_ENABLE
-#define DEBUG_LOG( ... )                \
-    DebugLogOutput( CMN_MODULE_INT_HDL, \
-                    __LINE__,           \
+#define DEBUG_LOG( ... )                    \
+    DebugLogOutput( CMN_MODULE_INTMNG_HDL,  \
+                    __LINE__,               \
                     __VA_ARGS__ )
 #else
 #define DEBUG_LOG( ... )
@@ -187,6 +187,9 @@ void IntMngHdlInit( void )
 {
     uint32_t intNo;     /* 割込み番号 */
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* 全割込み番号毎に繰り返し */
     for ( intNo =  INTMNG_INT_NO_MIN;
           intNo <= INTMNG_INT_NO_MAX;
@@ -204,6 +207,9 @@ void IntMngHdlInit( void )
             IA32_DESCRIPTOR_DPL_3            ); /* 特権レベル         */
     }
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
index d5aa81a..7ffe7d8 100644 (file)
@@ -1,6 +1,6 @@
 /******************************************************************************/
 /* src/kernel/IntMng/IntMngIdt.c                                              */
-/*                                                                 2017/03/11 */
+/*                                                                 2017/03/12 */
 /* Copyright (C) 2016-2017 Mochi.                                             */
 /******************************************************************************/
 /******************************************************************************/
@@ -27,9 +27,9 @@
 /******************************************************************************/
 /* デバッグトレースログ出力マクロ */
 #ifdef DEBUG_LOG_ENABLE
-#define DEBUG_LOG( ... )                \
-    DebugLogOutput( CMN_MODULE_INT_IDT, \
-                    __LINE__,           \
+#define DEBUG_LOG( ... )                    \
+    DebugLogOutput( CMN_MODULE_INTMNG_IDT,  \
+                    __LINE__,               \
                     __VA_ARGS__ )
 #else
 #define DEBUG_LOG( ... )
@@ -54,12 +54,18 @@ static IA32DescriptorGate_t gIdt[ INTMNG_IDT_ENTRY_NUM ];
 /******************************************************************************/
 void IntMngIdtInit( void )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* IDT初期化 */
     memset( gIdt, 0, sizeof ( gIdt ) );
     
     /* IDTR設定 */
     IA32InstructionLidt( ( IA32Descriptor_t * ) gIdt, sizeof ( gIdt ) - 1 );
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
@@ -102,6 +108,17 @@ void IntMngIdtSet( uint32_t index,
                    uint8_t  type,
                    uint8_t  level )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. index=%#x, selector=%u, ",
+               __func__,
+               index,
+               selector );
+    DEBUG_LOG( " pOffset=%010p, count=%u, type=%#x, level=%u",
+               pOffset,
+               count,
+               type,
+               level );
+    
     /* ディスクリプタ設定 */
     gIdt[ index ].offset_low  = IA32_DESCRIPTOR_OFFSET_LOW( pOffset );
     gIdt[ index ].selector    = selector;
@@ -112,6 +129,9 @@ void IntMngIdtSet( uint32_t index,
     gIdt[ index ].attr_p      = IA32_DESCRIPTOR_P_YES;
     gIdt[ index ].offset_high = IA32_DESCRIPTOR_OFFSET_HIGH( pOffset );
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
index 109d280..21918a9 100644 (file)
@@ -25,7 +25,7 @@
 /* デバッグトレースログ出力マクロ */
 #ifdef DEBUG_LOG_ENABLE
 #define DEBUG_LOG( ... )                    \
-    DebugLogOutput( CMN_MODULE_INT_INIT,    \
+    DebugLogOutput( CMN_MODULE_INTMNG_INIT, \
                     __LINE__,               \
                     __VA_ARGS__ )
 #else
@@ -44,6 +44,9 @@
 /******************************************************************************/
 void IntMngInit( void )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* IDT管理サブモジュール初期化 */
     IntMngIdtInit();
     
@@ -53,6 +56,9 @@ void IntMngInit( void )
     /* PIC管理サブモジュール初期化 */
     IntMngPicInit();
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     return;
 }
 
index f1533c1..9756e45 100644 (file)
@@ -25,7 +25,7 @@
 /* デバッグトレースログ出力マクロ */
 #ifdef DEBUG_LOG_ENABLE
 #define DEBUG_LOG( ... )                    \
-    DebugLogOutput( CMN_MODULE_INI_INIT,    \
+    DebugLogOutput( CMN_MODULE_INTMNG_INIT, \
                     __LINE__,               \
                     __VA_ARGS__ )
 #else
@@ -67,6 +67,9 @@ static picTbl_t gPicTbl;
 /******************************************************************************/
 void IntMngPicInit( void )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* PIC2(スレーブ)設定 */
     IA32InstructionOutByte( I8259A_S_PORT_ICW1, 0x11 );
     IA32InstructionOutByte( I8259A_S_PORT_ICW2, 0x28 );
@@ -86,6 +89,9 @@ void IntMngPicInit( void )
     /* 割込み無効化 */
     IntMngPicDisable();
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
@@ -116,6 +122,9 @@ void IntMngPicInit( void )
 /******************************************************************************/
 void IntMngPicAllowIrq( uint8_t irqNo )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. irqNo=%u", __func__, irqNo );
+    
     /* PIC割込み番号判定 */
     if ( ( irqNo >= I8259A_IRQ0 ) &&
          ( irqNo <= I8259A_IRQ7 )    ) {
@@ -142,6 +151,9 @@ void IntMngPicAllowIrq( uint8_t irqNo )
         IntMngPicEnable();
     }
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
@@ -172,6 +184,9 @@ void IntMngPicAllowIrq( uint8_t irqNo )
 /******************************************************************************/
 void IntMngPicDenyIrq( uint8_t irqNo )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. irqNo=%u", __func__, irqNo );
+    
     /* PIC割込み番号判定 */
     if ( ( irqNo >= I8259A_IRQ0 ) &&
          ( irqNo <= I8259A_IRQ7 )    ) {
@@ -203,6 +218,9 @@ void IntMngPicDenyIrq( uint8_t irqNo )
         IntMngPicEnable();
     }
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
@@ -215,6 +233,9 @@ void IntMngPicDenyIrq( uint8_t irqNo )
 /******************************************************************************/
 void IntMngPicDisable( void )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* 割込みマスク状態変更 */
     gPicTbl.maskState = PIC_MASK_STATE_DISABLE;
     
@@ -224,6 +245,9 @@ void IntMngPicDisable( void )
     /* PIC2(スレーブ)割込みマスク設定 */
     IA32InstructionOutByte( I8259A_S_PORT_OCW1, 0xFF );
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
@@ -236,6 +260,9 @@ void IntMngPicDisable( void )
 /******************************************************************************/
 void IntMngPicEnable( void )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* 割込みマスク状態変更 */
     gPicTbl.maskState = PIC_MASK_STATE_ENABLE;
     
@@ -245,6 +272,9 @@ void IntMngPicEnable( void )
     /* PIC2(スレーブ)割込みマスク設定 */
     IA32InstructionOutByte( I8259A_S_PORT_OCW1, gPicTbl.mask[ PIC_SLAVE  ] );
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
@@ -275,6 +305,9 @@ void IntMngPicEnable( void )
 /******************************************************************************/
 void IntMngPicEoi( uint8_t irqNo )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. irqNo=%u", __func__, irqNo );
+    
     /* PIC割込み番号判定 */
     if ( ( irqNo >= I8259A_IRQ0 ) &&
          ( irqNo <= I8259A_IRQ7 )    ) {
@@ -305,6 +338,9 @@ void IntMngPicEoi( uint8_t irqNo )
                                 I8259A_IRQ2         );
     }
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
index 15f2cc6..834d7e0 100644 (file)
@@ -1,6 +1,6 @@
 /******************************************************************************/
 /* src/kernel/MemMng/MemMngArea.c                                             */
-/*                                                                 2017/03/11 */
+/*                                                                 2017/03/12 */
 /* Copyright (C) 2017 Mochi.                                                  */
 /******************************************************************************/
 /******************************************************************************/
@@ -132,10 +132,16 @@ void *MemMngAreaAlloc( size_t size )
     pAddr = NULL;
     pFree = NULL;
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. size=%#x", __func__, size );
+    
     /* サイズチェック */
     if ( size == 0 ) {
         /* 不正 */
         
+        /* デバッグトレースログ出力 */
+        DEBUG_LOG( "%s() end. ret=NULL", __func__ );
+        
         return NULL;
         
     } else {
@@ -156,6 +162,9 @@ void *MemMngAreaAlloc( size_t size )
         if ( pFree == NULL ) {
             /* メモリ領域情報無 */
             
+            /* デバッグトレースログ出力 */
+            DEBUG_LOG( "%s() end. ret=NULL", __func__ );
+            
             return NULL;
         }
         
@@ -176,6 +185,9 @@ void *MemMngAreaAlloc( size_t size )
         pAddr = AreaAllocPartially( pFree, size );
     }
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end. ret=%010p", __func__, pAddr );
+    
     return pAddr;
 }
 
@@ -204,10 +216,16 @@ CmnRet_t MemMngAreaFree( void *pAddr )
     pFree   = NULL;
     pInfo   = NULL;
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. pAddr=%010p", __func__, pAddr );
+    
     /* 引数チェック */
     if ( pAddr == NULL ) {
         /* 不正 */
         
+        /* デバッグトレースログ出力 */
+        DEBUG_LOG( "%s() end. ret=%d", __func__, CMN_FAILURE );
+        
         return CMN_FAILURE;
     }
     
@@ -222,6 +240,9 @@ CmnRet_t MemMngAreaFree( void *pAddr )
         if ( pInfo == NULL ) {
             /* メモリ領域情報無 */
             
+            /* デバッグトレースログ出力 */
+            DEBUG_LOG( "%s() end. ret=%d", __func__, CMN_FAILURE );
+            
             return CMN_FAILURE;
         }
         
@@ -236,6 +257,9 @@ CmnRet_t MemMngAreaFree( void *pAddr )
     if ( retMLib != MLIB_SUCCESS ) {
         /* 失敗 */
         
+        /* デバッグトレースログ出力 */
+        DEBUG_LOG( "%s() end. ret=%d", __func__, CMN_FAILURE );
+        
         return CMN_FAILURE;
     }
     
@@ -274,6 +298,9 @@ CmnRet_t MemMngAreaFree( void *pAddr )
         break;
     }
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end. ret=%d", __func__, ret );
+    
     return ret;
 }
 
@@ -290,6 +317,9 @@ CmnRet_t MemMngAreaFree( void *pAddr )
 void MemMngAreaInit( MochiKernelMemoryMap_t *pMap,
                      size_t                 mapSize )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* 空メモリ領域情報リスト初期化 */
     AreaInitEmptyList();
     
@@ -299,6 +329,9 @@ void MemMngAreaInit( MochiKernelMemoryMap_t *pMap,
     /* 使用中メモリ領域リスト初期化 */
     AreaInitUsedList();
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
@@ -321,6 +354,9 @@ static void *AreaAlloc( AreaInfo_t *pFree )
 {
     MLibRet_t retMLib;  /* MLib関数戻り値 */
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. pFree=%010p", __func__, pFree );
+    
     /* 未使用メモリ領域リストから削除 */
     retMLib = MLibBasicListRemove( &( gAreaTbl.freeList ),
                                    ( MLibBasicListNode_t * ) pFree );
@@ -329,6 +365,9 @@ static void *AreaAlloc( AreaInfo_t *pFree )
     if ( retMLib != MLIB_SUCCESS ) {
         /* 失敗 */
         
+        /* デバッグトレースログ出力 */
+        DEBUG_LOG( "%s() end. ret=NULL", __func__ );
+        
         return NULL;
     }
     
@@ -340,9 +379,15 @@ static void *AreaAlloc( AreaInfo_t *pFree )
     if ( retMLib != MLIB_SUCCESS ) {
         /* 失敗 */
         
+        /* デバッグトレースログ出力 */
+        DEBUG_LOG( "%s() end. ret=NULL", __func__ );
+        
         return NULL;
     }
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end. ret=%010p", __func__, pFree->pAddr );
+    
     /* メモリ領域先頭アドレス返却 */
     return pFree->pAddr;
 }
@@ -370,6 +415,9 @@ static void *AreaAllocPartially( AreaInfo_t *pFree,
     /* 初期化 */
     retMLib = MLIB_FAILURE;
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. pFree=%010p, size=%#x", __func__, pFree, size );
+    
     /* 空メモリ領域情報リストからメモリ領域情報取得 */
     pEmpty = ( AreaInfo_t * )
         MLibBasicListRemoveTail( &( gAreaTbl.emptyList ) );
@@ -378,6 +426,9 @@ static void *AreaAllocPartially( AreaInfo_t *pFree,
     if ( pEmpty == NULL ) {
         /* メモリ領域情報無 */
         
+        /* デバッグトレースログ出力 */
+        DEBUG_LOG( "%s() end. ret=NULL", __func__ );
+        
         return NULL;
     }
     
@@ -394,6 +445,9 @@ static void *AreaAllocPartially( AreaInfo_t *pFree,
     if ( retMLib != MLIB_SUCCESS ) {
         /* 失敗 */
         
+        /* デバッグトレースログ出力 */
+        DEBUG_LOG( "%s() end. ret=NULL", __func__ );
+        
         return NULL;
     }
     
@@ -401,6 +455,12 @@ static void *AreaAllocPartially( AreaInfo_t *pFree,
     pFree->pAddr += size;               /* 先頭アドレス */
     pFree->size  -= size;               /* サイズ       */
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end. ret=%010p", __func__, pEmpty->pAddr );
+    
     /* メモリ領域先頭アドレス返却 */
     return pEmpty->pAddr;
 }
@@ -430,6 +490,9 @@ static CmnRet_t AreaFree( AreaInfo_t *pFree,
     retMLib = MLIB_FAILURE;
     pNext   = NULL;
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. pFree=%010p, pUsed=%010p", __func__, pFree, pUsed );
+    
     /* メモリ領域位置関係比較 */
     if ( pUsed->pAddr > pFree->pAddr ) {
         /* 使用中メモリ領域が未使用メモリ領域の前 */
@@ -464,6 +527,9 @@ static CmnRet_t AreaFree( AreaInfo_t *pFree,
     if ( pNext == NULL ) {
         /* メモリ領域情報無 */
         
+        /* デバッグトレースログ出力 */
+        DEBUG_LOG( "%s() end. ret=%d", __func__, CMN_SUCCESS );
+        
         return CMN_SUCCESS;
     }
     
@@ -482,6 +548,9 @@ static CmnRet_t AreaFree( AreaInfo_t *pFree,
             /* 未使用メモリ領域サイズ復元 */
             pFree->size = size;
             
+            /* デバッグトレースログ出力 */
+            DEBUG_LOG( "%s() end. ret=%d", __func__, CMN_FAILURE );
+            
             return CMN_FAILURE;
         }
         
@@ -503,6 +572,9 @@ static CmnRet_t AreaFree( AreaInfo_t *pFree,
         }
     }
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end. ret=%d", __func__, CMN_SUCCESS );
+    
     return CMN_SUCCESS;
 }
 
@@ -523,6 +595,9 @@ static CmnRet_t AreaFreeAfterTail( AreaInfo_t *pUsed )
 {
     MLibRet_t retMLib;  /* MLib関数戻り値 */
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. pUsed=%010p", __func__, pUsed );
+    
     /* 最後尾挿入 */
     retMLib = MLibBasicListInsertTail( &( gAreaTbl.freeList ),
                                        ( MLibBasicListNode_t * ) pUsed );
@@ -531,9 +606,15 @@ static CmnRet_t AreaFreeAfterTail( AreaInfo_t *pUsed )
     if ( retMLib != MLIB_SUCCESS ) {
         /* 失敗 */
         
+        /* デバッグトレースログ出力 */
+        DEBUG_LOG( "%s() end. ret=%d", __func__, CMN_FAILURE );
+        
         return CMN_FAILURE;
     }
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end. ret=%d", __func__, CMN_SUCCESS );
+    
     return CMN_SUCCESS;
 }
 
@@ -556,6 +637,9 @@ static CmnRet_t AreaFreeBefore( AreaInfo_t *pFree,
 {
     MLibRet_t retMLib;  /* MLib関数戻り値 */
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. pFree=%010p, pUsed=%010p", __func__, pFree, pUsed );
+    
     /* 指定した未使用メモリ領域の前に挿入 */
     retMLib = MLibBasicListInsertPrev( &( gAreaTbl.freeList ),
                                        ( MLibBasicListNode_t * ) pFree,
@@ -565,9 +649,15 @@ static CmnRet_t AreaFreeBefore( AreaInfo_t *pFree,
     if ( retMLib != MLIB_SUCCESS ) {
         /* 失敗 */
         
+        /* デバッグトレースログ出力 */
+        DEBUG_LOG( "%s() end. ret=%d", __func__, CMN_FAILURE );
+        
         return CMN_FAILURE;
     }
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end. ret=%d", __func__, CMN_SUCCESS );
+    
     return CMN_SUCCESS;
 }
 
@@ -584,6 +674,9 @@ static void AreaInitEmptyList( void )
     MLibRet_t           retMLib;    /* MLIB関数戻り値                   */
     MLibBasicListNode_t *pEmpty;    /* 空メモリ領域情報ノード           */
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* 空メモリ領域情報リスト初期化 */
     retMLib = MLibBasicListInit( &( gAreaTbl.emptyList ) );
     
@@ -592,6 +685,7 @@ static void AreaInitEmptyList( void )
         /* 失敗 */
         
         /* [TODO]カーネルパニック */
+        DEBUG_LOG( "ERROR!!! retMLib=%d", retMLib );
     }
     
     /* メモリ領域情報初期化 */
@@ -610,10 +704,14 @@ static void AreaInitEmptyList( void )
             /* 失敗 */
             
             /* [TODO]カーネルパニック */
+            DEBUG_LOG( "ERROR!!! retMLib=%d", retMLib );
             
         }
     }
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
@@ -649,6 +747,9 @@ static void AreaInitFreeList( MochiKernelMemoryMap_t *pMap,
     pEmpty  = NULL;
     pEntry  = NULL;
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. pMap=%010p, mapSize=%u", __func__, pMap, mapSize );
+    
     /* 未使用メモリ領域リスト初期化 */
     retMLib = MLibBasicListInit( &( gAreaTbl.freeList ) );
     
@@ -753,6 +854,9 @@ static void AreaInitFreeList( MochiKernelMemoryMap_t *pMap,
         }
     }
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
@@ -767,6 +871,9 @@ static void AreaInitUsedList( void )
 {
     MLibRet_t retMLib;  /* MLIB関数戻り値 */
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* 使用中メモリ領域リスト初期化 */
     retMLib = MLibBasicListInit( &( gAreaTbl.usedList ) );
     
@@ -775,8 +882,12 @@ static void AreaInitUsedList( void )
         /* 失敗 */
         
         /* [TODO]カーネルパニック */
+        DEBUG_LOG( "ERROR!!! retMLib=%d", retMLib );
     }
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
index 9a49fd7..a9da313 100644 (file)
@@ -166,9 +166,15 @@ static IA32Descriptor_t gGdt[ MEMMNG_GDT_ENTRY_NUM ] = {
 /******************************************************************************/
 void MemMngGdtInit( void )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* GDTR設定 */
     IA32InstructionLgdt( gGdt, sizeof ( gGdt ) - 1 );
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
@@ -240,9 +246,21 @@ uint16_t MemMngGdtAdd( void    *pBase,
     uint16_t            index;          /* GDTエントリ番号          */
     IA32DescriptorSeg_t *pDescriptor;   /* セグメントディスクリプタ */
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. pBase=%010p, limit=%u, ",
+               __func__,
+               pBase,
+               limit );
+    DEBUG_LOG( " limitG=%u, sysFlg=%u, type=%u, level=%u, opSize=%u",
+               limitG,
+               sysFlg,
+               type,
+               level,
+               opSize );
+    
     /* 空きディスクリプタ検索 */
-    for ( index = MEMMNG_GDT_ENTRY_MIN;
-          index < MEMMNG_GDT_ENTRY_MAX;
+    for ( index =  MEMMNG_GDT_ENTRY_MIN;
+          index <= MEMMNG_GDT_ENTRY_MAX;
           index++                       ) {
         /* 参照変数設定 */
         pDescriptor = &( gGdt[ index ].seg );
@@ -266,10 +284,16 @@ uint16_t MemMngGdtAdd( void    *pBase,
             pDescriptor->attr_g        = limitG;
             pDescriptor->base_high     = IA32_DESCRIPTOR_BASE_HIGH( pBase );
             
+            /* デバッグトレースログ出力 */
+            DEBUG_LOG( "%s() end. ret=%#x", __func__, index );
+            
             return index;
         }
     }
     
+    /* デバッグトレースログ */
+    DEBUG_LOG( "%s() end. ret=%#x", __func__, MEMMNG_GDT_ENTRY_FULL );
+    
     /* 空き無しによる追加失敗 */
     return MEMMNG_GDT_ENTRY_FULL;
 }
index e295c45..5391cda 100644 (file)
 void MemMngInit( MochiKernelMemoryMap_t *pMap,
                  size_t                 mapSize )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* GDT管理サブモジュール初期化 */
     MemMngGdtInit();
     
     /* メモリ領域管理サブモジュール初期化 */
     MemMngAreaInit( pMap, mapSize );
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
index 35f5a8f..d4b6942 100644 (file)
@@ -45,6 +45,9 @@
 /******************************************************************************/
 void ProcMngInit( void )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* TSS管理サブモジュール初期化 */
     ProcMngTssInit();
     
@@ -54,6 +57,9 @@ void ProcMngInit( void )
     /* スケジューラサブモジュール初期化 */
     ProcMngSchedInit();
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
index 2205882..2002ea7 100644 (file)
@@ -1,6 +1,6 @@
 /******************************************************************************/
 /* src/kernel/ProcMng/ProcMngSched.c                                          */
-/*                                                                 2017/03/11 */
+/*                                                                 2017/03/12 */
 /* Copyright (C) 2017 Mochi.                                                  */
 /******************************************************************************/
 /******************************************************************************/
@@ -129,6 +129,9 @@ int32_t ProcMngSchedAdd( uint32_t taskId )
 {
     schedTaskInfo_t *pTaskInfo; /* タスク情報 */
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. taskId=%u", __func__, taskId );
+    
     /* 空タスクキューから空タスク情報取得 */
     pTaskInfo =
         ( schedTaskInfo_t * ) MLibBasicListRemoveTail( &( gSchedTbl.freeQ ) );
@@ -137,6 +140,9 @@ int32_t ProcMngSchedAdd( uint32_t taskId )
     if ( pTaskInfo == NULL ) {
         /* 空タスク情報無し */
         
+        /* デバッグトレースログ出力 */
+        DEBUG_LOG( "%s() end. ret=%d", __func__, CMN_FAILURE );
+        
         return CMN_FAILURE;
     }
     
@@ -147,6 +153,9 @@ int32_t ProcMngSchedAdd( uint32_t taskId )
     /* 実行予約タスクグループにエンキュー */
     SchedEnqueueToReservedGrp( pTaskInfo );
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end. ret=%d", __func__, CMN_SUCCESS );
+    
     return CMN_SUCCESS;
 }
 
@@ -170,6 +179,9 @@ void ProcMngSchedExec( void )
     pRunningGrp = NULL;
     pTaskInfo   = NULL;
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* 実行中タスク判定 */
     if ( nowTaskId == PROCMNG_TASK_ID_IDLE ) {
         /* アイドルタスク */
@@ -230,6 +242,9 @@ void ProcMngSchedExec( void )
                 /* 再スケジューリング */
                 ProcMngSchedExec();
                 
+                /* デバッグトレースログ出力 */
+                DEBUG_LOG( "%s() end.", __func__ );
+                
                 return;
             }
         }
@@ -246,6 +261,9 @@ void ProcMngSchedExec( void )
     /* タスクスイッチ */
     SchedSwitchTask( nowTaskId, pTaskInfo->taskId );
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
@@ -278,6 +296,9 @@ void ProcMngSchedInit( void )
     MLibRet_t       retMLib;        /* MLib関数戻り値     */
     schedTaskInfo_t *pIdleTaskInfo; /* アイドルタスク情報 */
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* スケジューラテーブル0初期化 */
     memset( &gSchedTbl, 0, sizeof ( schedTbl_t ) );
     
@@ -299,7 +320,6 @@ void ProcMngSchedInit( void )
         /* エンキュー */
         retMLib =  MLibBasicListInsertHead( &( gSchedTbl.freeQ ),
                                             &( gSchedTbl.taskInfo[ i ].node ) );
-        
         /* エンキュー結果判定 */
         if ( retMLib != MLIB_SUCCESS ) {
             /* 失敗 */
@@ -308,6 +328,9 @@ void ProcMngSchedInit( void )
         }
     }
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
@@ -336,6 +359,9 @@ static void SchedEnqueueToReservedGrp( schedTaskInfo_t *pTaskInfo )
     pReservedGrp = &gSchedTbl.runGrp[ gSchedTbl.reservedGrpIdx ];
     retMLib      = MLIB_FAILURE;
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. pTaskInfo=%010p", __func__, pTaskInfo );
+    
     /* タスクタイプ取得 */
     taskType = ProcMngTaskGetType( pTaskInfo->taskId );
     
@@ -370,6 +396,9 @@ static void SchedEnqueueToReservedGrp( schedTaskInfo_t *pTaskInfo )
         /* [TODO] トレース出力 */
     }
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
@@ -382,6 +411,9 @@ static void SchedEnqueueToReservedGrp( schedTaskInfo_t *pTaskInfo )
 /******************************************************************************/
 static void SchedSwitchRunGrpRole( void )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* グループ役割切替 */
     gSchedTbl.runningGrpIdx  ^= 1;
     gSchedTbl.reservedGrpIdx ^= 1;
@@ -389,6 +421,9 @@ static void SchedSwitchRunGrpRole( void )
     /* タスク実行済みフラグ初期化 */
     gSchedTbl.runFlg = false;
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
@@ -409,6 +444,12 @@ static void SchedSwitchTask( uint32_t nowTaskId,
     void                 *pKernelStack; /* カーネルスタック */
     ProcMngTaskContext_t context;       /* コンテキスト     */
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. nowTaskId=%u, nextTaskId=%u",
+               __func__,
+               nowTaskId,
+               nextTaskId );
+    
     /* 初期化 */
     memset( &context, 0, sizeof ( ProcMngTaskContext_t ) );
     
@@ -431,6 +472,9 @@ static void SchedSwitchTask( uint32_t nowTaskId,
     /* ラベル */
     __asm__ __volatile__ ( "SchedSwitchTaskEnd:" );
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
index 5ffb773..68edfa5 100644 (file)
@@ -107,6 +107,12 @@ uint32_t ProcMngTaskAdd( uint8_t taskType,
     taskId       = PROCMNG_TASK_ID_MIN;
     pStackInfo   = NULL;
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start. taskType=%u, pEntryPoint=%010p",
+               __func__,
+               taskType,
+               pEntryPoint );
+    
     /* 空タスク検索 */
     for ( ; taskId < PROCMNG_TASK_ID_MAX; taskId++ ) {
         /* 使用フラグ判定 */
@@ -163,10 +169,16 @@ uint32_t ProcMngTaskAdd( uint8_t taskType,
                 return PROCMNG_TASK_ID_NULL;
             }
             
+            /* デバッグトレースログ出力 */
+            DEBUG_LOG( "%s() end. ret=%u", __func__, taskId );
+            
             return taskId;
         }
     }
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end. ret=%u", __func__, PROCMNG_TASK_ID_NULL );
+    
     return PROCMNG_TASK_ID_NULL;
 }
 
@@ -238,12 +250,18 @@ uint8_t ProcMngTaskGetType( uint32_t taskId )
 /******************************************************************************/
 void ProcMngTaskInit( void )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* タスク管理テーブル初期化 */
     memset( gTaskTbl, 0, sizeof ( gTaskTbl ) );
     
     /* アイドルタスク設定 */
     gTaskTbl[ PROCMNG_TASK_ID_IDLE ].used = TASK_ID_USED;   /* 使用フラグ */
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
@@ -292,6 +310,9 @@ void ProcMngTaskStart( void )
     pStack      = pTask->stackInfo.pBottomAddr; /* スタックアドレス */
     taskType    = pTask->type;                  /* タスクタイプ     */
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* タスクタイプ判定 */
     if ( taskType == PROCMNG_TASK_TYPE_DRIVER ) {
         /* ドライバ */
index 813c3a5..c50618a 100644 (file)
@@ -1,6 +1,6 @@
 /******************************************************************************/
 /* src/kernel/ProcMng/ProcMngTss.c                                            */
-/*                                                                 2017/03/11 */
+/*                                                                 2017/03/12 */
 /* Copyright (C) 2017 Mochi.                                                  */
 /******************************************************************************/
 /******************************************************************************/
@@ -57,6 +57,9 @@ void ProcMngTssInit( void )
     uint16_t index;     /* GDTエントリ番号    */
     uint16_t selector;  /* セグメントセレクタ */
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* TSS初期化 */
     memset( &gTss, 0, sizeof ( IA32Tss_t ) );
     
@@ -78,6 +81,9 @@ void ProcMngTssInit( void )
     /* TR設定 */
     IA32InstructionLtr( selector );
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
index 42fd5dd..5ecaa20 100644 (file)
 /******************************************************************************/
 void TimerMngInit( void )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* PIT管理サブモジュール初期化 */
     TimerMngPitInit();
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
index ae20d2d..fc391e2 100644 (file)
@@ -67,6 +67,9 @@ void TimerMngPitHdlInt( uint32_t intNo )
 /******************************************************************************/
 void TimerMngPitInit( void )
 {
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() start.", __func__ );
+    
     /* PIT(カウンタ0)初期化 */
     IA32InstructionOutByte( I8254_PORT_CTRLW,
                             ( I8254_CTRLW_SC_CNTR0 |
@@ -82,6 +85,9 @@ void TimerMngPitInit( void )
     /* 割込み許可設定 */
     IntMngPicAllowIrq( I8259A_IRQ0 );
     
+    /* デバッグトレースログ出力 */
+    DEBUG_LOG( "%s() end.", __func__ );
+    
     return;
 }
 
index 1fc1088..c74e2fa 100644 (file)
@@ -1,6 +1,6 @@
 /******************************************************************************/
 /* src/kernel/include/Cmn.h                                                   */
-/*                                                                 2017/03/06 */
+/*                                                                 2017/03/11 */
 /* Copyright (C) 2017 Mochi.                                                  */
 /******************************************************************************/
 #ifndef CMN_H
@@ -28,7 +28,7 @@
 #define CMN_MODULE_INTMNG_IDT    ( 0x0303 ) /**< 割込管理(IDT管理)          */
 #define CMN_MODULE_INTMNG_HDL    ( 0x0304 ) /**< 割込管理(ハンドラ管理)     */
 #define CMN_MODULE_TIMERMNG_INIT ( 0x0401 ) /**< タイマ管理(初期化)         */
-#define CMN_MODUlE_TIMERMNG_PIT  ( 0x0402 ) /**< タイマ管理(PIT管理)        */
+#define CMN_MODULE_TIMERMNG_PIT  ( 0x0402 ) /**< タイマ管理(PIT管理)        */
 #define CMN_MODULE_PROCMNG_INIT  ( 0x0501 ) /**< プロセス管理(初期化)       */
 #define CMN_MODULE_PROCMNG_TSS   ( 0x0502 ) /**< プロセス管理(TSS管理)      */
 #define CMN_MODULE_PROCMNG_SCHED ( 0x0503 ) /**< プロセス管理(スケジューラ) */
index 9b02107..d079d68 100644 (file)
@@ -20,7 +20,7 @@
 
 /** セグメントセレクタマクロ */
 #define IA32_SEGMENT_SELECTOR( _INDEX, _TI, _RPL ) \
-    ( ( uint16_t ) ( ( ( _INDEX ) << 3 ) + ( ( _TI ) << 2 ) + ( _RPL ) ) )
+    ( ( uint16_t ) ( ( ( _INDEX ) << 3 ) | ( ( _TI ) << 2 ) | ( _RPL ) ) )
 
 /* EFLAGSレジスタ */
 #define IA32_EFLAGS_ID             ( 0x00200000 )
index b68d4c2..01d2527 100644 (file)
@@ -1,7 +1,7 @@
 /******************************************************************************/
 /* src/libraries/libc/string/memset.c                                         */
-/*                                                                 2016/12/13 */
-/* Copyright (C) 2016 Mochi.                                                  */
+/*                                                                 2017/03/12 */
+/* Copyright (C) 2016-2017 Mochi.                                             */
 /******************************************************************************/
 /******************************************************************************/
 /* インクルード                                                               */
@@ -33,10 +33,12 @@ void *memset( void   *s,
 {
     /* 1バイト毎に終端バイトから繰り返し */
     while ( n > 0 ) {
+        /* コピーカウント更新 */
+        n--;
+        
         /* コピー値代入 */
         *( ( uint8_t * ) s + n ) = ( uint8_t ) c;
         
-        n--;
     }
     
     return s;
index 27b5b37..29a1bce 100644 (file)
@@ -1,7 +1,7 @@
 #******************************************************************************#\r
 #* vm/vmware/mochi.vmx                                                        *#\r
-#*                                                                 2016/12/04 *#\r
-#* Copyright (C) 2016 Mochi.                                                  *#\r
+#*                                                                 2017/03/11 *#\r
+#* Copyright (C) 2016-2017 Mochi.                                             *#\r
 #******************************************************************************#\r
 # VMware基本設定\r
 .encoding = "UTF-8"\r
@@ -13,7 +13,7 @@ displayName = "Mochi"
 gui.exitOnCLIHLT = "FALSE"\r
 \r
 # メモリサイズ (MB)\r
-memsize = "32"\r
+memsize = "64"\r
 \r
 # IDE\r
 ide0:0.present = "TRUE"\r