OS_InitEventList 函数

//初始化ECB链表 static void OS_InitEventList (void) { #if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 0) //如果有消息事件,并且最大消息事件数>0 #if (OS_MAX_EVENTS > 1) //如果最大消息事件数>1 INT16U i; OS_EVENT *pevent1; OS_EVENT *pevent2; pevent1 = &OSEventTbl[0]; //查找任务等待表(0)对应的首地址 pevent2 = &OSEventTbl[1]; //查找任务等待表(1)对应的地址 for (i = 0; i < (OS_MAX_EVENTS - 1); i++) { //释放所有的任务等待表,并将事件的类型=空闲 pevent1->OSEventType = OS_EVENT_TYPE_UNUSED; pevent1->OSEventPtr = pevent2; pevent1++; pevent2++; } pevent1->OSEventType = OS_EVENT_TYPE_UNUSED; //首地址的事件的类型=空闲 pevent1->OSEventPtr = (OS_EVENT *)0; //首地址的消息或消息队列的指针为空 OSEventFreeList = &OSEventTbl[0]; //空闲事件管理列表=任务等待表首地址 #else OSEventFreeList = &OSEventTbl[0]; //空闲事件管理列表=任务等待表首地址 OSEventFreeList->OSEventType = OS_EVENT_TYPE_UNUSED; //事件的类型=空闲 OSEventFreeList->OSEventPtr = (OS_EVENT *)0; //消息或消息队列的指针为空 #endif #endif }

你可能感兴趣的:(OS,任务,events)