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

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

?? event.c

?? samsung 9908DVD源代碼,
?? C
字號:
/**********************************************************************************
 * event.c
 * coded by hspark@ce.cnu.ac.kr
 * date : 2001/06/23
 * modified by hjahn@ce.cnu.ac.kr
 * date : 2003/03/03
 **********************************************************************************/

#include "kernel\\mk_sys.h"
#include "kernel\\mk_event.h"
#include "kernel\\mk_ddi.h"
#include "util\\mk_lib.h"

#ifdef _MK_EVENT

struct mk_event_struct *MK_pEventListHead;
struct mk_event_struct *MK_pEventListTail;

VOID
MK_EventInitialize(VOID)
{
	MK_pEventListHead = MK_NULL;
	MK_pEventListTail = MK_NULL;
}

STATUS
MK_CreateEvent(MK_EVENT *pEvent, CHAR *pName)
{
	STATUS	status;
	INT Flags;

	if(pEvent->e_Magic == MK_EVENT_MAGIC)
	{
#if MK_DEBUG_PRINT
		MK_Panic("MK_CreateEvent() - Magic error!\n");
#endif
		return MK_RESOURCE_ERROR;
	}
	
	Flags = MK_InterruptDisable();		/* Critical Region */

	pEvent->e_Events = 0;

	pEvent->e_pName = pName;
	/* create event pending list for event pending task */
	status = MK_CreatePendingList(&pEvent->s_PendingList, MK_SERVICE_FIFO);
	pEvent->s_PendingList.p_Sem = (ULONG)pEvent;
	
	pEvent->e_Magic = MK_EVENT_MAGIC;
	
	pEvent->e_pPrev = MK_NULL;
	pEvent->e_pNext = MK_NULL;
	if(MK_pEventListHead == MK_NULL)
	{
		MK_pEventListHead = pEvent;
		MK_pEventListTail = pEvent;
	}
	else
	{
		pEvent->e_pPrev = MK_pEventListTail;
		MK_pEventListTail->e_pNext = pEvent;
		MK_pEventListTail = pEvent;
	}

	MK_InterruptRestore(Flags);
	return status;
}

STATUS
MK_DeleteEvent(MK_EVENT *pEvent)
{
	INT Flags;

	if(pEvent->e_Magic != MK_EVENT_MAGIC)
	{
#if MK_DEBUG_PRINT
		MK_Panic("MK_DeleteEvent() - Magic error!\n");
#endif
		return MK_RESOURCE_ERROR;
	}

	Flags = MK_InterruptDisable();		/* Critical Region */

	/* change ready staus to pending task's status on event flags */
	MK_ClearPendingList(&pEvent->s_PendingList);
	MK_DeletePendingList(&pEvent->s_PendingList); //Modified

	/* delete event flags on event list */
	if(MK_pEventListHead == MK_pEventListTail)
	{
		MK_pEventListHead = MK_NULL;
		MK_pEventListTail = MK_NULL;
	}
	else
	{
		if(pEvent == MK_pEventListHead)
		{
			MK_pEventListHead = pEvent->e_pNext;
			MK_pEventListHead->e_pPrev = MK_NULL;
		}

		else if(pEvent == MK_pEventListTail)
		{
			MK_pEventListTail = pEvent->e_pPrev;
			MK_pEventListTail->e_pNext = MK_NULL;
		}
		else
		{
			pEvent->e_pPrev->e_pNext = pEvent->e_pNext;
			pEvent->e_pNext->e_pPrev = pEvent->e_pPrev;
		}
	}
	pEvent->e_pNext = MK_NULL;
	pEvent->e_pPrev = MK_NULL;

	pEvent->e_Magic = 0;

	MK_InterruptRestore(Flags);

	return MK_NO_ERROR;
}

STATUS
MK_SetEvent(MK_EVENT *pEvent, ULONG Events, UINT operation)
{
	INT					Flags;
	UINT				compare;
	UINT				consume;
	MK_TASK				*pTask;
	MK_TASK				*pNext;

	if(pEvent->e_Magic != MK_EVENT_MAGIC)
	{
#if MK_DEBUG_PRINT
		MK_Panic("[%S] line %d : MK_SetEvent() - Magic error! Task\n", __FILE__, __LINE__);
#endif
		return MK_RESOURCE_ERROR;
	}
	Flags = MK_InterruptDisable();		/* Critical Region */

	if( operation & MK_EVENT_AND)
	{
		pEvent->e_Events &= Events;
	}
	else
		pEvent->e_Events |= Events;

	consume = 0;

	pTask = MK_GetFirstPendingTask(&pEvent->s_PendingList);

	while( pTask )
	{
		pNext = pTask->t_pPendingNext;
		compare = pEvent->e_Events & pTask->t_EventRequested;

		if(pTask->t_EventOperation & MK_EVENT_AND)
			compare = (compare == pTask->t_EventRequested) ? compare : 0;

		if( compare )
		{
			if(pTask->t_EventOperation & MK_CONSUME)
				consume |= pTask->t_EventRequested;
			
			pTask->t_EventActualEvents = pEvent->e_Events;

			MK_DeleteTaskFromPendingList(&pEvent->s_PendingList, pTask);
			if(pTask->t_Status & MK_TASK_DELAYED)
			{
				MK_DeleteTaskFromDelayedList(pTask);
			}
			MK_InsertTaskToReadyList(pTask);
		}
			pTask = pNext;
	}

	pEvent->e_Events &= ~consume;

	MK_Schedule();

	MK_InterruptRestore(Flags);
	return MK_NO_ERROR;
}

