FreeRTOS Kernel V10.3.1
FreeRTOS 的 list.c / list.h 文件中有 3 个数据结构、2 个初始化函数、2 个插入函数、1 个移除函数和一些宏函数,链表是 FreeRTOS 中的重要数据结构,下述 “1、数据结构” 和 “2、操作链表” 两个小节内容主要对其原理进行讲解
1、数据结构
1.1、xLIST_ITEM
链表项,即节点,通常用链表项来表示一个任务
struct xLIST_ITEM { // 检验一个 链表项 数据是否完整 listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE // 排序值 configLIST_VOLATILE TickType_t xItemValue; // 下一个 链表项 struct xLIST_ITEM * configLIST_VOLATILE pxNext; // 前一个 链表项 struct xLIST_ITEM * configLIST_VOLATILE pxPrevious; // 记录此 链表项 归谁拥有,通常是 TCB (任务控制块) void * pvOwner; // 拥有该 链表项 的 链表 struct xLIST * configLIST_VOLATILE pxContainer; // 检验一个 链表项 数据是否完整 listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE }; typedef struct xLIST_ITEM ListItem_t;
