os_core/os_event.c File Reference

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


Function Documentation

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 }


Variable Documentation

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.


Generated on Tue Sep 2 08:45:42 2008 for A Simple operation System using S3C2410 by  doxygen 1.5.6