Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
嵌入式技术综合讨论
rt_thread_yield的修改,不知道是否更优
发布于 2012-08-18 12:50:19 浏览:2964
订阅该版
RTT的调度是时间片到了将当前任务放到队尾(先从对头删除,再插入队尾),然后继续使用队列头作为to。 听了默存的指点,说可以不删除和插入操作,直接取当前任务的next就可以了。于是我看了代码后做出以下改动,还请各位丢砖。 [s:188] ```rt_err_t rt_thread_yield(void) { register rt_base_t level; struct rt_thread *thread; /* disable interrupt */ level = rt_hw_interrupt_disable(); /* set to current thread */ thread = rt_current_thread; /* if the thread stat is READY and on ready queue list */ if (thread->stat == RT_THREAD_READY && thread->tlist.next != thread->tlist.prev) { #if 0 /* remove thread from thread list */ rt_list_remove(&(thread->tlist)); /* put thread to end of ready queue */ rt_list_insert_before(&(rt_thread_priority_table[thread->current_priority]), &(thread->tlist)); /* enable interrupt */ rt_hw_interrupt_enable(level); rt_schedule(); #else if (thread->tlist.next != &(rt_thread_priority_table[thread->current_priority])) { rt_current_thread = rt_list_entry(rt_thread_priority_table[thread->current_priority].next, struct rt_thread, tlist); } else { rt_current_thread = rt_list_entry(rt_thread_priority_table[thread->current_priority].next->next, struct rt_thread, tlist); } if (rt_interrupt_nest == 0) { rt_hw_context_switch((rt_uint32_t)&thread->sp, (rt_uint32_t)&rt_current_thread->sp); } else { RT_DEBUG_LOG(RT_DEBUG_SCHEDULER, ("switch in interrupt ")); rt_hw_context_switch_interrupt((rt_uint32_t)&thread->sp, (rt_uint32_t)&rt_current_thread->sp); } /* enable interrupt */ rt_hw_interrupt_enable(level); #endif return RT_EOK; } /* enable interrupt */ rt_hw_interrupt_enable(level); return RT_EOK; }```
查看更多
1
个回答
默认排序
按发布时间排序
撰写答案
登录
注册新账号
关注者
0
被浏览
3k
关于作者
geniusgogo
这家伙很懒,什么也没写!
提问
42
回答
157
被采纳
7
关注TA
发私信
相关问题
1
开新板块了! 迅速占领第一帖!
2
有想玩点阵做电子钟的没?手上有屏
3
LED点阵屏硬件保护研究笔记
4
USB相关、Android、Arduino
5
Arduino即将发布ARM平台新产品
6
关于开关电源的同步整流技术
7
rt_thread_wizard使用教程
8
[转]开源如何盈利
9
FM3系列MCU的IO操作笔记。
10
转一个xoolhaha 的寻一起开发的帖子
推荐文章
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
HC32F4A0 SD卡挂载及热插拔的实现
2
vscode插件 - RT-Thread Studio项目助手 | 跨平台开发
3
Console串口使用说明
4
WATCHDOG设备驱动开发
5
【NXP-MCXA153】eFlexPWM驱动移植
热门标签
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
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
812
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部