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

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

?? os_cpu_c.c

?? VC版式的 UCOSII ! 修改前人255任務的那個版本! 已經改為286u版! 可用VC6直接編過!
?? C
字號:


#include "INCLUDES.H"


OS_STK *OSTaskStkInit (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT16U opt)
{
    INT32U *stk;							//console 下寄存器為32位寬
	
	
    opt    = opt;                           /* 'opt' is not used, prevent warning                      */
    stk    = (INT32U *)ptos;                /* Load stack pointer                                      */
    *--stk = (INT32U)pdata;         /* Simulate call to function with argument                 */                                    
	*--stk = (INT32U)0X00000000;	//子程序是從當前esp+4處取得傳入的參數,所以此處要空出4個字節
	*--stk = (INT32U)task;          /* Put pointer to task   on top of stack                   */
    *--stk = (INT32U)0x00000202;				/* EFL = 0X00000202												*/
	*--stk = (INT32U)0xAAAAAAAA;                /* EAX = 0xAAAAAAAA                                              */
    *--stk = (INT32U)0xCCCCCCCC;                /* ECX = 0xCCCCCCCC                                             */
    *--stk = (INT32U)0xDDDDDDDD;                /* EDX = 0xDDDDDDDD                                             */
    *--stk = (INT32U)0xBBBBBBBB;                /* EBX = 0xBBBBBBBB                                             */
    *--stk = (INT32U)0x00000000;                /* ESP = 0x00000000  esp可以任意,因為                                           */
    *--stk = (INT32U)0x11111111;                /* EBP = 0x11111111                                             */
    *--stk = (INT32U)0x22222222;                /* ESI = 0x22222222                                             */
    *--stk = (INT32U)0x33333333;                /* EDI = 0x33333333                                             */
	
    return ((OS_STK *)stk);
}


void OSStartHighRdy(void)
{
	OSTaskSwHook();
	OSRunning = TRUE;
	_asm{
		mov ebx, [OSTCBCur]	;//OSTCBCur結構的第一個參數就是esp
		mov esp, [ebx]		;//恢復堆棧
		
		popad		;//恢復所有通用寄存器,共8個
		popfd		;//恢復標志寄存器
		ret			;//ret 指令相當于pop eip 但保護模式下不容許使用eip
		;//永遠都不返回
	}
}



void OSCtxSw(void)
{
	_asm{
		lea	 eax, nextstart	;//任務切換回來后從nextstart開始
		push eax
			pushfd				;//標志寄存器的值
		pushad				;//保存EAX -- EDI		
		mov ebx, [OSTCBCur]
			mov [ebx], esp		;//把堆棧入口的地址保存到當前TCB結構中
	}
	
	OSTaskSwHook();
	OSTCBCur = OSTCBHighRdy;	
	OSPrioCur = OSPrioHighRdy;
	
	_asm{
		mov ebx, [OSTCBCur]
		mov esp, [ebx]		;//得到OSTCBHighRdy的esp
		
		popad				;//恢復所有通用寄存器,共8個
		popfd				;//恢復標志寄存器
		ret					;//跳轉到指定任務運行
	}
nextstart:			//任務切換回來的運行地址
	return;
}


extern CONTEXT Context;
extern HANDLE mainhandle;

void OSIntCtxSw(void)
{
	OS_STK *sp;
	OSTaskSwHook();
	
	
	sp = (OS_STK *)Context.Esp;	//得到主線程當前堆棧指針
	//在堆棧中保存相應寄存器。
	*--sp = Context.Eip;	//先保存eip
	*--sp = Context.EFlags;	//保存efl
	*--sp = Context.Eax;
	*--sp = Context.Ecx;
	*--sp = Context.Edx;
	*--sp = Context.Ebx;
	*--sp = Context.Esp;	//此時保存的esp是錯誤的,但OSTCBCur保存了正確的
	*--sp = Context.Ebp;
	*--sp = Context.Esi;
	*--sp = Context.Edi;	
	OSTCBCur->OSTCBStkPtr = (OS_STK *)sp;	//保存當前esp
	
	OSTCBCur = OSTCBHighRdy;		//得到當前就緒最高優先級任務的tcb
	OSPrioCur = OSPrioHighRdy;		//得到當前就緒任務最高優先級數
	sp = OSTCBHighRdy->OSTCBStkPtr;	//得到重新執行的任務的堆棧指針
	
	
	//恢復所有處理器的寄存器
	Context.Edi = *sp++;
	Context.Esi = *sp++;
	Context.Ebp = *sp++;
	Context.Esp = *sp++;		//此時上下文中得到的esp是不正確的
	Context.Ebx = *sp++;
	Context.Edx = *sp++;
	Context.Ecx = *sp++;
	Context.Eax = *sp++;
	Context.EFlags = *sp++; 
	Context.Eip = *sp++;
	
	Context.Esp = (unsigned long)sp;		//得到正確的esp
	
	SetThreadContext(mainhandle, &Context);	//保存主線程上下文
}




