!276 fix: 删除延时节点后,存在时间无法有效刷新的场景

Merge pull request !276 from zhushengle/OpenHarmony-2.2-Beta2
This commit is contained in:
openharmony_ci 2021-08-23 02:14:39 +00:00 committed by Gitee
commit a4bea97b8b
3 changed files with 14 additions and 0 deletions

View File

@ -47,6 +47,8 @@ extern "C" {
extern UINT32 g_taskScheduled;
typedef BOOL (*SchedScan)(VOID);
VOID OsSchedResetSchedResponseTime(UINT64 responseTime);
VOID OsSchedUpdateSchedTimeBase(VOID);
UINT64 OsGetCurrSchedTimeCycle(VOID);

View File

@ -69,6 +69,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;
@ -497,6 +504,10 @@ BOOL OsSchedTaskSwitch(VOID)
} else {
endTime = OS_SCHED_MAX_RESPONSE_TIME - OS_CYCLE_PER_TICK;
}
if (g_schedResponseID == runTask->taskID) {
g_schedResponseTime = OS_SCHED_MAX_RESPONSE_TIME;
}
OsSchedSetNextExpireTime(newTask->startTime, newTask->taskID, endTime, TRUE);
return isTaskSwitch;

View File

@ -155,6 +155,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);