消息量函数分析OS_EVENT *OSSemCreate (INT16U cnt)
2007-08-16 14:01
429 查看
function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}
消息量函数分析OS_EVENT *OSSemCreate (INT16U cnt)
OS_EVENT *OSSemCreate (INT16U cnt) ;该函数返回的数据类型为指针,指针指向的数据类型为OS_EVENT(事件的数据类型为结构体)。也就是函数返回一个地址,地址里存的是新创建的结构体类型所占据的内存的首地址。
OS_EVENT *pevent;
pevent = OSEventFreeList; if (OSEventFreeList != (OS_EVENT *)0) { /* See if pool of free ECB pool was empty */
OSEventFreeList = (OS_EVENT *)OSEventFreeList->OSEventPtr;
}
;首先创建一个指向OS_EVENT结构体类型的指针pevent;系统初始化时会创建一个空事件控制块链表,而创建的空事件控制块的数目由常数OSEventMax来决定。OSEventFreeList就指向这个空事件控制块链表的第一个,所以上面的程序里把OSEventFreeList赋给了pevent,也就是让pevent指向第一个空事件控制块,然后又让OSEventFreeList指向了空事件控制链表中的第二个。也就是从空事件链表中摘出了第一个给事件使用。
if (pevent != (OS_EVENT *)0) { /* Get an event control block */
pevent->OSEventType = OS_EVENT_TYPE_SEM;
pevent->OSEventCnt = cnt; /* Set semaphore value */
pevent->OSEventPtr = (void *)0; /* Unlink from ECB free list */
#if OS_EVENT_NAME_SIZE > 1
pevent->OSEventName[0] = '?'; /* Unknown name */
pevent->OSEventName[1] = OS_ASCII_NUL;
#endif
;以上就是对新创建的空任务控制块的各个量进行初始化。
OS_EventWaitListInit(pevent); ;通过调用OSEventWaitListInit()对事件控制块中的等待任务列表进行初始化。该函数初始化一个空的等待任务列表,其中没有任何任务。该函数的调用参数只有一个,就是指向需要初始化的事件控制块的指针pevent。
return (pevent); ;返回创建的结构体类型数据的首地址的指针
消息量函数分析OS_EVENT *OSSemCreate (INT16U cnt)
OS_EVENT *OSSemCreate (INT16U cnt) ;该函数返回的数据类型为指针,指针指向的数据类型为OS_EVENT(事件的数据类型为结构体)。也就是函数返回一个地址,地址里存的是新创建的结构体类型所占据的内存的首地址。
OS_EVENT *pevent;
pevent = OSEventFreeList; if (OSEventFreeList != (OS_EVENT *)0) { /* See if pool of free ECB pool was empty */
OSEventFreeList = (OS_EVENT *)OSEventFreeList->OSEventPtr;
}
;首先创建一个指向OS_EVENT结构体类型的指针pevent;系统初始化时会创建一个空事件控制块链表,而创建的空事件控制块的数目由常数OSEventMax来决定。OSEventFreeList就指向这个空事件控制块链表的第一个,所以上面的程序里把OSEventFreeList赋给了pevent,也就是让pevent指向第一个空事件控制块,然后又让OSEventFreeList指向了空事件控制链表中的第二个。也就是从空事件链表中摘出了第一个给事件使用。
if (pevent != (OS_EVENT *)0) { /* Get an event control block */
pevent->OSEventType = OS_EVENT_TYPE_SEM;
pevent->OSEventCnt = cnt; /* Set semaphore value */
pevent->OSEventPtr = (void *)0; /* Unlink from ECB free list */
#if OS_EVENT_NAME_SIZE > 1
pevent->OSEventName[0] = '?'; /* Unknown name */
pevent->OSEventName[1] = OS_ASCII_NUL;
#endif
;以上就是对新创建的空任务控制块的各个量进行初始化。
OS_EventWaitListInit(pevent); ;通过调用OSEventWaitListInit()对事件控制块中的等待任务列表进行初始化。该函数初始化一个空的等待任务列表,其中没有任何任务。该函数的调用参数只有一个,就是指向需要初始化的事件控制块的指针pevent。
return (pevent); ;返回创建的结构体类型数据的首地址的指针
相关文章推荐
- 消息量函数分析OS_EVENT *OSSemCreate (INT16U cnt)
- 消息量函数分析OS_EVENT *OSSemCreate (INT16U cnt)
- ucosII OSMemCreate()函数的解析 .(双指针构成链表)
- WM_CREATE和WM_INITDIALOG消息响应函数之区别,以及MFC应用程序中处理消息的...
- UC/OS-II的内存管理OSMemCreate()分析
- epoll源码分析---sys_epoll_create()函数 http://blog.chinaunix.net/uid-28443939-id-3470593.html
- Raw-OS源代码分析之消息系统-Queue_Size
- WinCE 开始菜单StartMenu_Create()函数代码分析
- VCL 消息循环分析之改进版(可以触发WM_CREATE消息了)
- c++CreateEvent函数在多线程中使用及实例
- uc/os-II 分析(10)--消息队列
- libevent源码分析(6)--2.1.8--创建和释放libevent句柄event_base的相关函数
- uC/OS-II 函数之消息队列相关函数
- Z-Stack分析--osal_int_disable( INTS_ALL )函数
- C专家编程—分析signal函数的原型声明{void (*signal(int sig,void (*func)(int)))(int)}(2)
- C 函数调用过程Ollydbg 反汇编分析 Demo int add(int,int)
- wait_event_interruptible_timeout函数分析
- "易语言.尘土"界面库2.0版源代码分析(3):窗口的消息处理函数(WndProc)(上)
- muduo源码分析之EventLoop::runInLoop()函数
- Raw-OS源码分析之消息系统-Queue