freertosにおけるチェーンテーブルタイプ関係

1327 ワード

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では位置決めのみの役割を果たす.