STATUS
MK_EventPend(MK_EVENT *pEvent, ULONG Request, UINT Operation, ULONG *Events, LONG Ticks)
{
	INT			Flags;
	UINT		compare;
	MK_TASK		*pTask;

	if(pEvent->e_Magic != MK_EVENT_MAGIC)
	{
#if MK_DEBUG_PRINT
		MK_Panic("MK_EventPend() - Magic error! Task(%s)\n", MK_GetCurrentTask()->t_pName);
#endif
		return MK_RESOURCE_ERROR;
	}

	Flags = MK_InterruptDisable();		/* Critical Region */

	compare = pEvent->e_Events & Request;

	if(Operation & MK_EVENT_AND)
		compare = (compare == Request) ? compare : 0;
	
	if(compare) 
	{
		*Events = pEvent->e_Events;

		if(Operation & MK_CONSUME)
			pEvent->e_Events &= ~Request;
	}
	else //pending
	{
		if(Ticks == MK_NO_WAIT)
		{
			*Events = 0;
			MK_InterruptRestore(Flags);
			return MK_TIMEOUT;
		}

		pTask = MK_GetCurrentTask();
		pTask->t_EventRequested = Request;
		pTask->t_EventOperation = Operation;

		MK_DeleteTaskFromReadyList(pTask);
		MK_InsertTaskToPendingList(&pEvent->s_PendingList, pTask);
		
		if(Ticks > 0)
		{
			MK_InsertTaskToDelayedList(pTask, Ticks);
		}

		MK_Schedule();

		/* released by reset and deletion */
		if(pTask->t_Status & MK_TASK_FORCED)
		{
			*Events = 0;
			pTask->t_Status &= ~MK_TASK_FORCED;
			MK_InterruptRestore(Flags);
			return MK_RESOURCE_ERROR;
		}

		/* released by MK_TIMEOUT */
		if(pTask->t_Status & MK_TASK_PENDING)
		{
			MK_DeleteTaskFromPendingList(&pEvent->s_PendingList, pTask);

			*Events = 0;
			MK_InterruptRestore(Flags);
			return MK_TIMEOUT;
		}
		/* satisfy request Event Flags */
		else
		{
			*Events = pTask->t_EventActualEvents;
			MK_InterruptRestore(Flags);
			return MK_NO_ERROR;
		}
	}

	MK_InterruptRestore(Flags);
	return MK_NO_ERROR;
}


#if _MK_DDI
STATUS
MK_EventInformation(struct mk_ddi_struct *pDDI)
{
	MK_EVENT *pEvent;
	INT Flags;

	Flags = MK_InterruptDisable();		/* Critical Region */

	for(pEvent = MK_pEventListHead; pEvent != 0; pEvent = pEvent->e_pNext)
	{
		MK_Fprintf(pDDI, "%s ", pEvent->e_pName);
	}
	MK_Fprintf(pDDI,"\n");

	MK_InterruptRestore(Flags);

	return MK_NO_ERROR;
}
#endif