void OSInitHookBegin (void)
{
}

void OSInitHookEnd (void)
{
}

void OSTaskCreateHook (OS_TCB *ptcb)
{
    ptcb = ptcb;                       /* Prevent compiler warning                                     */
}

void OSTaskDelHook (OS_TCB *ptcb)
{
    ptcb = ptcb;                       /* Prevent compiler warning                                     */
}

void OSTaskSwHook (void)
{

}

void OSTaskStatHook (void)
{

}

void OSTCBInitHook (OS_TCB *ptcb)
{
    ptcb = ptcb;                                           /* Prevent Compiler warning                 */
}

void OSTimeTickHook (void)
{

}

void OSTaskIdleHook (void)
{
	Sleep(1);
}


void CALLBACK OSTickISR(unsigned int a,unsigned int b,unsigned long c,unsigned long d,unsigned long e)
{
	if(!FlagEn)
		return;	//如果當前中斷被屏蔽則返回


	//掛起線程  --//中止主線程的運行,模擬中斷產生.但沒有保存寄存器
	SuspendThread(mainhandle);

	//得到主線程上下文,為切換任務做準備
	GetThreadContext(mainhandle, &Context);	

	OSIntNesting++;
	if (OSIntNesting == 1) 
	{
		OSTCBCur->OSTCBStkPtr = (OS_STK *)Context.Esp;	//保存當前esp
	}	
	OSTimeTick();		// ucos內部定時

	OSIntExit();		// 由于不能使用中斷返回指令,所以此函數是要返回的
	

	ResumeThread(mainhandle);	//模擬中斷返回,主線程得以繼續執行
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区在| 9久草视频在线视频精品| 欧美精品电影在线播放| 夜夜嗨av一区二区三区四季av| 在线日韩av片| 午夜伦欧美伦电影理论片| 欧美精品日韩一区| 奇米在线7777在线精品| 久久婷婷久久一区二区三区| 成人激情图片网| 亚洲欧美电影一区二区| 8x8x8国产精品| 国产二区国产一区在线观看| 18成人在线观看| 欧美精品1区2区| 韩国av一区二区三区在线观看| 国产人妖乱国产精品人妖| 99久久精品久久久久久清纯| 亚洲一区二区在线免费观看视频 | 欧美色涩在线第一页| 视频一区二区三区中文字幕| 精品国精品自拍自在线| 成人免费电影视频| 亚洲国产一区二区三区青草影视| 日韩午夜在线观看| 成人小视频在线观看| 亚洲成人在线免费| 国产亚洲一二三区| 欧美综合一区二区| 精品一区二区三区免费视频| 亚洲视频一区二区在线观看| 欧美日韩国产天堂| 成人午夜碰碰视频| 日韩精品一卡二卡三卡四卡无卡| 日本一区二区久久| 91精品在线免费| 99综合电影在线视频| 日韩不卡一二三区| 亚洲精品一卡二卡| 久久精品一区二区三区av| 在线一区二区三区四区| 国产乱码精品1区2区3区| 一区二区三区四区高清精品免费观看 | 亚洲成在线观看| 国产欧美一区二区三区在线老狼 | 91精品国产综合久久久久久 | 欧美性猛片aaaaaaa做受| 国产尤物一区二区| 亚洲一区二区三区在线| 国产精品天天摸av网| 91麻豆精品91久久久久同性| 在线欧美日韩国产| 成人免费毛片嘿嘿连载视频| 久久精品国产亚洲a| 亚洲香蕉伊在人在线观| 中文字幕综合网| 国产日韩三级在线| 日韩欧美电影一区| 欧美丰满美乳xxx高潮www| 色综合一区二区| 成人黄色av电影| 国产麻豆精品久久一二三| 日韩激情在线观看| 亚洲成av人片在线观看无码| 中文字幕一区二区三区蜜月| 国产欧美精品一区二区色综合| 日韩一级成人av| 欧美一二三四区在线| 欧美视频在线观看一区二区| 色先锋资源久久综合| 成人一级黄色片| 国产成人夜色高潮福利影视| 国产精品一区二区久久不卡| 激情五月激情综合网| 看电视剧不卡顿的网站| 日产欧产美韩系列久久99| 日韩精品一区第一页| 视频一区视频二区中文字幕| 亚洲国产aⅴ成人精品无吗| 亚洲综合精品久久| 亚洲网友自拍偷拍| 亚洲成av人片在线观看| 爽好久久久欧美精品| 日韩国产欧美在线观看| 青娱乐精品在线视频| 久久99日本精品| 麻豆久久一区二区| 国产成人精品一区二| 丁香六月综合激情| 99国产精品久久久久久久久久| 91亚洲男人天堂| 91极品美女在线| 欧美精品在线观看一区二区| 日韩午夜在线观看视频| 久久精品夜色噜噜亚洲aⅴ| 国产精品免费视频观看| 亚洲免费毛片网站| 亚洲成人1区2区| 九九久久精品视频| 成人在线综合网| 色香蕉久久蜜桃| 欧美一卡二卡三卡四卡| 久久一区二区三区四区| 一区在线中文字幕| 亚洲成年人网站在线观看| 久久电影国产免费久久电影| 国产精品综合一区二区| 一本久道久久综合中文字幕| 欧美精品亚洲一区二区在线播放| 26uuu亚洲综合色| 综合欧美亚洲日本| 日韩av不卡一区二区| 国产精品亚洲专一区二区三区| 9i看片成人免费高清| 欧美一级日韩不卡播放免费| 国产欧美1区2区3区| 亚洲一级片在线观看| 韩国一区二区视频| 色天使久久综合网天天| 欧美不卡在线视频| 一区二区三区在线观看欧美| 久久成人麻豆午夜电影| 一本到不卡免费一区二区| 欧美一区二区在线看| 国产精品久久久久天堂| 青青青伊人色综合久久| 成人高清免费在线播放| 日韩午夜小视频| 亚洲精品成人天堂一二三| 国产电影精品久久禁18| 欧美日韩久久久久久| 国产精品热久久久久夜色精品三区| 亚洲大片免费看| 91小视频在线观看| 欧美精品一区二区不卡| 亚洲图片有声小说| 99久免费精品视频在线观看| 日韩视频一区二区在线观看| 一区2区3区在线看| 99久久精品99国产精品| 久久婷婷一区二区三区| 日本大胆欧美人术艺术动态| 色94色欧美sute亚洲线路二| 国产亚洲制服色| 激情深爱一区二区| 欧美乱妇23p| 一区二区三国产精华液| 成人av影院在线| 久久久久久**毛片大全| 麻豆国产91在线播放| 欧美电影一区二区三区| 一区二区三区在线观看国产| 91在线播放网址| 国产精品三级久久久久三级| 国模冰冰炮一区二区| 欧美大片一区二区三区| 日日夜夜精品免费视频| 欧美日韩一区二区三区在线| 亚洲欧美日本在线| 成人毛片在线观看| 欧美激情在线一区二区三区| 国产伦精品一区二区三区视频青涩 | 久久无码av三级| 激情综合一区二区三区| 日韩免费观看高清完整版| 日本91福利区| 日韩午夜在线影院| 国产福利电影一区二区三区| 久久综合国产精品| 激情深爱一区二区| 久久精品一区二区三区不卡牛牛| 精品一区二区三区在线播放| 精品精品欲导航| 精品一区二区三区免费| 久久久www成人免费毛片麻豆| 国产一区999| 国产精品国产三级国产普通话99| 成人精品国产一区二区4080| 国产精品美女久久久久av爽李琼 | 亚洲国产欧美在线人成| 91久久精品国产91性色tv | 日韩理论片网站| 91丝袜呻吟高潮美腿白嫩在线观看| 中文字幕一区在线观看| 色天使色偷偷av一区二区| 亚洲va中文字幕| 欧美精品第一页| 国产原创一区二区三区| 日本一区二区三区视频视频| 成人爱爱电影网址| 一区二区三区资源| 欧美色网站导航| 久久国产剧场电影| 国产精品美女视频| 色噜噜狠狠成人网p站| 五月婷婷久久丁香| 久久人人爽人人爽| 在线看日本不卡| 久久www免费人成看片高清| 亚洲国产精品国自产拍av|