当前位置:网站首页>1290_FreeRTOS中prvTaskIsTaskSuspended()接口实现分析
1290_FreeRTOS中prvTaskIsTaskSuspended()接口实现分析
2022-07-05 06:50:00 【grey_csdn】
全部学习汇总: GreyZhang/g_FreeRTOS: learning notes about FreeRTOS. (github.com)
前面刚刚分析完了任务的挂起操作,接下来分析一下任务是否是挂起状态的查询接口实现。一般,这种查询类的接口实现上总是简单一些。
接口也是需要配置一个宏定义使能之后才能够生效,这个跟前面的任务挂起接口实现是相似的。接下来,首先得确保传入的任务句柄是有效的。
如果任务句柄有效,那么就需要查看任务是否在挂起任务链表之中。如果不在,那么查询就直接得到结果,这个任务并没有挂起。否则,需要进一步判断。这也就说明,在FreeRTOS之中这个挂起的任务链表可能用到了多个功能之中,而这导致了链表的重用。自然,有些时候把链表增加一些类别能够让处理更加简单,但是类似的处理就无法合并了。因此,这样实现下来的内核应该更加轻巧。
如果任务在挂起任务链表只中,挂起的原因可能也是因为事件导致的挂起。如此,判断一下是否是事件导致的挂起即可,如果不是,那么这个任务在挂起任务链表中的原因就是挂起任务的操作。如此,任务就是挂起状态。
相比之前的挂起操作,这个判断任务是否挂起的操作的确是简单了一些。主要的原因其实之前也分析过,类似的属性查询一般不会改变各种状态因此不会触发任务的调度。而修改类的接口则不一样了,可能会涉及到优先级等关键的属性,随时可能触发任务调度,因此复杂度会高一些。
边栏推荐
猜你喜欢
随机推荐
Orin installs CUDA environment
Sum of two numbers, the numbers in the array are converted to decimal, added, and output inversely
Ros2 topic (VIII)
Huawei bracelet, how to add medicine reminder?
Qt项目中的日志库log4qt使用
UIO driven framework
Genesis builds a new generation of credit system
6-3 find the table length of the linked table
Some classic recursion problems
ROS2——ROS2对比ROS1(二)
inux摄像头(mipi接口)简要说明
Vant Weapp SwipeCell设置多个按钮
数据库Mysql全部
扫盲-以太网MII接口类型大全-MII、RMII、SMII、GMII、RGMII、SGMII、XGMII、XAUI、RXAUI
ROS2——功能包(六)
数学分析_笔记_第8章:重积分
Sre core system understanding
[nvidia] CUDA_ VISIBLE_ DEVICES
Dameng database all
CGroup CPU group source code analysis