#endif /* #ifdef _MK_EVENT */



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色www精品视频在线观看| 中文字幕在线不卡| 国产精品久久久久久久裸模| 亚洲.国产.中文慕字在线| 国产精品中文字幕欧美| 欧美精品三级在线观看| 中文字幕在线不卡视频| 久久精品国产亚洲5555| 欧美老肥妇做.爰bbww| 亚洲天天做日日做天天谢日日欢 | 成人污视频在线观看| 9191成人精品久久| 亚洲精品网站在线观看| 99在线精品观看| 国产性天天综合网| 国产伦精品一区二区三区免费 | 欧美国产亚洲另类动漫| 久久不见久久见免费视频7| 欧美日韩在线免费视频| 一区二区三区四区高清精品免费观看 | 精品日韩99亚洲| 日本欧美一区二区| 欧美日本精品一区二区三区| 一区二区三区中文在线观看| 色综合久久综合网| 国产精品久久久久影院老司| 成人性生交大合| 国产日本欧美一区二区| 成人一级视频在线观看| 26uuu精品一区二区| 国产乱码一区二区三区| 国产亚洲精品资源在线26u| 国产精品亚洲专一区二区三区| 精品国产一区二区亚洲人成毛片| 日韩va欧美va亚洲va久久| 4hu四虎永久在线影院成人| 性欧美疯狂xxxxbbbb| 欧美精品色一区二区三区| 蜜桃视频一区二区| 欧美xxx久久| 国产九色精品成人porny | 国产成人超碰人人澡人人澡| 日韩免费观看高清完整版| 激情成人午夜视频| 国产无一区二区| 色呦呦网站一区| 亚洲成人www| 精品免费日韩av| 成人免费视频一区二区| 久久se这里有精品| 久久久久久亚洲综合影院红桃 | 久久99精品久久久| 国产日韩av一区| 91久久精品网| 蜜臀va亚洲va欧美va天堂| 久久亚洲春色中文字幕久久久| 成人美女视频在线观看18| 亚洲欧美日韩成人高清在线一区| 欧美日韩国产成人在线免费| 精品亚洲porn| 伊人一区二区三区| 日韩欧美一区二区在线视频| 高清shemale亚洲人妖| 一区二区久久久久久| 精品国产成人在线影院 | 国产老妇另类xxxxx| 亚洲免费在线电影| 日韩欧美专区在线| 色欧美片视频在线观看| 久久99久久久欧美国产| 亚洲欧美日韩国产综合| 日韩一区二区免费电影| 色婷婷国产精品| 国产精品影音先锋| 日韩福利电影在线观看| 中文字幕一区二区三| 欧美成人三级电影在线| 在线精品视频一区二区| 国产美女视频一区| 天天操天天综合网| 综合婷婷亚洲小说| 久久在线免费观看| 欧美一区二区在线视频| 91麻豆蜜桃一区二区三区| 国内成人免费视频| 天堂一区二区在线| 亚洲综合男人的天堂| 国产精品毛片无遮挡高清| 精品处破学生在线二十三| 欧美三级三级三级| 色综合久久99| 99久久综合色| 国产jizzjizz一区二区| 久久国产夜色精品鲁鲁99| 亚洲国产精品尤物yw在线观看| 亚洲婷婷国产精品电影人久久| 久久久久久影视| 精品国产sm最大网站| 欧美丰满美乳xxx高潮www| 欧美中文字幕一区| 日本韩国视频一区二区| 波多野结衣一区二区三区| 国产精品一区二区无线| 精品在线视频一区| 蜜臀av在线播放一区二区三区| 午夜精品久久久久久久久久| 一区av在线播放| 亚洲一区二区三区四区不卡| 一区二区三区欧美日韩| 亚洲精品国产精华液| 亚洲综合免费观看高清完整版 | 国产精品午夜春色av| 久久亚洲一区二区三区明星换脸| 欧美变态tickling挠脚心| 欧美一级日韩一级| 精品少妇一区二区三区在线播放| 日韩视频123| 久久先锋影音av| 欧美极品少妇xxxxⅹ高跟鞋| 欧美极品少妇xxxxⅹ高跟鞋| 国产精品高清亚洲| 亚洲啪啪综合av一区二区三区| 亚洲人成网站影音先锋播放| 一区二区三区资源| 午夜电影一区二区三区| 蜜桃视频一区二区三区| 国产精品羞羞答答xxdd| 成a人片国产精品| 91久久精品一区二区二区| 欧美人成免费网站| 精品少妇一区二区三区视频免付费 | 午夜欧美视频在线观看| 日韩国产高清影视| 精品一区二区免费| av中文一区二区三区| 欧美在线色视频| 日韩欧美亚洲国产另类 | 国产精品伊人色| 91麻豆swag| 51精品秘密在线观看| 久久婷婷色综合| 亚洲男人的天堂av| 麻豆国产精品官网| 成人av在线资源网站| 欧美日韩在线一区二区| www国产亚洲精品久久麻豆| 自拍偷拍国产精品| 性做久久久久久免费观看欧美| 精东粉嫩av免费一区二区三区| 成人av在线网站| 91精品国产欧美一区二区成人| 国产欧美日韩一区二区三区在线观看| 综合久久综合久久| 黄色资源网久久资源365| 色综合天天综合网天天看片| 精品日韩av一区二区| 亚洲女人的天堂| 国产精品一区二区不卡| 欧美日韩黄色影视| 国产精品国产三级国产三级人妇| 日日摸夜夜添夜夜添国产精品 | 一区二区三区在线不卡| 国产一区二区免费视频| 欧美影视一区二区三区| 国产色产综合产在线视频| 日日夜夜精品视频天天综合网| 99久久精品99国产精品| 欧美va在线播放| 亚洲综合一区二区三区| 成人免费视频caoporn| 日韩午夜在线观看| 亚洲资源在线观看| 不卡的电视剧免费网站有什么| 日韩欧美亚洲国产精品字幕久久久| 一区二区三区丝袜| 99精品久久只有精品| 久久久影院官网| 久久66热re国产| 日韩西西人体444www| 亚洲国产wwwccc36天堂| 91免费精品国自产拍在线不卡| 久久综合色之久久综合| 日韩中文欧美在线| 欧美日韩国产乱码电影| 一卡二卡三卡日韩欧美| 色综合久久久久久久久| √…a在线天堂一区| 成人美女视频在线看| 欧美国产日本视频| 国产精品亚洲午夜一区二区三区 | 精品国产凹凸成av人网站| 青青草97国产精品免费观看| 精品视频123区在线观看| 有码一区二区三区| 在线这里只有精品| 午夜电影网亚洲视频| 91精品国产丝袜白色高跟鞋| 三级一区在线视频先锋 | 日韩一区二区三免费高清| 日本在线不卡一区|