fix: 延时队列为NULL时,返回的响应时间为64位最大值,导致无法更新tick timer的响应周期
问题描述: 当g_schedResponseTime = OS_SCHED_MAX_RESPONSE_TIME,且nextExpireTime =(UINT64-1时, 表示系统的延时队列已为NULL, 此时tick timer 中应该设置为最大值,但由于判断 g_schedResponseTime - nextExpireTime >= OS_CYCLE_PER_TICK,导致条件不成立,直接返回, 无法将其设置为最大值,导致tick 中断一直频繁响应。 解决方案: 将延时队列为NULL时的返回值以及idle线程的时间片修改为OS_SCHED_MAX_RESPONSE_TIME - OS_CYCLE_PER_TICK, 保证延时队列为NULL,能够正常设置tick响应的最大值。 Close #I3W1LF Change-Id: I0d09119240ae5a50ddcb0c96fb23cd3d6e70b892 Signed-off-by: zhushengle <zhushengle@huawei.com>
This commit is contained in:
@@ -42,6 +42,8 @@ extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#define OS_SCHED_MAX_RESPONSE_TIME (UINT64)(((UINT64)-1) - 1U)
|
||||
|
||||
extern UINT32 g_taskScheduled;
|
||||
typedef BOOL (*SchedScan)(VOID);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user