更新开发板配置,更新版本号,添加 k_kit.c 超时检测
This commit is contained in:
@@ -270,6 +270,8 @@ typedef struct
|
||||
size_t priority_tab;
|
||||
k_work_t *curr_work;
|
||||
k_work_handle_t *yield_work;
|
||||
k_work_handle_t *sleep_work;
|
||||
k_work_handle_t *sleep_work_prev;
|
||||
k_work_q_fn work_q_resume;
|
||||
void *work_q_resume_arg;
|
||||
k_work_fn hook_entry;
|
||||
@@ -2053,6 +2055,7 @@ void k_work_sleep(k_tick_t delay_ticks)
|
||||
{
|
||||
k_work_q_t *work_q_handle;
|
||||
k_work_t *work_handle;
|
||||
k_work_handle_t *sleep_work;
|
||||
k_tick_t sys_time;
|
||||
|
||||
_ASSERT_FALSE(s_kit_init_struct.malloc == NULL, "Never use 'k_init()' to initialize");
|
||||
@@ -2066,6 +2069,31 @@ void k_work_sleep(k_tick_t delay_ticks)
|
||||
sys_time = _K_PORT->get_sys_ticks();
|
||||
_WORK->timeout = sys_time + delay_ticks;
|
||||
|
||||
sleep_work = _WORK_Q->sleep_work;
|
||||
_WORK_Q->sleep_work = _WORK;
|
||||
if (sleep_work != NULL)
|
||||
{
|
||||
if ((int)(_WORK->timeout - sleep_work->timeout) > 0 &&
|
||||
_WORK_Q->sleep_work_prev != sleep_work)
|
||||
{
|
||||
_WORK_Q->sleep_work_prev = sleep_work;
|
||||
// 当前任务的超时时间晚于前个任务的超时时间,上个任务将被阻塞
|
||||
#if (CONFIG_K_KIT_LOG_ON)
|
||||
_DBG_WRN("Work timeout conflict: previous task will be blocked %d ticks, "
|
||||
"current work '%s', previous work '%s'",
|
||||
(int)(_WORK->timeout - sleep_work->timeout),
|
||||
_WORK->work_handle->name,
|
||||
sleep_work->work_handle->name);
|
||||
#else
|
||||
_DBG_WRN("Work timeout conflict: previous task will be blocked %d ticks, "
|
||||
"current work 0x%08x, previous work 0x%08x",
|
||||
(int)(_WORK->timeout - sleep_work->timeout),
|
||||
(size_t)_WORK->work_route,
|
||||
(size_t)sleep_work->work_route);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
_k_work_q_handler_take_event_list(&_WORK_Q->event_list, sys_time);
|
||||
|
||||
do
|
||||
@@ -2174,6 +2202,8 @@ void k_work_sleep(k_tick_t delay_ticks)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_WORK_Q->sleep_work = sleep_work;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user