OSDN Git Service

(none)
authorryuz <ryuz>
Sat, 7 Feb 2009 11:43:20 +0000 (11:43 +0000)
committerryuz <ryuz>
Sat, 7 Feb 2009 11:43:20 +0000 (11:43 +0000)
14 files changed:
cfgrtr/include/apidef.h
cfgrtr/source/apidef.cpp
cfgrtr/source/credtq.cpp
cfgrtr/source/creflg.cpp
cfgrtr/source/crembf.cpp
cfgrtr/source/crembx.cpp
cfgrtr/source/crempf.cpp
cfgrtr/source/cremtx.cpp
cfgrtr/source/cresem.cpp
cfgrtr/source/h4acfg.cpp
sample/mips/jelly/gcc/gmake.mak
sample/mips/jelly/gcc/rom.lds
sample/mips/jelly/sample.c
sample/mips/jelly/system.cfg

index 7829e87..de548aa 100755 (executable)
@@ -1,8 +1,8 @@
 // ---------------------------------------------------------------------------
-//  Hyper Operating System V4  コンフィギュレーター                           
+//  Hyper Operating System V4a  コンフィギュレーター                           
 //    API定義クラス                                                           
 //                                                                            
-//                                    Copyright (C) 1998-2003 by Project HOS  
+//                                    Copyright (C) 1998-2009 by Project HOS  
 //                                    http://sourceforge.jp/projects/hos/     
 // ---------------------------------------------------------------------------
 
@@ -50,6 +50,5 @@ protected:
 #endif // __HOSV4CFG_ApiDef_h__
 
 
-// ---------------------------------------------------------------------------
-//  Copyright (C) 1998-2003 by Project HOS                                    
-// ---------------------------------------------------------------------------
+
+// end of file
index e218b25..8f03d62 100755 (executable)
@@ -21,8 +21,8 @@ CApiDef::CApiDef()
        int i;
 
        m_iDefaultMaxId = 0;
-       m_iMaxId = 0;
-       m_iObjs  = 0;
+       m_iMaxId  = -1;
+       m_iObjs   = 0;
        m_iResObj = 0;
        for ( i = 0; i < API_MAX_OBJS; i++ )
        {
@@ -194,7 +194,7 @@ int CApiDef::AutoId(void)
        }
 
        // 指定が無い場合はデフォルト値に設定
-       if ( m_iMaxId == 0 )
+       if ( m_iMaxId < 0 )
        {
                m_iMaxId = m_iDefaultMaxId;
        }
index aa42ca9..f41d778 100755 (executable)
@@ -81,7 +81,7 @@ int CApiCreDtq::AnalyzeApi(const char* pszApiName, const char* pszParams)
                        return CFG_ERR_DEF_CONFLICT;
                }
 
-               if ( (iId = atoi(pszParams)) <= 0 )
+               if ( (iId = atoi(pszParams)) < 0 )
                {
                        return CFG_ERR_PARAM;
                }
@@ -90,7 +90,7 @@ int CApiCreDtq::AnalyzeApi(const char* pszApiName, const char* pszParams)
 
                return CFG_ERR_OK;
        }
-
+       
        return CFG_ERR_NOPROC;
 }
 
