1、链表节点的数据结构
struct xLIST_ITEM
{
TickType_t xItemValue; /* 辅助值,用于帮助节点做顺序排列 */
struct xLIST_ITEM * pxNext; /*指向链表下一个节点 */
struct xLIST_ITEM * pxPrevious; /* 指向链表前一个节点*/
void * pvOwner; /* 指向拥有该节点的内核对象,通常是 TCB */
void * pvContainer; /*指向该节点所在的链表 */
};
typedef struct xLIST_ITEM ListItem_t; /* 节点数据类型重定义 */
节点示意图如下图所示:
2、链表节点的初始化
链表节点ListItem_t总共有5个成员,但是初始化的时候只需要将pvContainer初始化未空即可,表示节点还没有插入到任何链表。具体实现代码如下:
void vListInitialiseItem( ListItem_t * const pxItem )
{
/*初始化该节点所在的链表为空,表示节点还没有插入任何链表 */
pxItem->pvContainer = NULL;
}
3、定义链表根节点数据结构
根节点示意图如下所示:
typedef struct xLIST
{
UBaseType_t uxNumberOfItems; /* 链表节点计数器,用于表示该链表下有多少个节点 */
ListItem_t * pxIndex;