FreeRTOS列表與列表項分析

2021-10-06 14:37:27 字數 1141 閱讀 7837

本部落格中部分,來自《freertos開發手冊》(正點原子)。

列表與列表項是freertos中的之中的資料結構。列表的底層實際是使用鍊錶實現的。乙個簡單的列表與列表項如下圖:

需要注意的是,列表並不是鍊錶,也不是列表項的集合,而是乙個結構體。列表的定義如下:

typedef

struct xlist

list_t;

列表的第一項和最後一項是用來檢查列表完整性的,當configuse_list_data_integrity_check_bytes被置為1的時候,會向這兩個變數寫入0x5a5a5a5aul,預設不開啟。那麼我們將剩下的三項圖表化:

第一項是當前列表共有多少列表項(迷你列表項不計入其中)。第二個是乙個列表項指標。第三項是迷你列表項,那麼從資料結構將上圖轉化為:

列表項定義如下:

struct xlist_item

;

同樣的,第一項和最後一項是用來檢查列表完整性的。

列表與列表項底層是用鍊錶實現的,它們的操作與鍊錶相同。

列表項插入共有兩個函式vlistinsertendvlistinsert。兩個函式的區別是,第乙個函式會把列表項插入到迷你列表項之前。而第二個函式會按照列表項中的xitemvalue將列表項從小到大插入到適當的位置。

其餘操作與雙向鍊錶操作相同,這裡不再贅述,會和列表項刪除操作一起給出圖示。

列表項刪除與雙向鍊錶刪除操作相同。這裡給出圖示:

FreeRTOS之列表與列表項

uxnumberofitems 記錄列表項的數量 pxindex 記錄當前列表項的索引號 xlistend 表示列表的結束 xitemvalue 列表項的值 pxnext 指向下乙個列表項 pxprevious 指向上乙個列表項 pvowner 記錄當前列表歸 誰 所有 pvcontainer 記錄...

FreeRTOS筆記 列表和列表項

1.列表結構體 2.minilistitem t的結構體 3.列表項 4.列表初始化 1.列表初始化時,列表是空的,因此列表的pxindex是指向列表的尾的 2 3 4 初始化列表的xlistend 5 列表的列表項的數目為0 初始化完成功能以後,列表如下所示 5.初始化列表項 1.此列表項暫時不屬...

FreeRTOS 列表和列表項原始碼分析

前面在排程器啟動之前先建立了兩個任務,乙個啟動任務乙個空閒任務,然後排程器會跳到啟動任務去執行。在分析任務建立的原始碼之前,需要先分析一下列表和列表項,建立任務實際上就是初始化任務的各個成員變數 即初始化任務控制塊的成員 在初始化完後這個任務就會進入到就緒狀態,等待排程器來執行它,其中任務控制塊就有...