当前位置:网站首页>1292_FreeROS中vTaskResume()以及xTaskResumeFromISR()的实现分析
1292_FreeROS中vTaskResume()以及xTaskResumeFromISR()的实现分析
2022-07-06 13:26:00 【grey_csdn】
全部学习汇总: GreyZhang/g_FreeRTOS: learning notes about FreeRTOS. (github.com)
今天看一个比较简单的接口实现,vTaskResume()的实现。可能是前面分析的接口已经有一些沉淀了,这次看这个接口实现的时候的确是不难,毕竟里面涉及到的接口实现之前都分析过了。
软件中很多接口在我现在的配置中其实是没有奏效的,因此剩余的代码本身就不是很多。
接口最开始,断言的方式判断了任务句柄的有效性。其实,有了这个,下面的判断中的一个条件的状态就已经是确认的了,后面的判断如果在断言开启的状态下多少是有一点冗余的判断了。最基础的判断是先看挂起的任务句柄是否是当前任务的句柄,如果是,这个操作也是没有意义的。因为当前的任务正在运行,不会是挂起的状态,
处理的基本前提条件具备了,接下来就是进行挂起任务的恢复。当然,首先得确认任务是挂起状态。如果是,从挂起任务链表中移除,之后加入到就绪任务链表之中。这样,基本的处理就差不多了。
如果调度器是抢占的,这个时候还得看看被恢复的任务的优先级是否高于现在正在运行的任务优先级。如果是,那么意味着需要进行一次任务切换。
这就是这个接口的实现,比较简单。
再看中断安全版本的API,首先判断了句柄的有效性,其次看了中断优先级的有效性。这里不需要判断与当前执行的Task的关系,因为在ISR中,调度是否运行都尚未可知。
接下来,整体的处理方式跟vTaskResume()差异不大,唯一有差异的地方在于调度器挂起的时候的处理。vTaskResume()执行是在OS的调度代码之中运行的,因此调度器一定是没有挂起的。但是在ISR中,这个则不一定,调度器的状态可能有所不同。因此,多了一个调度器挂起的处理。
边栏推荐
- 缓存更新策略概览(Caching Strategies Overview)
- ACdreamoj1110(多重背包)
- 语谱图怎么看
- Nodejs教程之Expressjs一篇文章快速入门
- JS operation DOM element (I) -- six ways to obtain DOM nodes
- 字符串的使用方法之startwith()-以XX开头、endsWith()-以XX结尾、trim()-删除两端空格
- FZU 1686 龙之谜 重复覆盖
- JS learning notes OO create suspicious objects
- WEB功能测试说明
- Three schemes of SVM to realize multi classification
猜你喜欢
Z function (extended KMP)
Fastjson parses JSON strings (deserialized to list, map)
After working for 5 years, this experience is left when you reach P7. You have helped your friends get 10 offers
Summary of cross partition scheme
Shake Sound poussera l'application indépendante de plantation d'herbe "louable", les octets ne peuvent pas oublier le petit livre rouge?
Yuan Xiaolin: safety is not only a standard, but also Volvo's unchanging belief and pursuit
Quick news: the flybook players' conference is held online; Wechat payment launched "education and training service toolbox"
uni-app App端半屏连续扫码
ICML 2022 | flowformer: task generic linear complexity transformer
Internet News: Geely officially acquired Meizu; Intensive insulin purchase was fully implemented in 31 provinces
随机推荐
Aike AI frontier promotion (7.6)
Reflection operation exercise
Why does MySQL index fail? When do I use indexes?
R语言做文本挖掘 Part4文本分类
Dialogue with Jia Yangqing, vice president of Alibaba: pursuing a big model is not a bad thing
How to implement common frameworks
Comparison between multithreaded CAS and synchronized
【力扣刷题】一维动态规划记录(53零钱兑换、300最长递增子序列、53最大子数组和)
Chris LATTNER, the father of llvm: why should we rebuild AI infrastructure software
JS学习笔记-OO创建怀疑的对象
Quick news: the flybook players' conference is held online; Wechat payment launched "education and training service toolbox"
[Li Kou brushing questions] one dimensional dynamic planning record (53 change exchanges, 300 longest increasing subsequence, 53 largest subarray and)
字符串的使用方法之startwith()-以XX开头、endsWith()-以XX结尾、trim()-删除两端空格
Torch Cookbook
JS traversal array and string
First batch selected! Tencent security tianyufeng control has obtained the business security capability certification of the ICT Institute
This year, Jianzhi Tencent
缓存更新策略概览(Caching Strategies Overview)
WEB功能测试说明
Seven original sins of embedded development