亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jwl-gtf_core.c

?? 基于arm核的RTOS
?? C
?? 第 1 頁 / 共 3 頁
字號:
	if(strlen(TaskName)>jwl_gtf_NameMaxLen)					/*判斷文件名是否過長*/
		return jwl_gtf_NameLen;
	if(*TaskPro==jwl_gtf_MaxTask)						/*判斷線程是否為Idle線程*/
	{
		if(jwl_gtf_TaskRDFirst!=jwl_gtf_NULL)
			return jwl_gtf_Idelexist;	
	}
	if(jwl_gtf_FindProi(TaskPro,tmpTaskCB)==jwl_gtf_Noerror)		/*判斷此優先級是否存在*/
	{
#if    jwl_gtf_SchPolicy==jwl_gtf_MulSchEnable
		jwl_gtf_ProStatus=jwl_gtf_True;
		tmpTaskCB->jwl_gtf_MulTaskC=jwl_gtf_TaskTiks;
		iRet=jwl_gtf_True;
#else
		return jwl_gtf_NoSamePro;					/*不允許有多個相同優先級的進程存在*/
#endif		
	}
	if(jwl_gtf_Taskfree==jwl_gtf_NULL)					/*是否還有空的任務塊*/
		return jwl_gtf_NoFreeOCB;
	tmpTaskCB=jwl_gtf_Taskfree;						/*獲得線程控制塊*/
	jwl_gtf_Taskfree=tmpTaskCB->jwl_gtf_Link->Next;				/*把所得控制塊從jwl_gtf_Taskfree塊中斷開*/
	tmpTaskCB->jwl_gtf_Link->Next->jwl_gtf_Link->pre=jwl_gtf_Taskfree;
	tmpTaskCB->jwl_gtf_Link->Next=tmpTaskCB->jwl_gtf_Link->Pre=jwl_gtf_NULL;
	tmpTaskCB->jwl_gtf_TaskPro=TaskPr;					/*任務控制塊優先級設置*/
	jwl_gtf_InsertReadyTask(tmpTaskCB);					/*把任務插入到就緒態鏈表中*/
	strcpy(tmpTaskCB->jwl_gtf_TaskName,TaskName,strlen(TaskName));
	tmpTaskCB->jwl_gtf_TaskID=jwl_gtf_IDNext++;
	*TaskID=tmpTaskCB->jwl_gtf_TaskID;
	tmpTaskCB->jwl_gtf_TaskPro=TaskPro;
	tmpTaskCB->jwl_gtf_RetCode=jwl_gtf_NOerror;
	tmpTaskCB->jwl_gtf_TaskStatus=jwl_gtf_Creat;
	tmpTaskCB->jwl_gtf_TimeOut=0;
	jwl_gtf_WaitTLink=jwl_gtf_NULL;
	
#if jwl_gtf_ResumeAllTask==jwl_gtf_True	
	tmpTaskCB->jwl_gtf_HupUpLink={jwl_gtf_NULL,jwl_gtf_NULL};
#endif	
	
#if jwl_gtf_SchPolicy==jwl_gtf_MulSchEnable
	if(iRet==jwl_gtf_True)
		tmpTaskCB->jwl_gtf_MulTaskC=jwl_gtf_TaskTiks;
	else
		tmpTaskCB->jwl_gtf_MulTaskC=0;
	tmpTaskCB->jwl_gtf_SameProiLink={jwl_gtf_NULL,jwl_gtf_NULL};
#endif
	
#if Mutex||ConVar
	jwl_gtf_EvenLink=jwl_gtf_NULL;
#endif

#if Mutex
	jwl_gtf_Mutex=jwl_gtf_NULL;
#endif

#if	ConVar
	jwl_gtf_ConVar=jwl_gtf_NULL;
#endif

	tmpTaskCB->jwl_gtf_task=jwl_gtf_void (*task)(jwl_gtf_void *);
	tmpTaskCB->jwl_gtf_param=param;	
	jwl_gtf_InitStack							/*堆棧指針初始化*/
	tmpTaskCB->jwl_gtf_PrivateDate=jwl_gtf_NULL;
	TaskCB=tmpTaskCB;
	jwl_gtf_EnInrupt							/*開中斷*/
	return jwl_gtf_Noerror;							/*成功返回*/
}

/********************************************************************************************************
*                                        jwl_gtf_get_curr						*
* 描述:該線程返回當前線程的線程控制塊指針								*
* 參數: TaskCB			:線程控制塊指針							*
	TaskID			:線程ID								*
	TaskProi		: 任務優先級								*
	*返回: 		:參看JWL-GTF_error.h								*
*********************************************************************************************************/
jwl_gtf_TaskCB *jwl_gtf_gtf_Curr(jwl_gtf_void)
{
	return jwl_gtf_TaskRun;
}

