struct xLIST_ITEM
{
TickType_t xItemValue; /*< 链表节点的值。 在大多数情况下,它用于按降序对列表进行排序 */
struct xLIST_ITEM * pxNext; /*< 指向链表中下一个 ListItem_t */
struct xLIST_ITEM * pxPrevious; /*< 指向链表中上一个 ListItem_t */
void * pvOwner; /*< 指向包含列表项的对象(通常是TCB)的指针。 因此,在包含列表项的对象与列表项本身之间存在双向链接。 */
void * pvContainer; /*< 指向放置此列表项的列表的指针(如果有)。 */
};
struct xMINI_LIST_ITEM
{
configLIST_VOLATILE TickType_t xItemValue;
struct xLIST_ITEM * configLIST_VOLATILE pxNext;
struct xLIST_ITEM * configLIST_VOLATILE pxPrevious;
};
typedef struct xLIST
{
UBaseType_t uxNumberOfItems; /*< 当前列表包含的项目数量 >*/
ListItem_t * pxIndex; /*< 用于遍历列表。 指向通过调用listGET_OWNER_OF_NEXT_ENTRY()返回的最后一项。 */
MiniListItem_t xListEnd; /*< 列表项目包含最大可能的项目值,这意味着它始终位于列表的末尾,因此用作标记。 */
} List_t;
以上三个结构体是 FreeRTOS用的链表的三个格式。
void vListInitialise( List_t * const pxList )
{
/* The list structure contai