!267 fix: 删除延时节点后,存在时间无法有效刷新的场景
Merge pull request !267 from zhushengle/sched
This commit is contained in:
commit
4e11ded476
|
@ -51,6 +51,8 @@ typedef BOOL (*SchedScan)(VOID);
|
|||
|
||||
extern UINT64 g_sysSchedStartTime;
|
||||
|
||||
VOID OsSchedResetSchedResponseTime(UINT64 responseTime);
|
||||
|
||||
VOID OsSchedUpdateSchedTimeBase(VOID);
|
||||
|
||||
UINT64 OsGetCurrSysTimeCycle(VOID);
|
||||
|
|
|
@ -77,6 +77,13 @@ UINT32 OsSchedRealSleepTimeSet(VOID (*func)(UINT64))
|
|||
return LOS_OK;
|
||||
}
|
||||
|
||||
VOID OsSchedResetSchedResponseTime(UINT64 responseTime)
|
||||
{
|
||||
if (responseTime <= g_schedResponseTime) {
|
||||
g_schedResponseTime = OS_SCHED_MAX_RESPONSE_TIME;
|
||||
}
|
||||
}
|
||||
|
||||
#if (LOSCFG_BASE_CORE_TICK_WTIMER == 0)
|
||||
STATIC UINT64 g_schedTimerBase;
|
||||
|
||||
|
@ -530,6 +537,10 @@ BOOL OsSchedTaskSwitch(VOID)
|
|||
} else {
|
||||
endTime = OS_SCHED_MAX_RESPONSE_TIME - OS_TICK_RESPONSE_PRECISION;
|
||||
}
|
||||
|
||||
if (g_schedResponseID == runTask->taskID) {
|
||||
g_schedResponseTime = OS_SCHED_MAX_RESPONSE_TIME;
|
||||
}
|
||||
OsSchedSetNextExpireTime(newTask->startTime, newTask->taskID, endTime, TRUE);
|
||||
|
||||
return isTaskSwitch;
|
||||
|
|
|
@ -135,6 +135,7 @@ VOID OsDeleteSortLink(SortLinkList *node, SortLinkType type)
|
|||
|
||||
intSave = LOS_IntLock();
|
||||
if (node->responseTime != OS_SORT_LINK_INVALID_TIME) {
|
||||
OsSchedResetSchedResponseTime(node->responseTime);
|
||||
OsDeleteNodeSortLink(sortLinkHeader, node);
|
||||
}
|
||||
LOS_IntRestore(intSave);
|
||||
|
|
Loading…
Reference in New Issue