OSDN Git Service
(root)
/
hos
/
hos-v4a.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
modify Cortex-M0
[hos/hos-v4a.git]
/
cfgrtr
/
source
/
cretsk.cpp
diff --git
a/cfgrtr/source/cretsk.cpp
b/cfgrtr/source/cretsk.cpp
index
f1e8a7e
..
a0cc18d
100755
(executable)
--- a/
cfgrtr/source/cretsk.cpp
+++ b/
cfgrtr/source/cretsk.cpp
@@
-1,20
+1,19
@@
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
-// Hyper Operating System V4 Advance Configulator
-// CRE_TSK API
-//
-// Copyright (C) 1998-2006 by Project HOS
-// http://sourceforge.jp/projects/hos/
+// Hyper Operating System V4 Advance Configulator
+// CRE_TSK API
+//
+// Copyright (C) 1998-2006 by Project HOS
+// http://sourceforge.jp/projects/hos/
// ---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// ---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include "readcfg.h"
#include "defercd.h"
#include "cretsk.h"
#include "analyze.h"
#include "defercd.h"
#include "cretsk.h"
#include "analyze.h"
-
+#include "readcfg.h"
// parameter
#define CRETSK_TSKID 0
// parameter
#define CRETSK_TSKID 0
@@
-30,6
+29,9
@@
// %jp{コンストラクタ}%en{constructor}
CApiCreTsk::CApiCreTsk()
{
// %jp{コンストラクタ}%en{constructor}
CApiCreTsk::CApiCreTsk()
{
+ // %jp{デフォルトの最大ID設定}
+ m_iDefaultMaxId = _KERNEL_DEF_TMAX_TSKID;
+
// %jp{パラメーター構文設定}
m_iParamSyntax[0] = 0; // %jp{単独パラメーター}
m_iParamSyntax[1] = 6; // %jp{6パラメーターのブロック}
// %jp{パラメーター構文設定}
m_iParamSyntax[0] = 0; // %jp{単独パラメーター}
m_iParamSyntax[1] = 6; // %jp{6パラメーターのブロック}
@@
-52,44
+54,59
@@
int CApiCreTsk::AnalyzeApi(const char* pszApiName, const char* pszParams)
}
else if ( strcmp(pszApiName, "KERNEL_MAX_TSKID") == 0 )
{
}
else if ( strcmp(pszApiName, "KERNEL_MAX_TSKID") == 0 )
{
- if ( m_iMaxId > 0 )
+ int iId;
+
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_MULTIDEF;
}
{
return CFG_ERR_MULTIDEF;
}
-
- int iId;
- if ( (iId = atoi(pszParams)) <= 0 )
+
+ if ( m_iResObj >= 0 )
+ {
+ return CFG_ERR_DEF_CONFLICT;
+ }
+
+ if ( (iId = atoi(pszParams)) < 0 )
{
return CFG_ERR_PARAM;
}
{
return CFG_ERR_PARAM;
}
-
+
m_iMaxId = iId;
m_iMaxId = iId;
-
+
return CFG_ERR_OK;
}
return CFG_ERR_OK;
}
-
- return CFG_ERR_NOPROC;
-}
+ else if ( strcmp(pszApiName, "KERNEL_RSV_TSKID") == 0 )
+ {
+ int iId;
+ if ( m_iMaxId >= 0 )
+ {
+ return CFG_ERR_DEF_CONFLICT;
+ }
-// 自動ID番号割り当て
-int CApiCreTsk::AutoId(void)
-{
- if ( m_iMaxId == 0 )
- {
- m_iMaxId = _KERNEL_TMAX_TSKID;
+ if ( (iId = atoi(pszParams)) < 0 )
+ {
+ return CFG_ERR_PARAM;
+ }
+
+ if ( m_iResObj < 0 )
+ {
+ m_iResObj = 0;
+ }
+ m_iResObj += iId;
+
+ return CFG_ERR_OK;
}
}
- return C
ApiDef::AutoId()
;
+ return C
FG_ERR_NOPROC
;
}
}
-
// %jp{ID 定義ファイル書き出し}
void CApiCreTsk::WriteId(FILE* fp)
{
int i;
// %jp{ID 定義ファイル書き出し}
void CApiCreTsk::WriteId(FILE* fp)
{
int i;
-
+
// %jp{コメントを出力}
fputs("\n\n/* Task object ID definetion */\n\n", fp);
// %jp{コメントを出力}
fputs("\n\n/* Task object ID definetion */\n\n", fp);
@@
-105,7
+122,7
@@
void CApiCreTsk::WriteId(FILE* fp)
m_iId[i]);
}
}
m_iId[i]);
}
}
-
+
// %jp{ID最大値定義を出力}
fprintf( fp,
"\n"
// %jp{ID最大値定義を出力}
fprintf( fp,
"\n"
@@
-123,7
+140,7
@@
void CApiCreTsk::WriteCfgDef(FILE* fp)
{
const char* pszParam;
int i;
{
const char* pszParam;
int i;
-
+
// %jp{コメント出力}
fputs(
"\n\n\n"
// %jp{コメント出力}
fputs(
"\n\n\n"
@@
-131,8
+148,8
@@
void CApiCreTsk::WriteCfgDef(FILE* fp)
"/* create task objects */\n"
"/* ------------------------------------------ */\n\n"
, fp);
"/* create task objects */\n"
"/* ------------------------------------------ */\n\n"
, fp);
-
-
+
+
// %jp{スタック領域出力}
for ( i = 0; i < m_iObjs; i++ )
{
// %jp{スタック領域出力}
for ( i = 0; i < m_iObjs; i++ )
{
@@
-146,7
+163,7
@@
void CApiCreTsk::WriteCfgDef(FILE* fp)
m_pParamPacks[i]->GetParam(CRETSK_STKSZ));
}
}
m_pParamPacks[i]->GetParam(CRETSK_STKSZ));
}
}
-
+
#if _KERNEL_TCB_ALGORITHM == _KERNEL_TCB_ALG_BLKARRAY
#if _KERNEL_TCB_SPLIT_RO
#if _KERNEL_TCB_ALGORITHM == _KERNEL_TCB_ALG_BLKARRAY
#if _KERNEL_TCB_SPLIT_RO
@@
-243,7
+260,7
@@
void CApiCreTsk::WriteCfgDef(FILE* fp)
fprintf(fp, "\t\tNULL,\n");
}
}
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#else
// ポインタ配列&統合TCB
}
#else
// ポインタ配列&統合TCB
@@
-270,11
+287,11
@@
void CApiCreTsk::WriteCfgDef(FILE* fp)
fprintf(fp, "\t\tNULL,\n");
}
}
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#endif
#endif
}
#endif
#endif
-
+
// %jp{タスク情報出力}
fprintf(
fp,
// %jp{タスク情報出力}
fprintf(
fp,
@@
-301,7
+318,7
@@
void CApiCreTsk::WriteTcbRam(FILE *fp, int iObj)
fprintf(fp, "0, 0, "); /* %jp{キューに接続する為のオブジェクト} */
#endif
#endif
fprintf(fp, "0, 0, "); /* %jp{キューに接続する為のオブジェクト} */
#endif
#endif
-
+
#if _KERNEL_TCB_TOQOBJ
fprintf(fp, "0, 0, 0, "); /* %jp{タイムアウトキュー} */
#endif
#if _KERNEL_TCB_TOQOBJ
fprintf(fp, "0, 0, 0, "); /* %jp{タイムアウトキュー} */
#endif
@@
-338,6
+355,10
@@
void CApiCreTsk::WriteTcbRam(FILE *fp, int iObj)
fprintf(fp, "0, "); /* %jp{強制待ち要求ネスト回数} */
#endif
fprintf(fp, "0, "); /* %jp{強制待ち要求ネスト回数} */
#endif
+#if _KERNEL_TCB_MTXHDL
+ fprintf(fp, "0, "); /* %jp{所有するミューテックスのリスト} */
+#endif
+
#if _KERNEL_TCB_ERCD
fprintf(fp, "0, "); /* ercd */
#endif
#if _KERNEL_TCB_ERCD
fprintf(fp, "0, "); /* ercd */
#endif
@@
-349,6
+370,14
@@
void CApiCreTsk::WriteTcbRam(FILE *fp, int iObj)
#if _KERNEL_TCB_TSKID
fprintf(fp, "0, "); /* tskid */
#endif
#if _KERNEL_TCB_TSKID
fprintf(fp, "0, "); /* tskid */
#endif
+
+#if _KERNEL_TCB_TEXSTAT
+ fprintf(fp, "0, "); /* texstat %jp{タスク例外処理状態} */
+#endif
+
+#if _KERNEL_TCB_RASPTN
+ fprintf(fp, "0, "); /**< rasptn %jp{タスク例外処理要因} */
+#endif
}
}
@@
-395,6
+424,14
@@
void CApiCreTsk::WriteTcbRom(FILE *fp, int iObj)
fprintf(fp, "(VP)((VB *)(%s) + (SIZE)(%s)), ", m_pParamPacks[iObj]->GetParam(CRETSK_STK), m_pParamPacks[iObj]->GetParam(CRETSK_STKSZ));
}
#endif
fprintf(fp, "(VP)((VB *)(%s) + (SIZE)(%s)), ", m_pParamPacks[iObj]->GetParam(CRETSK_STK), m_pParamPacks[iObj]->GetParam(CRETSK_STKSZ));
}
#endif
+
+#if _KERNEL_TCB_TEXATR
+ fprintf(fp, "0, "); /**< texatr %jp{タスク例外処理ルーチン属性} */
+#endif
+
+#if _KERNEL_TCB_TEXRTN
+ fprintf(fp, "0, "); /**< texrtn %jp{タスク例外処理ルーチンの起動番地} */
+#endif
}
}
@@
-412,7
+449,7
@@
void CApiCreTsk::WriteCfgIni(FILE* fp)
for ( int i = 0; i < m_iObjs; i++ )
{
fprintf(fp, "\t_kernel_tcb_blk_%d.tcb_ro = &_kernel_tcb_ro_blk_%d;\n", m_iId[i], m_iId[i]);
for ( int i = 0; i < m_iObjs; i++ )
{
fprintf(fp, "\t_kernel_tcb_blk_%d.tcb_ro = &_kernel_tcb_ro_blk_%d;\n", m_iId[i], m_iId[i]);
- }
+ }
#endif
}
#endif
}
@@
-436,5
+473,5
@@
void CApiCreTsk::WriteCfgStart(FILE* fp)
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
-// Copyright (C) 1998-2006 by Project HOS
+// Copyright (C) 1998-2006 by Project HOS
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------