3.1任务创建-列表&列表项&初始化
前言: FreeRTOS内核调度大量使用了列表(list)和列表项(list item)数据结构,对于FreeRTOS内核来说,列表就是它最基础的部分
一、列表
与C语言链表类似。

- (1)、(5)行是宏检查列表的完整性,默认不开启的,暂时无用的
- (2)中 uxNumberOfItems 为列表项的数量
- (3)中 pxIndex 记录当前列表项的索引号,用于遍历列表
- (4)中 xListEnd 用来指定列表当中最后一个列表项
可用以下示例图表示

二、列表项
- (1)、(7)中listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE与listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE用于检测列表项的完整性
- (2) xItemValue:当前列表项的值
- (3) pxNext:指向下一个列表项
- (4)pxPrevious:指向上一个列表项(实现双向列表)
- (5)pvOwner:记录列表项的拥有者(归属TCB)
- (6)pvContainer:记录列表项归属列表
三、迷你列表项
列表项的阉割版(主要是节省资源),列表中最后一个列表项使用的是迷你列表项


- (1)listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE用于检测迷你列表项的完整
- (2)xItemValue:用于记录列表项值
- (3)pxNext:指向下一个列表项
- (4)pxPrevious:指向上一个列表项
四、列表的初始化

- (1)列表索引指向列表项
- (2)设置为最大可能值
- (3)、(4)、(5)列表项xListEnd的pxNext和pxPrevious指针指向了它自己,空列表
- (6)、(7)设置为已知值,用于检测列表数据是否完整
初始化列表,由于列表项的数量为0,所以大多数据被初始化为0,各种指针指向xListEnd
五、列表项的初始化



浙公网安备 33010602011771号