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

五、列表项的初始化

 

posted @ 2022-12-27 20:51  Yoku  阅读(77)  评论(0)    收藏  举报