内核中有很多双向列表,这些列表可以挂接很多列表项,每条列表都有一个确定的尾节点、列表当前指针、列表项个数
/* 列表结构体 */
typedef struct xLIST
{
listFIRST_LIST_INTEGRITY_CHECK_VALUE
configLIST_VOLATILE UBaseType_t uxNumberOfItems; /* 列表项个数 */
ListItem_t *configLIST_VOLATILE pxIndex; /* 当前列表项指针 */
MiniListItem_t xListEnd; /* 列表的尾节点 */
listSECOND_LIST_INTEGRITY_CHECK_VALUE
}List_t;
列表尾节点中的有效信息包括:列表项的值、next指针、previous指针
/* 迷你列表项结构体 */
struct xMINI_LIST_ITEM
{
listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE
configLIST_VOLATILE TickType_t xItemValue; /* 列表项的值 */
struct xLIST_ITEM *configLIST_VOLATILE pxNext; /* next指针指向后一个列表项 */
struct xLIST_ITEM *configLIST_VOLATILE pxPrevious; /* previous指针指向前一个列表项 */
};
typedef struct xMINI_LIST_ITEM MiniListItem_t;
列表项的内容包括:列表项的值、next指针、previous指针、所属TCB指针、正在挂接的列表指针
/* 列表项结构体 */
struct