⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsp_check.cpp

📁 嵌入式系统开发 TOPPERS and JSP Kernel Release 1.3 TOPPERS = Toyohashi Open Platform for Embedded Real-Tim
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	return old_error_count == error_count;}bool ConfigurationChecker::check_mailboxblock(Directory & parameter, filecontainer * container){	unsigned int id;	unsigned int num;	unsigned int work;	unsigned int old_error_count = error_count;	struct variable_information inib;	Message object("Mailbox","メ〖ルボックス");	Load(num, "_kernel_tmax_mbxid");	if(num <= 1)		return true;		inib = container->get_variable_information("_kernel_mbxinib_table");	VerboseMessage("%s object : %d items\n","%sオブジェクト : %d 改\n").format((const char *)object, num);	for(id = 1; id <= num; id++)	{		set_banner(parameter, object, MAILBOX, id);			//attribute validation check		LoadVal(work, inib.address, "mailbox_initialization_block::mbxatr");		if((work & ~0x3) != 0)			notify(Message("Illegal attribute value [0x%x]","おかしな掳拉猛 [0x%x]").format(work & ~0x3));				//mailbox message priority check		LoadVal(work, inib.address, "mailbox_initialization_block::maxmpri");		if( container->get_variable_information("mailbox_initialization_block::maxmpri").size == 2)			work <<= 16;		if((signed)work < 0)			notify(Message("Priority must not be a negative number.","庭黎刨が砷猛").format(work & ~0x1));		inib.address += inib.size;	}	return old_error_count == error_count;}bool ConfigurationChecker::check_fixed_memorypoolblock(Directory & parameter, filecontainer * container){	unsigned int id;	unsigned int num;	unsigned int work;	unsigned int old_error_count = error_count;	struct variable_information inib;	Message object("Fixed size memory pool","盖年墓メモリプ〖ル");	Load(num, "_kernel_tmax_mpfid");	if(num <= 1)		return true;	inib = container->get_variable_information("_kernel_mpfinib_table");	VerboseMessage("%s object : %d items","%sオブジェクト : %d 改").format((const char *)object, num);	for(id = 1; id <= num; id++)	{		set_banner(parameter, object, FIXEDSIZEMEMORYPOOL, id);			//attribute validation check		LoadVal(work, inib.address, "fixed_memorypool_initialization_block::mpfatr");		if((work & ~0x1) != 0)			notify(Message("Illegal attribute value [0x%x]","おかしな掳拉猛 [0x%x]").format(work & ~0x1));		inib.address += inib.size;	}	return old_error_count == error_count;}bool ConfigurationChecker::check_cyclic_handlerblock(Directory & parameter, filecontainer * container){	unsigned int id;	unsigned int num;	unsigned int work;	unsigned int old_error_count = error_count;	struct variable_information inib;	Message object("Cyclic handler","件袋ハンドラ");	Load(num, "_kernel_tmax_cycid");	if(num <= 1)		return true;	inib = container->get_variable_information("_kernel_cycinib_table");	VerboseMessage("%s object : %d items","%sオブジェクト : %d 改").format((const char *)object, num);	for(id = 1; id <= num; id++)	{		set_banner(parameter, object, CYCLICHANDLER, id);			//attribute validation check		LoadVal(work, inib.address, "cyclic_handler_initialization_block::cycatr");		if((work & ~0x7) != 0)			notify(Message("Illegal attribute value [0x%x]","おかしな掳拉猛 [0x%x]").format(work & ~0x1));		if( (work & 0x1) != 0 || (work & 0x4) != 0)			notify(Message("TA_ASM and TA_PHS are not supported in this kernel.","TA_ASMとTA_PHSはサポ〖ト嘲"));		inib.address += inib.size;	}	return old_error_count == error_count;}bool ConfigurationChecker::check_interrupt_handlerblock(Directory & parameter, filecontainer * container){	unsigned int id;	unsigned int num;	unsigned int work;	unsigned int old_error_count = error_count;	struct variable_information inib;	Message object("Interrupt handler","充哈みハンドラ");	Load(num, "_kernel_tnum_inhno");	if(num == 0)		return true;	inib = container->get_variable_information("_kernel_inhinib_table");	VerboseMessage("%s object : %d items\n","%sオブジェクト : %d 改\n").format((const char *)object, num);	for(id = 0; id < num; id++)	{		set_banner(parameter, object, INTERRUPTHANDLER, id);			//attribute validation check		LoadVal(work, inib.address, "interrupt_handler_initialization_block::inhatr");		if(work != 0)			notify(Message("The attribute can take only TA_HLNG","TA_HNLG笆嘲の掳拉は肋年できません"));		inib.address += inib.size;	}	return old_error_count == error_count;}bool ConfigurationChecker::check_exception_handlerblock(Directory & parameter, filecontainer * container){	unsigned int id;	unsigned int num;	unsigned int work;	unsigned int old_error_count = error_count;	struct variable_information inib;	Message object("Exception handler","毋嘲ハンドラ");	Load(num, "_kernel_tnum_excno");	if(num == 0)		return true;	inib = container->get_variable_information("_kernel_excinib_table");	VerboseMessage("%s object : %d items\n","%sオブジェクト : %d 改\n").format((const char *)object, num);	for(id = 0; id < num; id++)	{		set_banner(parameter, object, EXCEPTIONHANDLER, id);			//attribute validation check		LoadVal(work, inib.address, "exception_handler_initialization_block::excatr");		if(work != 0)			notify(Message("The attribute can take only TA_HLNG","TA_HNLG笆嘲の掳拉は肋年できません"));		inib.address += inib.size;	}	return old_error_count == error_count;}//------------------------------------------------------#undef LoadVal#undef Loadvoid ConfigurationChecker::parseOption(Directory & parameter){	string loadmodule;	string work;	if(findOption(parameter,"h","help"))	{		cout << endl << Message(			"Configuration checker - option\n"			"  -m, --module=filename : Specify the load module (essential option)\n"			"  -cs, --script=filename  : Specify the checker script file\n",			"コンフィギュレ〖ションチェッカ - オプション\n"			"  -m, --module=ファイル叹 : ロ〖ドモジュ〖ル叹を回年します (涩寇灌誊)\n"			"  -cs, --script=ファイル叹  : チェッカスクリプトを回年します\n");		return;	}	if(findOption(parameter,"m","module",&loadmodule) || findOption(parameter,DEFAULT_PARAMETER,NULL,&loadmodule))	{		if(findOption(parameter,"s","source"))			Exception("Configuration checker can not execute while Configurator executes","コンフィギュレ〖タとチェッカは票箕に弹瓢できません");		parameter["/file/loadmodule"] = loadmodule;		activateComponent(false);	}	if(!findOption(parameter,"cs","script",&work))		work = loadmodule.substr(0,loadmodule.find_last_of('.')) + ".chk";	parameter["/file/checkerscript"] = work;	if(findOption(parameter,"obj","load-object",&work))	{		if(work.empty())			work.assign("kernel_obj.dat");		fstream f(work.c_str(), ios::in|ios::binary);		if(f.is_open())		{			parameter["/object"].Load(&f);			f.close();		}else			Exception(" Failed to open the file %s for storing object definitions"," オブジェクト攫鼠を呈羌するためのファイル(%s)が倡けません").format(work.c_str());	}}void ConfigurationChecker::body(Directory & parameter){	filecontainer * container;	bool result = true;	container = filecontainer::get_instance();	container->attach_module(parameter["/file/loadmodule"].toString().c_str());	container->attach_infofile(parameter["/file/checkerscript"].toString().c_str());	cout << Message("  Target architecture : ","  タ〖ゲットア〖キテクチャ : ") << container->get_architecture() << endl;	error_count = 0;	result &= check_taskblock(parameter,container);	result &= check_semaphoreblock(parameter,container);	result &= check_eventflagblock(parameter,container);	result &= check_dataqueueblock(parameter,container);	result &= check_mailboxblock(parameter,container);	result &= check_fixed_memorypoolblock(parameter,container);	result &= check_cyclic_handlerblock(parameter,container);	result &= check_interrupt_handlerblock(parameter,container);	result &= check_exception_handlerblock(parameter,container);	if(!result)		Exception("Total %d errors found in current configuration.\n","链婶で%d改のエラ〖が浮叫されました\n").format(error_count);	cout << Message("No error found in current configuration\n","菇喇に佰撅はありませんでした\n");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -