|
ucos学习之OSSemCreate()函数分析
[复制链接]
小弟初学ucos,如下是这个函数的源代码,小弟有些不懂,恳请大神指教~~~
OS_EVENT *OSSemCreate (INT16U cnt)
{
OS_EVENT *pevent;
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr = 0;
#endif
if (OSIntNesting > 0) { /*问题1:这段代码的作用是什么???*/
return ((OS_EVENT *)0);
}
OS_ENTER_CRITICAL();
pevent = OSEventFreeList;
if (OSEventFreeList != (OS_EVENT *)0) { /*问题2:如何理解 OSEventFreeList != (OS_EVENT *)0 */
/* 假如定义了一个类型A,一个A类型的指针P 那么P=(A*)0表示什么意思??? */
OSEventFreeList = (OS_EVENT *)OSEventFreeList->OSEventPtr;
}
OS_EXIT_CRITICAL();
if (pevent != (OS_EVENT *)0) {
pevent->OSEventType = OS_EVENT_TYPE_SEM;
pevent->OSEventCnt = cnt;
pevent->OSEventPtr = (void *)0;
#if OS_EVENT_NAME_SIZE > 1
pevent->OSEventName[0] = '?';
pevent->OSEventName[1] = OS_ASCII_NUL;
#endif
OS_EventWaitListInit(pevent);
}
return (pevent);
}
|
|