这个算 RTT1.1.1 存在的Bug?
我使用的官网下载下来来RTT1.1.1 稳定版 地址:http://www.rt-thread.org/node/71,在scheduler.c文件中的rt_exit_critical方法发现一处不理解的地方我个人觉得 if (rt_thread_self() != RT_NULL); 这句判断语句后面直接多了一个分号,有点不合乎常理,显然没有起到判断的作用,请大家给分析下算不算Bug呢
源代码如下:/**
* This function will unlock the thread scheduler.
*/
void rt_exit_critical(void)
{
register rt_base_t level;
/* disable interrupt */
level = rt_hw_interrupt_disable();
rt_scheduler_lock_nest --;
if (rt_scheduler_lock_nest <= 0)
{
rt_scheduler_lock_nest = 0;
/* enable interrupt */
rt_hw_interrupt_enable(level);
if (rt_thread_self() != RT_NULL);
rt_schedule();
}
else
{
/* enable interrupt */
rt_hw_interrupt_enable(level);
}
} 根据该函数的功能,推测出你说的的确是个BUG,不过我不是管理员,能找出错误你很了不起,大家感谢你。 if (rt_thread_self() != RT_NULL) 两种可能
1 是句废话
2 bug
斑竹不在吗? git 中的主线版本已经去掉了那一行,参考 391行。
https://github.com/RT-Thread/rt-thread/blob/master/src/scheduler.c
页:
[1]