@@ -100,6 +100,11 @@ void CApiCreDtq::WriteId(FILE* fp)
 {
        int i;
 
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
+
        // ID 直接指定でないオブジェクトが在るかどうかサーチ
        for ( i = 0; i < m_iObjs; i++ )
        {
@@ -137,6 +142,11 @@ void  CApiCreDtq::WriteCfgDef(FILE* fp)
        bool blOutput;
        int  i, j;
 
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
+
        // コメント出力
        fputs(
                "\n\n\n"
@@ -252,22 +262,16 @@ void  CApiCreDtq::WriteCfgDef(FILE* fp)
 // cfgファイル初期化部書き出し
 void  CApiCreDtq::WriteCfgIni(FILE* fp)
 {
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
+
        // オブジェクト存在チェック
        if ( m_iObjs == 0 )
        {
                return;
        }
-
-       // 初期化部出力
-       fprintf(
-               fp,
-               "\t\n\t\n"
-               "\t/* initialize data queue control block */\n"
-               "\tfor ( i = 0; i < %d; i++ )\n"
-               "\t{\n"
-               "\t\tkernel_dtqcb_ram[i].dtqcb_rom = &kernel_dtqcb_rom[i];\n"
-               "\t}\n",
-               m_iObjs);
 }
 
 
@@ -280,10 +284,11 @@ void  CApiCreDtq::WriteCfgStart(FILE* fp)
                return;
        }
 
-       fputs("\tkernel_ini_dtq();\t\t/* initialize data queue */\n", fp);
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
 }
 
 
-// ---------------------------------------------------------------------------
-//  Copyright (C) 1998-2003 by Project HOS                                    
-// ---------------------------------------------------------------------------
+// end of file
index 991704f..0639f18 100755 (executable)
@@ -1,8 +1,8 @@
 // ---------------------------------------------------------------------------
-//  Hyper Operating System V4  コンフィギュレーター                           
+//  Hyper Operating System V4a  コンフィギュレーター                           
 //    CRE_FLG API の処理                                                      
 //                                                                            
-//                                    Copyright (C) 1998-2003 by Project HOS  
+//                                    Copyright (C) 1998-2009 by Project HOS  
 //                                    http://sourceforge.jp/projects/hos/     
 // ---------------------------------------------------------------------------
 
@@ -61,7 +61,7 @@ int CApiCreFlg::AnalyzeApi(const char* pszApiName, const char* pszParams)
                        return CFG_ERR_DEF_CONFLICT;
                }
 
-               if ( (iId = atoi(pszParams)) <= 0 )
+               if ( (iId = atoi(pszParams)) < 0 )
                {
                        return CFG_ERR_PARAM;
                }
