当前位置:网站首页>1288_FreeRTOS中vTaskResume()接口以及中断安全版本接口实现分析
1288_FreeRTOS中vTaskResume()接口以及中断安全版本接口实现分析
2022-07-02 16:01:00 【grey_csdn】
全部学习汇总: GreyZhang/g_FreeRTOS: learning notes about FreeRTOS. (github.com)
近几次的接口分析分析的可能都是比较简单的项目,分析的时候都比较顺利。当然,也有可能是之前看的信息已经达到一定量了对现在理解这些接口有了一定的帮助。
这一次,再分析一个简单的接口vTaskResume()。

值得注意的是上面的预处理,其实是跟之前的挂起任务的接口的预处理是同一个条件。两个处理有一点逆向的意思,也很好理解为什么是同时存在。
其实,是否同时存在并不是很关键。对我来说比较有价值的信息是,这些功能在我之前接触的一些项目中其实是用不到的,因此做这方面的修改应该可以保证OS裁剪到更小的规格。
回到软件代码的设计分析本身,首先这里判断了即将恢复的任务是存在的。一般情况下,如果对于任务的处理句柄是NULL的时候通常是默认要处理当前的任务,但是这个操作在合理性分析上不成立。因此,这里增加了一个这样的检查断言。

后面的这部分代码实现其实是比较简单的,一个很重要的点是这个操作处理不该处理当前的任务。因为当前的任务肯定是在运行中的,如果要做这样的处理肯定是无意义的。因为,当前运行中的任务没有挂起的可能。另一个需要注意的点是被恢复的任务的优先级,因为优先级高的任务就绪可能会涉及到任务调度的处理。
关于真正需要恢复的任务处理,首先得讲任务从挂起链表中移除,之后将其加入到就绪任务链表。增加了之后,判断一下恢复任务的优先级,跟当前的任务优先级做一个比较之后可以知道接下来是否需要任务调度的请求处理。最后处理这个任务调度请求即可。


中断安全版本的与普通API的处理差异主要在于2点。第一,中断安全版本的屏蔽了OS托管的中断ISR,防止干扰发生。另外一点,中断中处理任务的挂起其实就不需要考虑调度器是否挂起,其实都是可以挂起的,甚至是当前的task。因此,传入的任务句柄只是看了一下是否是有效的,并没有判断是否是正在处理中的任务。而针对调度器的挂起,有一个额外的链表做临时缓冲,当调度器恢复后把任务转移到就绪任务链表。
边栏推荐
- 应广单片机开发流程需要注意哪些?
- 辉芒微IO单片机FT60F011A-RB
- No such file or directory: ‘/tmp/tmpxxx/tmpxxx.py‘
- Pfc232-sop8/14/16 should be wide-ranging and can be tape programmed with burning program
- wait_for_gap -- 从主库归档备库恢复归档
- Platform management background and business menu resource management: business permissions and menu resource management design
- 王者荣耀商城异地多活架构设计
- PMS150C应广单片机开发案例
- wait_ for_ Gap -- restore archive from primary archive to secondary Archive
- List summation [dummy+ tail interpolation + function processing list reference common pit]
猜你喜欢

科班出身,面试小公司都进不去
![[target tracking] |siamfc](/img/40/3419761d2eb7f1193b699cdd431761.png)
[target tracking] |siamfc

Daily question - inverted string

freemarker+poi实现动态生成excel文件及解析excel文件

售价仅40元,树莓派Pico开发板加入WiFi模块,刚上市就脱销

Ssm+ wechat applet to realize property management system

Does pytorch support 32 bits?

win10 kms activator

Two pieces of nature a day! Duan Fengfeng, an alumnus of the University of science and technology of China, was the third Chinese winner of the belby medal

Chapter 15 string localization and message Dictionary (1)
随机推荐
Longest non repeating subarray
如何下载微信支付证书(API证书)
Virtual lab basic experiment tutorial -7 Polarization (2)
Outsourcing for five years, abandoned
RK1126平台项目总结
Pms150c Yingguang MCU development case
515. 在每个树行中找最大值
嵌入式 ~ 介绍
原厂原装 应广单片机PMS134方案开发应用案例
【Golang | gRPC】使用gRPC实现简单远程调用
The bottom simulation implementation of vector
应广单片机003烧录器自定义封装使用技巧
Asemi rectifier bridge umb10f parameters, umb10f specifications, umb10f package
[target tracking] | data set summary
Easyai notes - deep learning
List summation [dummy+ tail interpolation + function processing list reference common pit]
aloam 代码阅读与总结
Daily question - "number of daffodils"
Redisson 高性能 Redis 分布式锁源码分析
【Zuul】com.netflix.zuul.exception.ZuulException: Hystrix Readed time out