#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 |
| 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.
00013 { 00014 OsSchedulerCtrl.State=0; 00015 OsSchedulerCtrl.TaskSwitchTimer=OS_TASK_SWITCH_TIME; 00016 OsSchedulerCtrl.CurrentPriority=0; 00017 }
| 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 }
Definition at line 11 of file os_scheduler.c.
1.5.9