嵌入式开发学习日志46——FreeRTOS之列表与列表项

在FreeRTOS中大量应用到了列表以及列表项的相关内容,因此想要深入了解FreeRTOS,掌握列表以及列表项是必不可少的一步。

列表以及列表项其实都算作FreeRTOS的一种数据结构,用来专门跟踪任务。

与列表有关的内容都放在了list.c和list.h文件中,而一般的列表结构包含三个内容:Uxnumberofitems,用来表示列表项的数量;pxindex,一般指向的是列表的头部,也可用来进行对列表的遍历操作,每调用一次该变量就会指向下一个列表项;xlistend,指向列表的结尾。

列表项就是存放在列表中的项目,可以分为普通列表项以及迷你列表项。

普通列表项中有两个可以视作指针的重要成员,一个是pvcontainer,这是决定列表项属于哪个列表的;另一个就是pvowner,它决定了列表属于哪个任务控制块。当然,除了这两个成员外,普通列表项还有其他成员,例如记录列表项值的xItemValue,以及指向上一个和下一个列表项的pxPrevious和pxNext。

而迷你列表项就要简单多了,它除去了pvcontainer以及pvowner,保留了其他成员。从作用上看,其实迷你和普通列表项并没有太大区别,但是由于有时候并不需要列表项的所有功能,为了节省足够的空间,就会使用迷你列表项。

而至于列表以及列表项的初始化以及插入等操作,这一部分的源码是十分复杂的,有兴趣的读者可以自行去查阅,就当看小说了,在这里就不多赘述。

而在初步了解完任务和列表之后,下一章就要进行两者的创建与相互关联了。

相关推荐
治愈系贝壳34 分钟前
ARM --- day 6 时钟
linux·arm开发·学习
minglie11 小时前
zynq高频小数据量PS闭环的三个实验-第0课:目的和目标
学习
劈星斩月2 小时前
监督学习算法 之 决策树
学习·算法·决策树
AOwhisky2 小时前
Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解
开发语言·笔记·python·学习·云计算
woshihuanglaoshi2 小时前
数据迁移与版本管理 - Flutter在鸿蒙平台实现数据库升级策略
数据库·学习·flutter·华为·harmonyos·鸿蒙·鸿蒙系统
世人万千丶12 小时前
参数管理_Flutter在鸿蒙平台路由参数最佳实践
学习·flutter·华为·harmonyos·鸿蒙
遇乐的果园15 小时前
前端学习笔记-vue加载渲染优化
前端·笔记·学习
遇乐的果园17 小时前
前端学习笔记-vue状态管理优化
前端·笔记·学习
从零开始的代码生活_17 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
可乐奶茶sky17 小时前
AI Agent 学习
人工智能·学习