Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread发布
RTT1.1.1 稳定版rt_exit_critical存在的Bug?
发布于 2013-10-14 08:04:29 浏览:3856
订阅该版
我使用的官网下载下来来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); } }```
查看更多
6
个回答
默认排序
按发布时间排序
prife
2013-10-14
这家伙很懒,什么也没写!
>我使用的官网下载下来来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); > } >} >``` --- 从缩进来看,似乎是你自己不小心复制了下面这段代码进去 if (rt_thread_self() != RT_NULL); rt_schedule(); 另外,在当前开发版的代码 [https://github.com/RT-Thread/rt-thread/blob/master/src/scheduler.c](https://github.com/RT-Thread/rt-thread/ ... cheduler.c) ``` 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); rt_schedule(); } else { /* enable interrupt */ rt_hw_interrupt_enable(level); } } ```
sunnydragon
2013-10-14
这家伙很懒,什么也没写!
我自己不会去更改源码的,就是我发现问题了所以才对源码表示质疑。 你可以按照上面链接下载最新RTT1.1.1稳定版看看有没有这个问题。
haitao52198
2013-10-14
这家伙很懒,什么也没写!
官方发布的1.1.1的版本确实有这个问题,只是楼主的缩进确实和源码有点出入
sunnydragon
2013-10-14
这家伙很懒,什么也没写!
缩进问题不清楚是什么原因,我把通过Editplus打开复制过来就成这样了,可能是Editplus的问题。 另外这个问题到底对整个系统的影响有多大? 如果真是大问题,建议斑竹更新下RTT1.1.1稳定版的源码
grissiom
2013-10-14
这家伙很懒,什么也没写!
对整个系统无影响
撰写答案
登录
注册新账号
关注者
0
被浏览
3.9k
关于作者
sunnydragon
这家伙很懒,什么也没写!
提问
1
回答
3
被采纳
0
关注TA
发私信
相关问题
1
RT-Thread单内核v0.2.2正式版
2
[发布] RT-Thread RTOS v0.2.3版本
3
RT-Thread 0.3.0 beta
4
RT-Thread/STM32 0.3.0 RC1发布
5
RT-Thread/LM3S 0.3.0 RC1版发布
6
建议弄个MIPS版本的。龙芯上用。
7
开源实时操作系统RT-Thread 0.3.0正式版发布
8
关于RT-THREAD的UDP讨论
9
这里是BUG回报板块!
10
rt-thread stm32 0.3.0 rc1 网络问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【NXP-MCXA153】 定时器驱动移植
2
GD32F450 看门狗驱动适配
3
【NXP-MCXA153】看门狗驱动移植
4
RT-Thread Studio V2.2.9 Release Note
5
CherryUSB的bootuf2配置
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
9
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部