FreeRTOS笔记---列表和列表项

1.列表结构体

typedef struct xLIST

{

       listFIRST_LIST_INTEGRITY_CHECK_VALUE                //用来检查数据的完整性

       configLIST_VOLATILE UBaseType_t uxNumberOfItems;//记录列表中列表项的数目

       ListItem_t * configLIST_VOLATILE pxIndex;                   //当前列表的索引号,用于遍历列表

        MiniListItem_t xListEnd;                                                //列表中最后一个列表项,表示列表的结束,其类型为MiniListItem_t

      listSECOND_LIST_INTEGRITY_CHECK_VALUE         //用来检查数据的完整性

}List_t;

2.MiniListItem_t的结构体

struct xMINI_LIST_ITEM
{
    listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE;                     //用于检查数据的完整性        
    configLIST_VOLATILE TickType_t xItemValue;                               //列表项的值
    struct xLIST_ITEM * configLIST_VOLATILE pxNext;                      //指向下一个列表项
    struct xLIST_ITEM * configLIST_VOLATILE pxPrevious;               //指向前一个列表项
};
typedef struct xMINI_LIST_ITEM MiniListItem_t;

3.列表项

struct xLIST_ITEM
{
    listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE            //检查数据完整性
    configLIST_VOLATILE TickType_t xItemValue;                       //列表项的值
    struct xLIST_ITEM * configLIST_VOLATILE pxNext;              //此列表项的指向的下一个列表项
    struct xLIST_ITEM * configLIST_VOLATILE pxPrevious;       //此列表项指向的后一个列表项
    void * pvOwner;                                                                      //此列表项归谁所有,通常指向任务控制块
    void * configLIST_VOLATILE pvContainer;                           //此列表项属于那个列表,例如就绪列表,阻塞列表
    listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE        //检查数据的完整性
};
typedef struct xLIST_ITEM ListItem_t;                    /* For some reason lint wants this as two separate definitions. */

4.列表初始化

1.列表初始化时,列表是空的,因此列表的pxindex是指向列表的尾的

2、3、4:初始化列表的xListEnd

5:列表的列表项的数目为0

初始化完成功能以后,列表如下所示:

5.初始化列表项

1.此列表项暂时不属于任何列表

6.列表项的插入

1.插入列表项的值,根据这个值才能确定要插入列表的位置

2.如果列表项的值是最大值,就把此列表项插到对尾

3.遍历列表,找到列表项插入的位置

4.把列表项插入列表

5.设置列表项归此列表

6.列表的列表项的数目加1

 

7.列表项的删除

1.确定要删除列表项的归属列表

2.通过操作链表指向删除列表项

3.如果列表的指向为要删除的列表项,则列表指向要删除列表项的前一项

4.要删除的列表项的Container指向空

5.列表的列表项数目减1

6.返回列表的列表项数目

 

7.列表的遍历

1.列表指向的列表项的pvowner记录为pxTCB;pxList是遍历的列表

2.列表的index指向下一个列表项

3.如果列表的inxdex指向了xListend,

4.列表的index指向下一个列表项->列表头的列表项

5.确认任务控制块

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值