/*
列表
List_t ---> uxNumberOfItems //列表项个数
---> pxIndex //当前列表项指针
---> xListEnd //列表的尾节点
迷你列表项
struct xMINI_LIST_ITEM
---> xItemValue //列表项值
---> pxNext //指向下一个列表项
---> pxPrevious //指向上一个列表项
完整列表项
struct xLIST_ITEM
---> xItemValue //列表项值
---> pxNext //指向下一个列表项
---> pxPrevious //指向上一个列表项
---> pvOwner //指向所属TCB任务
---> pvContainer //指向包含该列表项的列表
*/
/* 列表和列表项
宏打开 configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES 1
列表初始化 void vListInitialise( List_t * const pxList )
列表项的初始化 void vListInitialiseItem( ListItem_t * const pxItem )
列表项的插入 void vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem ) 将列表项按列表值从小到大插入列表中
列表项末尾插入 void vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem )
列表项的删除 UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove ) 返回删除列表项以后的列表剩余列表项数目
列表项的遍历 #define listGET_OWNER_OF_NEXT_ENTRY( pxTCB, pxList ) pxTCB 下一个列表项地址 pxList 列表
列表宏
#define listSET_LIST_ITEM_OWNER(pxListItem, pxOwner) //设置列表项所属TCB
#define listGET_LIST_ITEM_OWNER(pxListItem) //获取列表项所属TCB
#define listSET_LIST_ITEM_VALUE(pxListItem, xValue) //设置列表项值
#define listGET_LIST_ITEM_VALUE(pxListItem) //获取列表项值
#define listGET_ITEM_VALUE_OF_HEAD_ENTRY(pxList) //获取列表头部列表项的值
#define listGET_HEAD_ENTRY(pxList) //获取列表头部列表项
#define listGET_NEXT(pxListItem) //获取下一个列表项
#define listGET_END_MARKER(pxList) //获取列表尾节点
#define listLIST_IS_EMPTY(pxList) //判断列表是否为空
#define listCURRENT_LIST_LENGTH(pxList) //获取列表中当前列表项的个数
#define listGET_OWNER_OF_NEXT_ENTRY(pxTCB, pxList) //将当前列表项指针指向下一个列表项,返回所属TCB
#define listGET_OWNER_OF_HEAD_ENTRY(pxList) //获取列表首节点所属TCB
#define listIS_CONTAINED_WITHIN(pxList, pxListItem) //判断列表项是否属于指定列表
#define listLIST_ITEM_CONTAINER(pxListItem) //获取列表项所在列表
#define listLIST_IS_INITIALISED(pxList) //判断列表是否已经初始化(尾节点列表项值为最大可能值0xffffffff)
*/