@@ -97,6 +97,11 @@ int CApiCreFlg::AnalyzeApi(const char* pszApiName, const char* pszParams)
 void CApiCreFlg::WriteId(FILE* fp)
 {
        int i;
+       
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
 
        // %jp{コメントを出力}
        fputs("\n\n/* event flag ID definetion */\n", fp);
@@ -130,6 +135,11 @@ void  CApiCreFlg::WriteCfgDef(FILE* fp)
 {
        int  i;
 
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
+
        // コメント出力
        fputs(
                "\n\n\n"
@@ -299,28 +309,16 @@ void CApiCreFlg::WriteFlgcbRom(FILE *fp, int iObj)
 
 
 
-
-
 // cfgファイル初期化部書き出し
 void  CApiCreFlg::WriteCfgIni(FILE* fp)
 {
-       // オブジェクト存在チェック
-       if ( m_iObjs == 0 )
-       {
-               return;
-       }
 }
 
 
 // cfgファイル起動部書き出し
 void  CApiCreFlg::WriteCfgStart(FILE* fp)
 {
-       // オブジェクト存在チェック
-       if ( m_iObjs == 0 )
-       {
-               return;
-       }
 }
 
 
-// end of file
\ No newline at end of file
+// end of file
index 2bd30d8..c631691 100755 (executable)
@@ -32,13 +32,13 @@ CApiCreMbf::CApiCreMbf()
        m_iParams = 2;
 }
 
+
 // デストラクタ
 CApiCreMbf::~CApiCreMbf()
 {
 }
 
 
-
 // APIの解析
 int CApiCreMbf::AnalyzeApi(const char* pszApiName, const char* pszParams)
 {
@@ -60,7 +60,7 @@ int CApiCreMbf::AnalyzeApi(const char* pszApiName, const char* pszParams)
                        return CFG_ERR_DEF_CONFLICT;
                }
 
-               if ( (iId = atoi(pszParams)) <= 0 )
+               if ( (iId = atoi(pszParams)) < 0 )
                {
                        return CFG_ERR_PARAM;
                }
@@ -131,7 +131,13 @@ void CApiCreMbf::WriteId(FILE* fp)
 void  CApiCreMbf::WriteCfgDef(FILE* fp)
 {
        const char* pszParam;
-       bool blOutput;  int  i, j;
+       bool blOutput;
+       int  i, j;
+
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
 
        // コメント出力
        fputs(
@@ -255,6 +261,11 @@ void  CApiCreMbf::WriteCfgDef(FILE* fp)
 // cfgファイル初期化部書き出し
 void  CApiCreMbf::WriteCfgIni(FILE* fp)
 {
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
+
        // オブジェクト存在チェック
        if ( m_iObjs == 0 )
        {
@@ -277,16 +288,17 @@ void  CApiCreMbf::WriteCfgIni(FILE* fp)
 // cfgファイル起動部書き出し
 void  CApiCreMbf::WriteCfgStart(FILE* fp)
 {
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
+
        // オブジェクト存在チェック
        if ( m_iObjs == 0 )
        {
                return;
        }
-
-       fputs("\tkernel_ini_mbf();\t\t/* initialize message buffer */\n", fp);
 }
 
 
-// ---------------------------------------------------------------------------
-//  Copyright (C) 1998-2003 by Project HOS                                    
-// ---------------------------------------------------------------------------
+// end of file
index 0609b69..a5fbc86 100755 (executable)
@@ -63,7 +63,7 @@ int CApiCreMbx::AnalyzeApi(const char* pszApiName, const char* pszParams)
                        return CFG_ERR_DEF_CONFLICT;
                }
 
-               if ( (iId = atoi(pszParams)) <= 0 )
+               if ( (iId = atoi(pszParams)) < 0 )
                {
                        return CFG_ERR_PARAM;
                }
@@ -98,6 +98,10 @@ int CApiCreMbx::AnalyzeApi(const char* pszApiName, const char* pszParams)
 // ID 定義ファイル書き出し
 void CApiCreMbx::WriteId(FILE* fp)
 {
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
 
 }
 
@@ -107,6 +111,11 @@ void  CApiCreMbx::WriteCfgDef(FILE* fp)
 {
        int  i;
 
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
+       
        // コメント出力
        fputs(
                "\n\n\n"
@@ -281,32 +290,21 @@ void CApiCreMbx::WriteMbxcbRom(FILE *fp, int iObj)
 // %jp{cfgファイル初期化部書き出し}
 void CApiCreMbx::WriteCfgIni(FILE* fp)
 {
-       // %jp{オブジェクト存在チェック}
-       if ( m_iObjs == 0 )
+       if ( m_iMaxId <= 0 )
        {
                return;
        }
-
-       // %jp{初期化部出力}
-       fprintf(
-               fp,
-               "\t\n\t\n"
-               "\t/* initialize mailbox control block */\n"
-               "\tfor ( i = 0; i < %d; i++ )\n"
-               "\t{\n"
-               "\t\tkernel_mbxcb_ram[i].mbxcb_rom = &kernel_mbxcb_rom[i];\n"
-               "\t}\n",
-               m_iObjs);
 }
 
 
 // cfgファイル起動部書き出し
 void  CApiCreMbx::WriteCfgStart(FILE* fp)
 {
-
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
 }
 
 
-// ---------------------------------------------------------------------------
-//  Copyright (C) 1998-2006 by Project HOS                                    
-// ---------------------------------------------------------------------------
+// end of file
index 5b639d9..372ea7d 100755 (executable)
@@ -64,7 +64,7 @@ int CApiCreMpf::AnalyzeApi(const char* pszApiName, const char* pszParams)
                        return CFG_ERR_DEF_CONFLICT;
                }
 
-               if ( (iId = atoi(pszParams)) <= 0 )
+               if ( (iId = atoi(pszParams)) < 0 )
                {
                        return CFG_ERR_PARAM;
                }
@@ -99,6 +99,10 @@ int CApiCreMpf::AnalyzeApi(const char* pszApiName, const char* pszParams)
 // ID 定義ファイル書き出し
 void CApiCreMpf::WriteId(FILE* fp)
 {
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
 }
 
 
@@ -108,6 +112,11 @@ void  CApiCreMpf::WriteCfgDef(FILE* fp)
        const char* pszParam;
        int         i;
 
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
+
        // コメント出力
        fputs(
                "\n\n\n"
@@ -314,14 +323,20 @@ void CApiCreMpf::WriteMpfcbRom(FILE *fp, int iObj)
 // cfgファイル初期化部書き出し
 void  CApiCreMpf::WriteCfgIni(FILE* fp)
 {
-
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
 }
 
 
 // cfgファイル起動部書き出し
 void  CApiCreMpf::WriteCfgStart(FILE* fp)
 {
-
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
 }
 
 
index 28ae99a..8603921 100755 (executable)
@@ -1,8 +1,8 @@
 // ---------------------------------------------------------------------------
-//  Hyper Operating System V4 Advance configurator                           
+//  Hyper Operating System V4a Advance configurator                           
 //    CRE_MTX API の処理                                                      
 //                                                                            
-//                                    Copyright (C) 1998-2006 by Project HOS  
+//                                    Copyright (C) 1998-2009 by Project HOS  
 //                                    http://sourceforge.jp/projects/hos/     
 // ---------------------------------------------------------------------------
 
@@ -56,7 +56,7 @@ int CApiCreMtx::AnalyzeApi(const char* pszApiName, const char* pszParams)
                        return CFG_ERR_MULTIDEF;
                }
 
-               if ( (iId = atoi(pszParams)) <= 0 )
+               if ( (iId = atoi(pszParams)) < 0 )
                {
                        return CFG_ERR_PARAM;
                }
@@ -75,10 +75,14 @@ void CApiCreMtx::WriteId(FILE* fp)
 {
        int i;
 
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
+       
        // %jp{コメントを出力}
        fputs("\n\n/* Mtxaphore object ID definetion */\n\n", fp);
-
-
+       
        // %jp{ID定義を出力}
        for ( i = 0; i < m_iObjs; i++ )
        {
@@ -107,7 +111,12 @@ void CApiCreMtx::WriteId(FILE* fp)
 void  CApiCreMtx::WriteCfgDef(FILE* fp)
 {
        int  i;
-
+       
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
+       
        // %jp{コメント出力}
        fputs(
                "\n\n\n"
@@ -290,6 +299,11 @@ void CApiCreMtx::WriteMtxcbRom(FILE *fp, int iObj)
 // cfgファイル初期化部書き出し
 void  CApiCreMtx::WriteCfgIni(FILE* fp)
 {
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
+
 #if _KERNEL_MTXCB_ALGORITHM == _KERNEL_MTXCB_ALG_PTRARRAY && _KERNEL_MTXCB_SPLIT_RO
        if ( m_iObjs <= 0 )
        {
@@ -308,9 +322,12 @@ void  CApiCreMtx::WriteCfgIni(FILE* fp)
 // cfgファイル起動部書き出し
 void  CApiCreMtx::WriteCfgStart(FILE* fp)
 {
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
 }
 
 
-// ---------------------------------------------------------------------------
-//  Copyright (C) 1998-2007 by Project HOS                                    
-// ---------------------------------------------------------------------------
+// end of file
+
index 589b784..32c9212 100755 (executable)
@@ -62,13 +62,13 @@ int CApiCreSem::AnalyzeApi(const char* pszApiName, const char* pszParams)
                        return CFG_ERR_DEF_CONFLICT;
                }
                
-               if ( (iId = atoi(pszParams)) <= 0 )
+               if ( (iId = atoi(pszParams)) < 0 )
                {
                        return CFG_ERR_PARAM;
                }
-
+               
                m_iMaxId = iId;
-
+               
                return CFG_ERR_OK;
        }
        else if ( strcmp(pszApiName, "KERNEL_RSV_SEMID") == 0 )
@@ -84,7 +84,7 @@ int CApiCreSem::AnalyzeApi(const char* pszApiName, const char* pszParams)
                {
                        return CFG_ERR_PARAM;
                }
-
+               
                m_iResObj += iId;
 
                return CFG_ERR_OK;
@@ -98,6 +98,11 @@ int CApiCreSem::AnalyzeApi(const char* pszApiName, const char* pszParams)
 void CApiCreSem::WriteId(FILE* fp)
 {
        int i;
+       
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
 
        // %jp{コメントを出力}
        fputs("\n\n/* Semaphore object ID definetion */\n\n", fp);
@@ -132,6 +137,11 @@ void  CApiCreSem::WriteCfgDef(FILE* fp)
 {
        int  i;
 
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
+
        // %jp{コメント出力}
        fputs(
                "\n\n\n"
@@ -306,6 +316,11 @@ void CApiCreSem::WriteSemcbRom(FILE *fp, int iObj)
 // cfgファイル初期化部書き出し
 void  CApiCreSem::WriteCfgIni(FILE* fp)
 {
+       if ( m_iMaxId <= 0 )
+       {
+               return;
+       }
+       
 #if _KERNEL_SEMCB_ALGORITHM == _KERNEL_SEMCB_ALG_PTRARRAY && _KERNEL_SEMCB_SPLIT_RO
        if ( m_iObjs <= 0 )
        {
index dcd4f79..f45f2a1 100755 (executable)
@@ -353,9 +353,9 @@ void WriteCfgFile(FILE* fp)
        fprintf(fp, "#include \"object/cycobj.h\"\n");
        
 //     fprintf(fp, "#include \"%s\"\n", s_szIdFile);
-       fprintf(fp, "#include \"kernel_id.h\"\n", s_szIdFile);
-
-
+       fprintf(fp, "#include \"kernel_id.h\"\n");
+       
+       
        // ID 定義ファイル出力
        for ( i = 0; i < API_COUNT; i++ )
        {
index 8c5e339..7d41172 100755 (executable)
@@ -24,7 +24,7 @@ CMD_OBJCNV ?= $(GCC_ARCH)objcopy
 
 
 # %jp{アーキテクチャ定義}%en{architecture}
-ARCH_NAME ?= mips1
+ARCH_NAME ?= jelly
 ARCH_CC   ?= gcc
 EXT_EXE   ?= elf
 
index dcf569c..34554ed 100755 (executable)
@@ -4,7 +4,7 @@ ENTRY(_reset_handler)
 MEMORY
 {
        rom    : o = 0x00000000, l = 0x00010000
-       ram    : o = 0x01000000, l = 0x00100000
+       ram    : o = 0x01000000, l = 0x00002000
 }
 
 SECTIONS
index b852dc1..7421ea0 100755 (executable)
@@ -4,10 +4,11 @@
  * @file  sample.c
  * @brief %jp{サンプルプログラム}%en{Sample program}
  *
- * Copyright (C) 1998-2006 by Project HOS
+ * Copyright (C) 1998-2009 by Project HOS
  * http://sourceforge.jp/projects/hos/
  */
 
+
 #include <stdlib.h>
 #include <string.h>
 #include "kernel.h"
 #define RIGHT(num)     ((num) >= 5 ? 1 : (num) + 1)
 
 
-ID mbxid;
-ID mpfid;
-
-
 /** %jp{メッセージ構造体} */
 typedef struct t_print_msg
 {
@@ -31,15 +28,6 @@ typedef struct t_print_msg
 } T_PRINT_MSG;
 
 
-void Uart_IsrRx(VP_INT exinf)
-{
-       int c;
-       c = Uart_GetChar();
-       Uart_PutChar(c);
-       vclr_int(1);
-}
-
-
 /** %jp{初期化ハンドラ} */
 void Sample_Initialize(VP_INT exinf)
 {
@@ -49,46 +37,17 @@ void Sample_Initialize(VP_INT exinf)
        /* %jp{UART初期化} */
        Uart_Initialize();
        
-       /* %jp{固定長メモリプール生成} */
-       cmpf.mpfatr = TA_TFIFO;                                 
-       cmpf.blkcnt = 3;                                                
-       cmpf.blksz  = sizeof(T_PRINT_MSG);              
-       cmpf.mpf    = NULL;                                             
-       mpfid = acre_mpf(&cmpf);
-       
-       /* %jp{メールボックス生成} */
-       cmbx.mbxatr  = TA_TFIFO | TA_TFIFO;             
-       cmbx.maxmpri = 1;                                               
-       cmbx.mprihd  = NULL;                                    
-       mbxid = acre_mbx(&cmbx);
-       
        /* %jp{タスク起動} */
-       act_tsk(TSKID_PRINT);
        act_tsk(TSKID_SAMPLE1);
        act_tsk(TSKID_SAMPLE2);
        act_tsk(TSKID_SAMPLE3);
        act_tsk(TSKID_SAMPLE4);
        act_tsk(TSKID_SAMPLE5);
-       
-       
-       {
-               T_CISR cisr;
-               
-               /* %jp{割り込みサービスルーチン生成} */
-               cisr.isratr = TA_HLNG;
-               cisr.exinf  = 0;
-               cisr.intno  = 1;
-               cisr.isr    = (FP)Uart_IsrRx;
-               acre_isr(&cisr);
-       
-               /* 割込み許可 */
-               ena_int(1);
-       }
 }
 
 
 /** %jp{適当な時間待つ} */
-void rand_wait(void)
+void Sample_RandWait(void)
 {
        static unsigned long seed = 12345;
        unsigned long r;
@@ -103,33 +62,29 @@ void rand_wait(void)
 
 
 /** %jp{状態表示} */
-void print_state(int num, char *text)
+void Sample_PrintSatet(int num, char *text)
 {
-       T_PRINT_MSG     *msg;
-       VP                      mem;
-       int                     i;
+       int     i;
        
-       /* %jp{メモリ取得} */
-       get_mpf(mpfid, &mem);
-       msg = (T_PRINT_MSG *)mem;
+       wai_sem(SEMID_UART);
        
-       /* %jp{文字列生成} */
-       msg->text[0] = '0' + num;
-       msg->text[1] = ' ';
-       msg->text[2] = ':';
-       msg->text[3] = ' ';
+       /* %jp{文字列出力} */
+       Uart_PutChar('0' + num);
+       Uart_PutChar(' ');
+       Uart_PutChar(':');
+       Uart_PutChar(' ');
        for ( i = 0; text[i] != '\0'; i++ )
        {
-               msg->text[4+i] = text[i];
+               Uart_PutChar(text[i]);
        }
-       msg->text[4+i] = '\n';
-       msg->text[5+i] = '\0';
+       Uart_PutChar('\n');
+       Uart_PutChar('\0');
        
-       /* %jp{表示タスクに送信} */
-       snd_mbx(mbxid, (T_MSG *)msg);
+       sig_sem(SEMID_UART);
 }
 
 
+
 /** %jp{サンプルタスク} */
 void Sample_Task(VP_INT exinf)
 {
@@ -141,8 +96,8 @@ void Sample_Task(VP_INT exinf)
        for ( ; ; )
        {
                /* %jp{適当な時間考える} */
-               print_state(num, "thinking");
-               rand_wait();
+               Sample_PrintSatet(num, "thinking");
+               Sample_RandWait();
                
                /* %jp{左右のフォークを取るまでループ} */
                for ( ; ; )
@@ -156,9 +111,9 @@ void Sample_Task(VP_INT exinf)
                        sig_sem(LEFT(num));     /* %jp{取れなければ離す} */
                        
                        /* %jp{適当な時間待つ} */
-                       print_state(num, "hungry");
-                       rand_wait();
-
+                       Sample_PrintSatet(num, "hungry");
+                       Sample_RandWait();
+                       
                        /* %jp{右から順に取る} */
                        wai_sem(RIGHT(num));
                        if ( pol_sem(LEFT(num)) == E_OK )
@@ -166,15 +121,15 @@ void Sample_Task(VP_INT exinf)
                                break;  /* %jp{両方取れた} */
                        }
                        sig_sem(RIGHT(num));    /* %jp{取れなければ離す} */
-
+                       
                        /* %jp{適当な時間待つ} */
-                       print_state(num, "hungry");
-                       rand_wait();
+                       Sample_PrintSatet(num, "hungry");
+                       Sample_RandWait();
                }
                
                /* %jp{適当な時間、食べる} */
-               print_state(num, "eating");
-               rand_wait();
+               Sample_PrintSatet(num, "eating");
+               Sample_RandWait();
                
                /* %jp{フォークを置く} */
                sig_sem(LEFT(num));
@@ -183,19 +138,5 @@ void Sample_Task(VP_INT exinf)
 }
 
 
-/** %jp{表示タスク} */
-void Sample_Print(VP_INT exinf)
-{
-       T_PRINT_MSG *msg;
-       
-       for ( ; ; )
-       {
-               rcv_mbx(mbxid, (T_MSG **)&msg);
-               Uart_PutString(msg->text);
-               rel_mpf(mpfid, msg);
-       }
-}
-
-
 
 /* end of file */
index 55e88cc..f940be1 100755 (executable)
@@ -4,22 +4,22 @@
  * @file  system.cfg
  * @brief %jp{サンプルのコンフィギュレーション}
  *
- * Copyright (C) 1998-2006 by Project HOS
+ * Copyright (C) 1998-2009 by Project HOS
  * http://sourceforge.jp/projects/hos/
  */
 
 
-
 /* %jp{カーネル独自の設定}%en{kernel} */
-KERNEL_HEP_MEM(4096, NULL);
+KERNEL_HEP_MEM(512, NULL);
 KERNEL_SYS_STK(512, NULL);
 KERNEL_INT_STK(512, NULL);
 KERNEL_MAX_TSKID(5);
-KERNEL_MAX_SEMID(6);
-KERNEL_MAX_FLGID(2);
-KERNEL_MAX_MBXID(2);
-KERNEL_MAX_MPFID(2);
-KERNEL_MAX_ISRID(4);
+KERNEL_MAX_SEMID(7);
+KERNEL_MAX_FLGID(1);
+KERNEL_MAX_MBXID(1);
+KERNEL_MAX_MPFID(1);
+KERNEL_MAX_MTXID(1);
+KERNEL_MAX_ISRID(1);
 
 
 /* %jp{OSタイマの設定}%en{OS timer} */
@@ -29,7 +29,6 @@ ATT_INI({TA_HLNG, 0, OsTimer_Initialize});
 /* %jp{サンプル}%en{Sample program} */
 INCLUDE("\"sample.h\"");
 ATT_INI({TA_HLNG, 0, Sample_Initialize});
-CRE_TSK(TSKID_PRINT,   {TA_HLNG, 1, Sample_Print, 1, 512, NULL});
 CRE_TSK(TSKID_SAMPLE1, {TA_HLNG, 1, Sample_Task, 2, 512, NULL});
 CRE_TSK(TSKID_SAMPLE2, {TA_HLNG, 2, Sample_Task, 2, 512, NULL});
 CRE_TSK(TSKID_SAMPLE3, {TA_HLNG, 3, Sample_Task, 2, 512, NULL});
@@ -41,7 +40,7 @@ CRE_SEM(3, {TA_TFIFO, 1, 1});
 CRE_SEM(4, {TA_TFIFO, 1, 1});
 CRE_SEM(5, {TA_TFIFO, 1, 1});
 CRE_SEM(SEMID_RAND, {TA_TFIFO, 1, 1});
-
+CRE_SEM(SEMID_UART, {TA_TFIFO, 1, 1});
 
 
 /* end of file */