os_scheduler.c File Reference

#include "includes.h"

Go to the source code of this file.

Functions

void OsSchedulerInit (void)
OS_BOOL OsSchedulerFindRootTask (void)
void OsSchedulerNextTaskFind (void)

Variables

OS_SCHEDULER_CONTROL OsSchedulerCtrl


Function Documentation

OS_BOOL OsSchedulerFindRootTask ( void   ) 

Definition at line 19 of file os_scheduler.c.

00019                                      {
00020      OS_TASKENTRY *pOsTask;    
00021     
00022     if((pOsTask=OsTaskReadyTaskGet(0))==(OS_TASKENTRY *)OS_NULL) return false;
00023     OsSchedulerCtrl.CurrentPriority=0; // root task is at 0 priority
00024     pOsTask->Status=OS_TASK_EXECUTION;
00025     OsTaskCurrent=(U32)pOsTask;
00026     return OS_TRUE;
00027 }

void OsSchedulerInit ( void   ) 

Definition at line 13 of file os_scheduler.c.

void OsSchedulerNextTaskFind ( void   ) 

Definition at line 34 of file os_scheduler.c.

00034                                   {
00035     OS_TASKENTRY *pOsTask;    
00036     U8 TempPriority,i;
00037     #if(OS_CRITICAL_METHOD==3)
00038         U32 CpuEflags;
00039     #endif
00040     
00041     OsEnterCritical();
00042     TempPriority=OsSchedulerCtrl.CurrentPriority;
00043     for(i=0;i<OS_TASK_PRIORITY_MAX;i++){
00044         TempPriority++;
00045         if(TempPriority==OS_TASK_PRIORITY_MAX) TempPriority=0;
00046         if((pOsTask=OsTaskReadyTaskGet(TempPriority))!=(OS_TASKENTRY *)OS_NULL) break;
00047     } 
00048     if(pOsTask==(OS_TASKENTRY *)OS_NULL){
00049          OsExitCritical();
00050          return;
00051     }        
00052     OsSchedulerCtrl.CurrentPriority=TempPriority;
00053     OsSchedulerCtrl.TaskSwitchTimer=OS_TASK_SWITCH_TIME;   
00054     pOsTask->Status=OS_TASK_EXECUTION;
00055     OsTaskNext=(U32)pOsTask;
00056     pOsTask=(OS_TASKENTRY *)OsTaskCurrent;
00057     if(pOsTask->Status==OS_TASK_EXECUTION){
00058         OsTaskReadyTaskPut(pOsTask);    
00059     }  
00060     OsTaskSwitch=true;          
00061     OsExitCritical();
00062 }


Variable Documentation

Definition at line 11 of file os_scheduler.c.


Generated on Sat Apr 10 23:28:07 2010 for 80X86 MULTI-TASKING OPERATION SYSTEM by  doxygen 1.5.9