列表:
typedef struct xLIST
{
listFIRST_LIST_INTEGRITY_CHECK_VALUE /* 检查列表完整性,默认不开启这个功能,如使用,需要在FreeRTOSConfig.h添加 configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES 1 */
volatile UBaseType_t uxNumberOfItems; /*用来记录列表中列表项的数量*/
ListItem_t * configLIST_VOLATILE pxIndex; /*用来记录列表中列表项的数量*/
MiniListItem_t xListEnd; /*用来表示列表结束,此变量类型为 MiniListItem_t,这是一个迷你列表项*/
listSECOND_LIST_INTEGRITY_CHECK_VALUE /*检查列表完整性,默认不开启这个功能,如使用,需要在FreeRTOSConfig.h添加 configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES 1 */
} List_t;
列表项:
struct xLIST_ITEM
{
listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE /* 检查列表完整性,默认不开启这个功能,如使用,需要在FreeRTOSConfig.h添加 configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES 1*/
configLIST_VOLATILE TickType_t xItemValue; /*相当于链表的数据域*/
struct xLIST_ITEM * configLIST_VOLATILE pxNext; /*相当于链表的下一个节点*/
struct xLIST_ITEM * configLIST_VOLATILE pxPrevious; /*相当于链表的上一个节点*/
void * pvOwner; /*任务控制块指针*/
struct xLIST * configLIST_VOLATILE pxContainer; /*指向此列表项属于哪个列表的指针*/
listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE /* 检查列表完整性,默认不开启这个功能,如使用,需要在FreeRTOSConfig.h添加 configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES 1 */
};
typedef struct xLIST_ITEM ListItem_t; /* For some reason lint wants this as two separate definitions. */
/*如果以下成立,则定义一个没有 pvOwner指针和pxContainer指针的MiniListItem_t,否则与ListItem_t一样的MiniListItem_t*/
#if ( configUSE_MINI_LIST_ITEM == 1 )
struct xMINI_LIST_ITEM
{
listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE /*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */
configLIST_VOLATILE TickType_t xItemValue;
struct xLIST_ITEM * configLIST_VOLATILE pxNext;
struct xLIST_ITEM * configLIST_VOLATILE pxPrevious;
};
typedef struct xMINI_LIST_ITEM MiniListItem_t;
#else
typedef struct xLIST_ITEM MiniListItem_t;
#endif
#坑:xListEnd是指向列表项的第一个节点
评论