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只起到定位作用。


你可能感兴趣的:(freertos中链表类型关系)