IssueNo:#I3IK07
Description:liteos_m scheduling optimization and low power design. Sig:kernel Feature or Bugfix:Feature Binary Source:No Change-Id: I5b692a503ce6128626eec8f9a37742d7caa1fea9
This commit is contained in:
parent
f685eeb97d
commit
cd30e62998
|
@ -45,9 +45,7 @@ extern "C" {
|
|||
extern UINT32 g_taskScheduled;
|
||||
typedef BOOL (*SchedScan)(VOID);
|
||||
|
||||
VOID OsSchedUpdateTimeBase(VOID);
|
||||
|
||||
UINT64 OsGetCurrTimeCycle(VOID);
|
||||
VOID OsSchedUpdateSchedTimeBase(VOID);
|
||||
|
||||
UINT64 OsGetCurrSchedTimeCycle(VOID);
|
||||
|
||||
|
|
|
@ -59,7 +59,6 @@ STATIC UINT32 g_queueBitmap;
|
|||
|
||||
STATIC UINT32 g_schedResponseID = 0;
|
||||
STATIC UINT64 g_schedResponseTime = OS_SCHED_MAX_RESPONSE_TIME;
|
||||
STATIC UINT64 g_schedStartTime;
|
||||
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
|
||||
typedef struct {
|
||||
SchedSleepInit init;
|
||||
|
@ -78,7 +77,7 @@ STATIC SchedSleep g_schedSleepCB;
|
|||
#if (LOSCFG_BASE_CORE_TICK_WTIMER == 0)
|
||||
STATIC UINT64 g_schedTimerBase;
|
||||
|
||||
VOID OsSchedUpdateTimeBase(VOID)
|
||||
VOID OsSchedUpdateSchedTimeBase(VOID)
|
||||
{
|
||||
UINT32 period = 0;
|
||||
|
||||
|
@ -87,8 +86,12 @@ VOID OsSchedUpdateTimeBase(VOID)
|
|||
}
|
||||
#endif
|
||||
|
||||
UINT64 OsGetCurrTimeCycle(VOID)
|
||||
UINT64 OsGetCurrSchedTimeCycle(VOID)
|
||||
{
|
||||
if (!g_taskScheduled) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if (LOSCFG_BASE_CORE_TICK_WTIMER == 1)
|
||||
return HalGetTickCycle(NULL);
|
||||
#else
|
||||
|
@ -111,15 +114,6 @@ UINT64 OsGetCurrTimeCycle(VOID)
|
|||
#endif
|
||||
}
|
||||
|
||||
UINT64 OsGetCurrSchedTimeCycle(VOID)
|
||||
{
|
||||
if (!g_taskScheduled) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return OsGetCurrTimeCycle() - g_schedStartTime;
|
||||
}
|
||||
|
||||
STATIC INLINE VOID OsTimeSliceUpdate(LosTaskCB *taskCB, UINT64 currTime)
|
||||
{
|
||||
LOS_ASSERT(currTime >= taskCB->startTime);
|
||||
|
@ -177,7 +171,7 @@ STATIC INLINE VOID OsSchedSetNextExpireTime(UINT64 startTime, UINT32 responseID,
|
|||
|
||||
g_schedResponseTime = nextExpireTime;
|
||||
#if (LOSCFG_BASE_CORE_TICK_WTIMER == 0)
|
||||
g_schedTimerBase = OsGetCurrTimeCycle();
|
||||
g_schedTimerBase = OsGetCurrSchedTimeCycle();
|
||||
#endif
|
||||
HalSysTickReload(nextResponseTime);
|
||||
}
|
||||
|
@ -459,7 +453,6 @@ VOID OsSchedStart(VOID)
|
|||
OsSchedSetNextExpireTime(newTask->startTime, newTask->taskID, newTask->startTime + newTask->timeSlice);
|
||||
|
||||
PRINTK("Entering scheduler\n");
|
||||
g_schedStartTime = OsGetCurrTimeCycle();
|
||||
g_taskScheduled = 1;
|
||||
}
|
||||
|
||||
|
@ -510,7 +503,6 @@ VOID LOS_SchedTickHandler(VOID)
|
|||
|
||||
UINT32 intSave = LOS_IntLock();
|
||||
|
||||
if (g_taskScheduled) {
|
||||
if (g_schedResponseID == OS_INVALID) {
|
||||
if (g_swtmrScan != NULL) {
|
||||
needSched = g_swtmrScan();
|
||||
|
@ -520,16 +512,13 @@ VOID LOS_SchedTickHandler(VOID)
|
|||
}
|
||||
|
||||
g_schedResponseTime = OS_SCHED_MAX_RESPONSE_TIME;
|
||||
if (needSched && LOS_CHECK_SCHEDULE) {
|
||||
if (g_taskScheduled && needSched && LOS_CHECK_SCHEDULE) {
|
||||
HalTaskSchedule();
|
||||
} else {
|
||||
currTime = OsGetCurrSchedTimeCycle();
|
||||
OsTimeSliceUpdate(g_losTask.runTask, currTime);
|
||||
OsSchedUpdateExpireTime(currTime);
|
||||
}
|
||||
} else {
|
||||
OsSchedUpdateExpireTime(OsGetCurrSchedTimeCycle());
|
||||
}
|
||||
|
||||
LOS_IntRestore(intSave);
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ extern VOID platform_tick_handler(VOID);
|
|||
LITE_OS_SEC_TEXT VOID OsTickHandler(VOID)
|
||||
{
|
||||
#if (LOSCFG_BASE_CORE_TICK_WTIMER == 0)
|
||||
OsSchedUpdateTimeBase();
|
||||
OsSchedUpdateSchedTimeBase();
|
||||
#endif
|
||||
|
||||
#if (LOSCFG_BASE_CORE_TICK_HW_TIME == 1)
|
||||
|
@ -78,7 +78,7 @@ Return : current tick
|
|||
*****************************************************************************/
|
||||
LITE_OS_SEC_TEXT_MINOR UINT64 LOS_TickCountGet(VOID)
|
||||
{
|
||||
return OsGetCurrTimeCycle() / OS_CYCLE_PER_TICK;
|
||||
return OsGetCurrSchedTimeCycle() / OS_CYCLE_PER_TICK;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
|
Loading…
Reference in New Issue