提交 e9e8e3f3 编写于 作者: G Grissiom

TC: do not use rt_sem_trytake to clean the sem

There can be a race condition that the sem has alread been detached
after we did the cleanup. Besides, there is a RT_IPC_CMD_RESET command
in rt_sem_control which is more clear in setting the sem values.
上级 cb347f5a
......@@ -40,6 +40,8 @@ void tc_thread_entry(void* parameter)
tick = index->func();
if (tick > 0)
{
/* Make sure we are going to be blocked. */
rt_sem_control(&_tc_sem, RT_IPC_CMD_RESET, 0);
rt_sem_take(&_tc_sem, tick * _tc_scale);
if (_tc_cleanup != RT_NULL)
......@@ -49,8 +51,6 @@ void tc_thread_entry(void* parameter)
_tc_cleanup = RT_NULL;
}
rt_sem_trytake(&_tc_sem);/* by nl1031 */
if (_tc_stat & TC_STAT_FAILED)
rt_kprintf("TestCase[%s] failed\n", _tc_current);
else
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册