/********************************************************************************************************
*                                        jwl_gtf_get_idle						*
* 描述:該線程返回當前線程的線程控制塊指針								*
* 參數: TaskCB			:線程控制塊指針							*
	TaskID			:線程ID								*
	*返回: 		:參看JWL-GTF_error.h								*
*********************************************************************************************************/
jwl_gtf_TaskCB *jwl_gtf_get_idle(jwl_gtf_void)
{
	if(jwl_gtf_TaskRDFirst==jwl_gtf_NULL)					/*Idle進程是否存在*/
		return	jwl_gtf_TaskRDFirst;
	else
	{
		if(jwl_gtf_TaskRDLast!=jwl_gtf_NULL)
			return jwl_gtf_TaskRDLast;
		else if(jwl_gtf_TaskRDMiddle!=jwl_gtf_NULL)
			return jwl_gtf_TaskMiddle;
		else
			return jwl_gtf_RDLast;					/*獲得線程指針*/
	}
}

/********************************************************************************************************
*                                        jwl_gtf_FindByID						*
* 描述:用TaskID查找任務控制塊										*
* 參數: TaskID			:線程任務 ID								*
*	TaskCB			: 線程控制塊指針							*
*	*返回: 		:參看JWL-GTF_error.h								*
*********************************************************************************************************/
jwl_gtf_TaskCB *jwl_gtf_FundByID(jwl_gtf_u8 TaskID)
{
	jwl_gtf_TaskCB *tmpOCB;
	tmpOCB=jwl_gtf_RDFirst;
	for(;tmpOCB->jwl_gtf_TaskID!=TaskID&&tmpOCB!=jwl_gtf_NULL;tmpOCB=tmpOCB->jwl_gtf_Link->Next)
	return tmpOCB;
}

/********************************************************************************************************
*                                        jwl_gtf_StartRun						*
* 描述:是創建態任務進入就緒態										*
* 參數: TaskCB			:線程控制塊指針							*
	TaskID			:線程ID								*
	*返回: 		:參看JWL-GTF_error.h								*
*********************************************************************************************************/
jwl_gtf_s8 jwl_gtf_startrun(jwl_gtf_TaskCB *TaskCB,jwl_gtf_u8 TaskID)
{
	if(TaskCB==jwl_gtf_NULL)						/*所給的任務控制塊是否為NULL*/
	{
		if(TaskID>jwl_gtf_IDNext)					/*ID號是否為合法*/
			return jwl_gtf_NoTaskID;				/*任務ID號非法*/
		else
		{
			if(TaskCB=jwl_gtf_FundByID(TaskID)!=jwl_gtf_NULL)
				return jwl_gtf_NoRunCB;
		}
	}
	if(TaskCB->jwl_gtf_TaskStatus!=jwl_gtf_Creat)				/*任務是否在創建態*/
		return jwl_gtf_TaskNotCreat;					/*任務已經運行了*/
	TaskCB->jwl_gtf_TaskStatus=jwl_gtf_Ready;
	if(jwl_gtf_TaskRun==jwl_gtf_NULL||TaskCB->jwl_gtf_TaskPro<\		/*當前進程是否為NULL或優先級比運行進程高*/
	     jwl_gtf_TaskRun->jwl_gtf_TaskPro)
	{
		tmpExchOCB=TaskCB;
		jwl_gtf_Switch
	}
	return jwl_gtf_Noerror;
}

#if jwl_gtf_SchPolicy==jwl_gtf_MulSchEnable
/********************************************************************************************************
*                                        jwl_gtf_threadyied()						*
* 描述:使當前進程放棄對MCU的控制,讓位于相同等級的優先級進程,否則此處理無效				*
* 參數: 												*
	*返回: 		:參看JWL-GTF_error.h								*
*********************************************************************************************************/
jwl_gtf_void jwl_gtf_threadyied()
{
	if(jwl_gtf_TaskRun->jwl_gtf_SameProiLink->Next==jwl_gtf_NULL)
		return jwl_gtf_NoSameProi;					/*運行中的進程沒有相同優先級存在*/
	tmpExchOCB=jwl_gtf_TaskRun->jwl_gtf_SameProiLink->Next;
	jwl_gtf_Switch
	return ;
}
#endif

