1290_FreeRTOS中prvTaskIsTaskSuspended()接口实现分析

全部学习汇总: GreyZhang/g_FreeRTOS: learning notes about FreeRTOS. (github.com)

前面刚刚分析完了任务的挂起操作,接下来分析一下任务是否是挂起状态的查询接口实现。一般,这种查询类的接口实现上总是简单一些。

接口也是需要配置一个宏定义使能之后才能够生效,这个跟前面的任务挂起接口实现是相似的。接下来,首先得确保传入的任务句柄是有效的。

如果任务句柄有效,那么就需要查看任务是否在挂起任务链表之中。如果不在,那么查询就直接得到结果,这个任务并没有挂起。否则,需要进一步判断。这也就说明,在FreeRTOS之中这个挂起的任务链表可能用到了多个功能之中,而这导致了链表的重用。自然,有些时候把链表增加一些类别能够让处理更加简单,但是类似的处理就无法合并了。因此,这样实现下来的内核应该更加轻巧。

如果任务在挂起任务链表只中,挂起的原因可能也是因为事件导致的挂起。如此,判断一下是否是事件导致的挂起即可,如果不是,那么这个任务在挂起任务链表中的原因就是挂起任务的操作。如此,任务就是挂起状态。

相比之前的挂起操作,这个判断任务是否挂起的操作的确是简单了一些。主要的原因其实之前也分析过,类似的属性查询一般不会改变各种状态因此不会触发任务的调度。而修改类的接口则不一样了,可能会涉及到优先级等关键的属性,随时可能触发任务调度,因此复杂度会高一些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值