FreeRTOS中列表与列表项

列表:

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是指向列表项的第一个节点

列表和列表项的操作与链表的操作一样

end
  • 作者:(联系作者)
  • 更新时间:2023-09-02 12:47
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 转载声明:如果是转载栈主转载的文章,请附上原文链接
  • 公众号转载:请在文末添加作者公众号二维码(公众号二维码见右边,欢迎关注)
  • 评论

    新增邮件回复功能,回复将会通过邮件形式提醒,请填写有效的邮件!