/********************************************************************************************************
*                                        jwl_gtf_void jwl_gtf_InsertWaitTLinkHead			*						*
* 描述:插入超時鏈表頭											*
* 參數:  a	:表頭											*
*        b	:要插入的指針										*
*	*返回: 		:無										*
*********************************************************************************************************/
_jwl_gtf_BuildInsertLinkHead(WaitTLink,jwl_gtf_TaskCB)

/********************************************************************************************************
*                                        jwl_gtf_void jwl_gtf_InsertWaitTLinkTaskTail			*
* 描述:插入超時鏈表頭尾											*
* 參數:a			:任務指針指針								*
*      b  			:b插入到a后面								*
* 返回: 			:jwl_gtf_void								*
*********************************************************************************************************/
_jwl_gtf_BuildInsertTail(WaitTLink,jwl_gtf_TaskCB)

/********************************************************************************************************
*                                        jwl_gtf_void jwl_gtf_FindNextReady				*
* 描述:確定下一個運行任務指針											*
* 返回: 			:jwl_gtf_void								*
*********************************************************************************************************/
wl_gtf_void jwl_gtf_FindNextRun()
{
	jwl_gtf_TaskCB	*tmpTaskCB;
	tmpTaskCB=jwl_gtf_TaskRun->jwl_gtf_Link->Next;
	for(;tmpTaskCB->jwl_gtf_TaskStatus&jwl_gtf_Ready!=0&&tmpTaskCB->jwl_gtf_TaskProi==\
		jwl_gtf_MaxTask;tmpTaskCB=tmpTaskCB->jwl_gtf_Link->Next)
	tmpExchOCB=tmpTaskCB;
	return;
}

/********************************************************************************************************
*                                        jwl_gtf_delayTime()						*
* 描述:使線程超時處理											*
* 參數:  Timeout	:超時間										*
*	*返回: 		:無										*
*********************************************************************************************************/
jwl_gtf_void jwl_gtf_delayTime(jwl_gtf_u16 TimeOut)
{
	jwl_gtf_TaskCB *tmpTaskCB;
	jwl_gtf_TaskRun->jwl_gtf_TaskStatus=jwl_gtf_Dormant;
	jwl_gtf_TaskRun->jwl_gtf_TimeOut=TimeOut;
	if(jwl_gtf_TOutLink==jwl_gtf_NULL)					/*冥睡指針是否NULL*/
	{
		jwl_gtf_TOutLink=jwl_gtf_TaskRun;
		jwl_gtf_TaskRun->jwl_gtf_WaitTLink->Next=jwl_gtf_NULL;
		jwl_gtf_TaskRun->jwl_gtf_WaitTLink->pre=jwl_gtf_TOutLink;
	}
	else									/*冥睡指針不是NULL*/
	{
		tmpTaskCB=jwl_gtf_WaitTLink;
		if(jwl_gtf_TaskWaitMethod==jwl_gtf_TaskWaitFIFO)		/*先進先出*/
		{
			for(;tmpTaskCB->jwl_gtf_TimeOut<TimeOut&&tmpTaskCB!=jwl_gtf_NULL;\
				tmpTaskCB=tmpTaskCB->jwl_gtf_WaitTLink->Next)
		}
		else								/*后進先出*/
		{
			for(;tmpTaskCB->jwl_gtf_TimeOut<=TimeOut&&tmpTaskCB!=jwl_gtf_NULL;\
				tmpTaskCB=tmpTaskCB->jwl_gtf_WaitTLink->Next)
		}
		if(tmpTaskCB->jwl_gtf_WaitTLink->pre=tmpTaskCB)
			jwl_gtf_InsertWaitTLinkHead(jwl_gtf_TOutLink,tmpTaskCB);
		else
			jwl_gtf_InsertWaitTLinkTaskTail(tmpTaskCB->jwl_gtf_WaitTLink->Pre,tmpTaskCB);			
	}
	jwl_gtf_FindNextRun();
	jwl_gtf_Switch
	return;
}

/********************************************************************************************************
*                                        jwl_gtf_DeleteTOutLinkHead					*
* 描述:從超時鏈表頭斷開											*
*參數	a		:從要斷開的鏈表頭								*
*	*返回: 		:jwl_gtf_void									*
*********************************************************************************************************/
_jwl_gtf_BuildDeleteLinkHead(TOutLink,jwl_gtf_TaskCB)

/********************************************************************************************************
*                                        jwl_gtf_DeleteTOutLinkTail					*
* 描述:從超時鏈尾斷開											*
*參數	a		:從要斷開的鏈表頭								*
*	*返回: 		:jwl_gtf_void									*
*********************************************************************************************************/
_jwl_gtf_BuildDeleteLinkTail(TOutLink,jwl_gtf_TaskCB)

