freertosにおけるチェーンテーブルタイプ関係
1327 ワード
freertosでのタスクスケジューリング,遅延スケジューリングの主なアルゴリズムはチェーンテーブルを用いた.チェーンテーブルアルゴリズムを理解するには、以下のチェーンテーブルタイプの関係を整理する必要があります.
1. ListItem_tポインタ:
これは本当にチェーンテーブルアルゴリズムを実現する構造体です.
2.xLISTポインタ
その役割は主に管理です.
1)現在のチェーンテーブル数がわかる
2)チェーンテーブルの並べ替えや挿入が可能である.
3. MiniListItem_t
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では位置決めのみの役割を果たす.