!456 fix: tick中断处理时,无挂起任务时应更新当前运行任务的时间片, 并触发一次调度

Merge pull request !456 from zhushengle/tick
This commit is contained in:
openharmony_ci 2021-12-15 01:57:10 +00:00 committed by Gitee
commit 939414ea9a
1 changed files with 7 additions and 7 deletions

View File

@ -642,8 +642,6 @@ UINT64 LOS_SchedTickTimeoutNsGet(VOID)
VOID LOS_SchedTickHandler(VOID)
{
BOOL needSched = FALSE;
if (!g_taskScheduled) {
return;
}
@ -653,19 +651,21 @@ VOID LOS_SchedTickHandler(VOID)
if (g_schedResponseID == OS_INVALID) {
g_tickIntLock++;
if (g_swtmrScan != NULL) {
needSched = g_swtmrScan();
(VOID)g_swtmrScan();
}
needSched |= OsSchedScanTimerList();
(VOID)OsSchedScanTimerList();
g_tickIntLock--;
}
OsTimeSliceUpdate(g_losTask.runTask, g_tickStartTime);
g_losTask.runTask->startTime = OsGetCurrSchedTimeCycle();
g_schedResponseTime = OS_SCHED_MAX_RESPONSE_TIME;
if (needSched && LOS_CHECK_SCHEDULE) {
if (LOS_CHECK_SCHEDULE) {
HalTaskSchedule();
} else {
OsTimeSliceUpdate(g_losTask.runTask, g_tickStartTime);
OsSchedUpdateExpireTime(g_tickStartTime, TRUE);
OsSchedUpdateExpireTime(g_losTask.runTask->startTime, TRUE);
}
LOS_IntRestore(intSave);