/********************************************************************************************************
*                                        jwl_gtf_CancelDelayTask()					*
* 描述:取消定超時線程											*
* 參數:  TaskID		:要取消的指定線程ID								*
*        TaskCB		:要取消指定的線程指針								*
*	*返回: 		:參看JWL-GTF_error.h								*
*********************************************************************************************************/
jwl_gtf_s8 jwl_gtf_CancelDelayTask(jwl_gtf_u8 TaskID,jwl_gtf_TaskCB *TaskCB)
{
	jwl_gtf_TaskCB *tmpTaskCB;
	if(TaskCB==jwl_gtf_NULL)						/*任務指針參數是否為NULL*/
	{
		if(tmpTaskCB=jwl_gtf_FundByID(TaskID)!=jwl_gtf_NULL)
			return jwl_gtf_NoRunCB;	
	}
	else
		tmpTaskCB=TaskCB;
	if(tmpTaskCB->jwl_gtf_TaskStaus!=jwl_gtf_Dormant)
		return jwl_gtf_NotDorStatus;					/*線程不在冥睡狀態*/
	if(tmpTaskCB->jwl_gtf_TOutLink->Pre==jwl_gtf_TOutLink)
		jwl_gtf_DeleteTOutLinkHead(jwl_gtf_TOutLink);
	else
		jwl_gtf_DeleteTOutLinkTail(tmpTaskCB);
	if(tmpTaskCB->jwl_gtf_TaskPro<jwl_gtf_TaskRun->jwl_gtf_TaskPro)		/*判斷喚醒的任務優先級是否比運行的高*/
	{
		tmpExchOCB=tmpTaskCB;
		jwl_gtf_Switch
	}
	return jwl_gtf_Noerror;
}

