freertos中链表类型关系

    freertos中的任务调度,延时调度主要算法用到了链表。 搞懂链表算法需要理清处以下几个链表类型的关系。

1. ListItem_t指针:

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;   //反向获取上一层的list指针
	listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE
};

它是真正实现链表算法的结构体。

2.xLIST指针

typedef struct xLIST
{
	listFIRST_LIST_INTEGRITY_CHECK_VALUE
	configLIST_VOLATILE UBaseType_t uxNumberOfItems;   //当前链表元素数
	ListItem_t * configLIST_VOLATILE pxIndex;          //对应的item结构
	MiniListItem_t xListEnd;			   //链表绝对位置
	listSECOND_LIST_INTEGRITY_CHECK_VALUE
} List_t;

它的作用就是主要是管理:

1)可知当前的链表数

2)能够进行链表的排序和插入。

3. 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;
};
精简版ListItem_t,用于xListEnd只起到定位作用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值