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

📄 jwl-gtf_mbox.c

📁 基于arm核的RTOS
💻 C
字号:
/********************************************************************************************************
*                                                JWL-GTF						*
*                                           实时多任务操作系统						*
*					     								*
*      				              作者:JWL-GTF			                        *
*  					     日期:2004/04/12                                            *
*					 修改日期:2004/04/12						*
*                                       								*
*                                       功能说明:消息邮箱详细功能					*
*********************************************************************************************************/

/********************************************************************************************************
*                                        jwl_gtf_MBoxCtrlInit						*
* 描述:系统初始化消息邮箱控制结构									*
* 参数: 无												*
* 返回: jwl_gtf_void											*
*********************************************************************************************************/
jwl_gtf_void jwl_gtf_MBoxCtrlInit()
{
	jwl_gtf_MBContrl.jwl_gtf_Rev=jwl_gtf_NULL;
	jwl_gtf_MBContrl.jwl_gtf_SndDate=jwl_gtf_NULL;
	jwl_gtf_MBContrl.jwl_gtf_PublicInfo=jwl_gtf_NULL;
	jwl_gtf_MBWait=jwl_gtf_NULL;
	jwl_gtf_MBDataWait=jwl_gtf_NULL;
	return;
}

/********************************************************************************************************
*                                        jwl_gtf_MBoxFreeInit()						*
* 描述:消息邮箱空链表连接										*
* 参数: 无												*
* 返回: jwl_gtf_void											*
*********************************************************************************************************/
#define _jwl_gtf_BuildFreeLinkInit(MBox,jwl_gtf_MaxMBData)

/********************************************************************************************************
*                                        jwl_gtf_AppMBox()						*
* 描述:消息邮箱空间申请											*
* 参数: 无												*
* 返回: jwl_gtf_MBData											*
*********************************************************************************************************/
jwl_gtf_MBData *jwl_gtf_AppMBox()
{
	jwl_gtf_MBData *tmpMBox;
	if(jwl_gtf_MBoxFree==jwl_gtf_NULL)
		return jwl_gtf_NULL;
	tmpMBox=jwl_gtf_MBoxFree;
	if(jwl_gtf_MBoxFree=jwl_gtf_MBox->jwl_gtf_Link->Next!=jwl_gtf_NULL)
		jwl_gtf_MBoxFree->jwl_gtf_Link->Pre=jwl_gtf_MBoxFree;
	return tmpMBox;
}

/********************************************************************************************************
*                                        jwl_gtf_DestryMBox()						*
* 描述:消息邮箱空间释放											*
* 参数: 无												*
* 返回: 参看JWL-GTF.h											*
*********************************************************************************************************/
jwl_gtf_s8 jwl_gtf_DestryMBox()
{
	jwl_gtf_MBData *tmpMBData;
	if(tmpMBData=jwl_gtf_TaskRun->jwl_gtf_MBData==jwl_gtf_NULL)
		return jwl_gtf_TaskNoMBox;
	if(tmpMBData->jwl_gtf_Link->Pre==tmpMBData)						/*是否在头*/
	{
		if(tmpMBData->jwl_gtf_Link->Pre=tmpMBData->jwl_gtf_Link->Nenxt!=jwl_gtf_NULL)	/*不是在尾*/
			tmpMBData->jwl_gtf_Link->Pre->jwl_gtf_Link->Pre=tmpMBData->jwl_gtf_Link->Pre;
	}
	else if(tmpMBData->jwl_gtf_Link->Next=jwl_gtf_NULL)					/*尾*/
		tmpMBData->jwl_gtf_Link->Pre->jwl_gtf_Link->Next=jwl_gtf_NULL
	else											/*中间*/
	{
		tmpMBData->jwl_gtf_Link->Pre->jwl_gtf_Link->Next=tmpMBData->\
			jwl_gtf_Link->jwl_gtf_Link->Next;
		tmpMBData->jwl_gtf_Link->Next->jwl_gtf_Link->Pre=tmpMBData->\
			jwl_gtf_Link->jwl_gtf_Link->Pre;
	}
	if(jwl_gtf_MBoxFree==jwl_gtf_NULL)
	{
		jwl_gtf_MBoxFree=tmpMBData;
		jwl_gtf_MBoxFree->jwl_gtf_Link->Pre=jwl_gtf_MBoxFree;
		tmpMBData->jwl_gtf_Link->Next=jwl_gtf_NULL;
	}
	else
	{
		jwl_gtf_MBoxFree->jwl_gtf_Link->Pre=tmpMBData;
		tmpMBData->jwl_gtf_Link->Next=jwl_gtf_MBoxFree;
		jwl_gtf_MBoxFree=tmpMBData;
		tmpMBData->jwl_gtf_Link->Pre=jwl_gtf_MBoxFree;
	}
	jwl_gtf_TaskRun->jwl_gtf_TaskStatus=jwl_gtf_TaskRun->jwl_gtf_TaskStatus&(!jwl_gtf_MBox);
	return jwl_gtf_Noerror;	
}

⌨️ 快捷键说明

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