/********************************************************************************************************
*                                        jwl_gtf_CancelAllDelayTask()					*
* 描述:取消定超時線程											*
*	*返回: 		:jwl_gtf_void									*
*********************************************************************************************************/
jwl_gtf_void jwl_gtf_CancelAllDelayTask()
{
	jwl_gtf_TaskCB *tmpTaskCB,oldTaskCB;
	if(jwl_gtf_TOutLink==jwl_gtf_NULL
		return;
	else
	{
		oldTaskCB=jwl_gtf_get_idle();
		tmpTaskCB=jwl_gtf_TOutLink;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成va人在线观看| 久久国内精品自在自线400部| 欧美日韩高清一区二区| 国产乱子伦视频一区二区三区| 一区二区三区精品在线观看| 久久男人中文字幕资源站| 91久久精品日日躁夜夜躁欧美| 国内精品免费在线观看| 午夜精品久久久久久久| 国产精品人妖ts系列视频| 日韩一区二区中文字幕| 91久久免费观看| 国产风韵犹存在线视精品| 免费成人结看片| 亚洲.国产.中文慕字在线| 国产精品久久久久一区| 久久综合国产精品| 日韩午夜小视频| 欧美日韩国产不卡| 欧美综合亚洲图片综合区| 成人免费观看视频| 国产精品一区二区视频| 精品一区二区三区在线播放| 日韩在线一区二区| 亚洲丶国产丶欧美一区二区三区| 中文字幕一区二区三区四区| 欧美激情中文不卡| 久久精品亚洲精品国产欧美| 欧美电影免费观看高清完整版在线 | 久久久国产午夜精品| 日韩亚洲欧美在线观看| 欧美精品少妇一区二区三区| 欧美偷拍一区二区| 欧美午夜在线观看| 欧美色涩在线第一页| 色诱视频网站一区| 91香蕉国产在线观看软件| 99热99精品| 99视频超级精品| 色综合久久久网| 99v久久综合狠狠综合久久| voyeur盗摄精品| caoporn国产精品| 91美女片黄在线观看91美女| 99久久久久免费精品国产| 91性感美女视频| 在线日韩一区二区| 欧美日韩精品专区| 制服丝袜亚洲色图| 精品对白一区国产伦| 久久久久久久av麻豆果冻| 日本一区二区成人在线| 国产精品乱码一区二三区小蝌蚪| 国产精品电影一区二区三区| 亚洲欧美另类久久久精品2019| 亚洲一区二区三区四区中文字幕| 午夜久久久影院| 韩国av一区二区三区在线观看| 国产成人高清在线| 91亚洲精品一区二区乱码| 欧美日韩性生活| 欧美精品一区二区三区视频| 欧美激情中文不卡| 亚洲午夜影视影院在线观看| 日本大胆欧美人术艺术动态| 韩国女主播成人在线| av在线不卡免费看| 欧美日韩黄视频| 久久色中文字幕| 亚洲欧洲精品一区二区三区 | 国产精品久久久久久亚洲伦| 亚洲精品视频在线观看网站| 秋霞国产午夜精品免费视频| 国产精品亚洲一区二区三区妖精| 波多野结衣欧美| 欧美日韩激情一区| 欧美激情一区二区三区四区| 亚洲国产精品一区二区www在线| 久久精品av麻豆的观看方式| 成人av网站在线| 欧美一卡二卡在线观看| 中文字幕av一区二区三区免费看 | 色婷婷av一区二区三区软件| 欧美成人性福生活免费看| 亚洲视频你懂的| 蜜臀国产一区二区三区在线播放 | 欧美成人女星排名| 亚洲女人的天堂| 久久se精品一区精品二区| 99久久国产综合色|国产精品| 欧美一区二区三区四区久久| 国产精品视频一区二区三区不卡| 丝袜美腿亚洲一区二区图片| www.欧美.com| 精品国产一区二区三区久久久蜜月 | 奇米亚洲午夜久久精品| aa级大片欧美| 久久久久久久久久久久久女国产乱| 亚洲午夜电影网| www.爱久久.com| 久久婷婷综合激情| 日韩极品在线观看| 色悠久久久久综合欧美99| 久久久精品日韩欧美| 奇米影视一区二区三区小说| 在线中文字幕一区二区| 中文字幕乱码日本亚洲一区二区 | 久久成人免费网| 欧美性感一区二区三区| 国产精品理论片在线观看| 蜜臀av性久久久久av蜜臀妖精| 欧洲一区二区av| 中文在线免费一区三区高中清不卡| 麻豆国产精品一区二区三区| 欧美日韩你懂的| 亚洲午夜免费电影| 91亚洲国产成人精品一区二三 | 偷拍亚洲欧洲综合| 色综合婷婷久久| 国产精品国产自产拍高清av| 国产乱人伦偷精品视频免下载| 91精品国产欧美日韩| 天堂成人国产精品一区| 在线免费不卡视频| 亚洲啪啪综合av一区二区三区| 成人一区二区三区中文字幕| 亚洲精品在线观看视频| 免费观看日韩电影| 日韩视频免费观看高清完整版 | 欧美日韩一区精品| 亚洲欧美aⅴ...| 97精品国产露脸对白| 中文子幕无线码一区tr| 国产成人av自拍| 久久久久9999亚洲精品| 国产乱妇无码大片在线观看| 欧美精品一区二区三区蜜臀 | 国内一区二区在线| 欧美成人r级一区二区三区| 免费黄网站欧美| 精品第一国产综合精品aⅴ| 另类调教123区 | 一区二区三区资源| 欧美色男人天堂| 青青草国产精品97视觉盛宴 | www久久精品| 国产精品一区二区91| 日本一区二区三区国色天香| 成人性生交大片免费看中文| 国产精品视频免费| 91一区二区在线观看| 亚洲午夜电影在线| 日韩欧美一级片| 国产成a人亚洲| 亚洲欧洲精品一区二区三区| 在线免费一区三区| 日本免费在线视频不卡一不卡二| 日韩一二三四区| 国产伦精品一区二区三区视频青涩 | 91国在线观看| 三级在线观看一区二区| 欧美精品一区二| 91污在线观看| 天堂资源在线中文精品| 精品区一区二区| 成人免费看视频| 天堂一区二区在线| 久久婷婷国产综合国色天香 | 26uuu精品一区二区三区四区在线| 国产成人在线电影| 一区二区三区精密机械公司| 欧美精品粉嫩高潮一区二区| 国产又粗又猛又爽又黄91精品| 中文字幕精品一区二区精品绿巨人| 色综合久久综合网97色综合| 日本伊人精品一区二区三区观看方式| 久久伊人中文字幕| 91麻豆国产福利精品| 蜜桃视频一区二区三区| 亚洲欧美自拍偷拍色图| 7777精品伊人久久久大香线蕉| 国产一区在线观看麻豆| 亚洲欧美经典视频| 精品国产免费视频| 色乱码一区二区三区88| 国产在线视频一区二区三区| 一区二区三区精品视频| 26uuu久久综合| 欧美日韩国产一级| 国产不卡视频在线播放| 天天色天天操综合| 欧美激情在线一区二区三区| 正在播放一区二区| 色又黄又爽网站www久久| 国产综合久久久久久久久久久久| 亚洲与欧洲av电影| 国产精品久久精品日日| 日韩一级片在线播放| 在线免费视频一区二区| 成人av小说网|