Go to the source code of this file.
Functions | |
void | OsEventInit (void) |
INT8U | OsEventFreeListCheck (void) |
void | OsEventFreeEventPut (OS_EVENT *pOsEvent) |
OS_EVENT * | OsEventFreeEventGet (void) |
void | OsEventPendingTaskPut (OS_EVENT *pOsEvent, OS_TCB *pOsTcb) |
OS_TCB * | OsEventPendingTaskGet (OS_EVENT *pOsEvent) |
Variables | |
OS_EVENT | OsEvent [OS_EVENT_MAX] |
OS_EVENT * | EventFreeList |
OS_EVENT_CONTROL | OsEventCtrl |
OS_EVENT * OsEventFreeEventGet | ( | void | ) |
Definition at line 46 of file os_event.c.
00046 { 00047 OS_EVENT *pOsEvent; 00048 00049 if(EventFreeList==(OS_EVENT *)0) return (OS_EVENT *)0; 00050 if(EventFreeList->Next==(OS_EVENT *)0){ 00051 pOsEvent=EventFreeList; 00052 EventFreeList=(OS_EVENT *)0; 00053 OsEventCtrl.EntryNumber=0; 00054 } 00055 else{ 00056 pOsEvent=EventFreeList; 00057 EventFreeList=EventFreeList->Next; 00058 EventFreeList->Prev=(OS_EVENT *)0; 00059 OsEventCtrl.EntryNumber--; 00060 } 00061 pOsEvent->Prev=(OS_EVENT *)0; 00062 pOsEvent->Next=(OS_EVENT *)0; 00063 return pOsEvent; 00064 }
void OsEventFreeEventPut | ( | OS_EVENT * | pOsEvent | ) |
Definition at line 32 of file os_event.c.
00032 { 00033 pOsEvent->Next=(OS_EVENT *)0; 00034 pOsEvent->Prev=(OS_EVENT *)0; 00035 if(OsEventCtrl.EntryNumber==0){ 00036 EventFreeList=pOsEvent; 00037 OsEventCtrl.EntryNumber=1; 00038 } 00039 else{ 00040 pOsEvent->Next=EventFreeList; 00041 EventFreeList->Prev=pOsEvent; 00042 EventFreeList=pOsEvent; 00043 OsEventCtrl.EntryNumber++; 00044 } 00045 }
INT8U OsEventFreeListCheck | ( | void | ) |
Definition at line 28 of file os_event.c.
00028 { 00029 if(EventFreeList==(OS_EVENT *)0) return FALSE; 00030 else return TRUE; 00031 }
void OsEventInit | ( | void | ) |
Definition at line 21 of file os_event.c.
00021 { 00022 INT8U i; 00023 00024 OsEventCtrl.EntryNumber=0; 00025 EventFreeList=(OS_EVENT *)0; 00026 for(i=0;i<OS_EVENT_MAX;i++) OsEventFreeEventPut(&OsEvent[i]); 00027 }
OS_TCB* OsEventPendingTaskGet | ( | OS_EVENT * | pOsEvent | ) |
Definition at line 82 of file os_event.c.
00082 { // get the 1st task in event pending list 00083 OS_TCB *pTcb; 00084 00085 if(pOsEvent->ListHead==(INT32U *)0) return (OS_TCB *)0; 00086 pTcb=(OS_TCB *)pOsEvent->ListHead; 00087 if(pTcb->Next==(OS_TCB *)0){ 00088 pOsEvent->ListHead=(INT32U *)0; 00089 pOsEvent->EntryNumber=0; 00090 return pTcb; 00091 } 00092 else{ 00093 pOsEvent->ListHead=(INT32U *)pTcb->Next; 00094 pTcb->Next->Prev=(OS_TCB *)0; 00095 pOsEvent->EntryNumber--; 00096 return pTcb; 00097 } 00098 }
void OsEventPendingTaskPut | ( | OS_EVENT * | pOsEvent, | |
OS_TCB * | pOsTcb | |||
) |
Definition at line 65 of file os_event.c.
00065 { // add a pending task to event waiting list tail 00066 OS_TCB *pTcb; 00067 00068 pOsTcb->Next=(OS_TCB *)0; // clear link list relationship 00069 pOsTcb->Prev=(OS_TCB *)0; // clear link list relationship 00070 if(pOsEvent->ListHead==(INT32U *)0){ 00071 pOsEvent->ListHead=(INT32U *)pOsTcb; 00072 pOsEvent->EntryNumber=1; 00073 } 00074 else{ 00075 pTcb=(OS_TCB *)pOsEvent->ListHead; 00076 while(pTcb->Next!=(OS_TCB *)0) pTcb=pTcb->Next; // find last task in event pending list 00077 pTcb->Next=pOsTcb; 00078 pOsTcb->Prev=pTcb; 00079 pOsEvent->EntryNumber++; 00080 } 00081 }
OS_EVENT* EventFreeList |
Definition at line 13 of file os_event.c.
OS_EVENT OsEvent[OS_EVENT_MAX] |
Definition at line 12 of file os_event.c.
OS_EVENT_CONTROL OsEventCtrl |
Definition at line 14 of file os_event.c.