www.pudn.com > hos-v4_os.rar > knlheap.cpp


// --------------------------------------------------------------------------- 
//  Hyper Operating System V4  コンフィギュレーター                            
//    HOS_KERNEL_HEAP API の処理                                               
//                                                                             
//                                    Copyright (C) 1998-2002 by Project HOS   
//                                    http://sourceforge.jp/projects/hos/      
// --------------------------------------------------------------------------- 
 
 
#include  
#include  
#include  
#include "defercd.h" 
#include "knlheap.h" 
#include "analyze.h" 
 
 
 
// コンストラクタ 
CApiKernelHeap::CApiKernelHeap() 
{ 
	// パラメーター構文設定 
	m_iParamSyntax[0] = 0;		// 単独パラメーター 
	m_iParams = 1; 
} 
 
 
// デストラクタ 
CApiKernelHeap::~CApiKernelHeap() 
{ 
} 
 
 
// 自動ID番号割り当て 
int CApiKernelHeap::AutoId(void) 
{ 
	return CFG_ERR_OK; 
} 
 
 
// APIの解析 
int CApiKernelHeap::AnalyzeApi(const char* pszApiName, const char* pszParams) 
{ 
	static bool blEx = false; 
  
	if ( strcmp(pszApiName, "HOS_KERNEL_HEAP") == 0 ) 
	{ 
		if ( blEx == true ) 
	  	{ 
			return CFG_ERR_MULTIDEF; 
	  	} 
 
		blEx = true; 
 
		return AddParams(pszParams); 
	} 
 
	return CFG_ERR_NOPROC; 
} 
 
 
// cfgファイル定義部書き出し 
void  CApiKernelHeap::WriteCfgDef(FILE* fp) 
{ 
	if ( m_iObjs <= 0 ) 
	{ 
		return; 
	} 
 
	if ( strcmp(m_pParamPacks[0]->GetParam(0), "0") == 0 ) 
	{ 
		return; 
	} 
 
	// コメント出力 
	fputs( 
		"\n\n\n" 
		"/* ------------------------------------------ */\n" 
		"/*                kernel heap                 */\n" 
		"/* ------------------------------------------ */\n" 
		, fp); 
 
	// ヒープ領域生成 
	fprintf( 
		fp, 
		"\n" 
		"VP kernel_heap_mem[((%s) + sizeof(VP) - 1) / sizeof(VP)];\t/* kernel heap */\n", 
		m_pParamPacks[0]->GetParam(0)); 
} 
 
 
// cfgファイル起動部書き出し 
void  CApiKernelHeap::WriteCfgStart(FILE* fp) 
{ 
	if ( m_iObjs <= 0 ) 
	{ 
		return; 
	} 
	 
	if ( strcmp(m_pParamPacks[0]->GetParam(0), "0") == 0 ) 
	{ 
		return; 
	} 
	 
	fputs("\tkernel_ini_mem(kernel_heap_mem, sizeof(kernel_heap_mem));\t\t/* initialize kernel heap */\n\n", fp); 
} 
 
 
 
// --------------------------------------------------------------------------- 
//  Copyright (C) 1998-2002 by Project HOS                                     
// ---------------------------------------------------------------------------