裝置樹 (OF) API¶
KUnit 裝置樹 API 用於測試依賴於裝置樹 (of_*) 的程式碼。
-
int __of_overlay_apply_kunit(struct kunit *test, u8 *overlay_begin, const u8 *overlay_end)¶
測試託管的
of_overlay_fdt_apply()變體
引數
struct kunit *test測試上下文
u8 *overlay_begin要應用的覆蓋的起始地址
const u8 *overlay_end要應用的覆蓋的結束地址
描述
這主要是內部 API。有關更容易使用的包裝器,請參見 of_overlay_apply_kunit()。
與 of_overlay_fdt_apply() 類似,但覆蓋由測試用例管理,並在測試用例結束後使用 of_overlay_remove() 自動刪除。
返回
成功時返回 0,失敗時返回負的 errno
-
of_overlay_apply_kunit¶
of_overlay_apply_kunit (test, overlay_name)
測試託管的
of_overlay_fdt_apply(),用於內建覆蓋
引數
test測試上下文
overlay_name要應用的覆蓋的名稱
描述
此宏用於應用使用 scripts/Makefile.lib 中的 cmd_dt_S_dtbo 規則構建的裝置樹覆蓋,該覆蓋已編譯到核心映像或 KUnit 測試模組中。 測試完成後,將自動刪除覆蓋。
需要裝置樹節點的單元測試應使用 Makefile 中的 overlay_name.dtbo.o 與其單元測試一起編譯一個覆蓋檔案,然後在測試期間載入該覆蓋。 overlay_name 與沒有 dtbo 副檔名的覆蓋的檔名匹配。 如果未啟用 CONFIG_OF_OVERLAY,則將跳過 test。
在 Makefile 中
obj-$(CONFIG_OF_OVERLAY_KUNIT_TEST) += overlay_test.o kunit_overlay_test.dtbo.o
在測試中
static void of_overlay_kunit_of_overlay_apply(struct kunit *test)
{
struct device_node *np;
KUNIT_ASSERT_EQ(test, 0,
of_overlay_apply_kunit(test, kunit_overlay_test));
np = of_find_node_by_name(NULL, "test-kunit");
KUNIT_EXPECT_NOT_ERR_OR_NULL(test, np);
of_node_put(np);
}
返回
成功時返回 0,失敗時返回負的 errno。
引數
struct kunit *test如果未填充根節點,則跳過測試
-
int of_overlay_fdt_apply_kunit(struct kunit *test, void *overlay_fdt, u32 overlay_fdt_size, int *ovcs_id)¶
測試託管的
of_overlay_fdt_apply()
引數
struct kunit *test測試上下文
void *overlay_fdt要應用的裝置樹覆蓋
u32 overlay_fdt_size**overlay_fdt** 的大小(以位元組為單位)
int *ovcs_id覆蓋的識別符號,用於刪除覆蓋
描述
與 of_overlay_fdt_apply() 類似,但覆蓋由測試用例管理,並在測試用例結束後使用 of_overlay_remove() 自動刪除。
返回
成功時返回 0,失敗時返回負的 errno
-
void of_node_put_kunit(struct kunit *test, struct device_node *node)¶
測試託管的
of_node_put()
引數
struct kunit *test測試上下文
struct device_node *node要傳遞給
of_node_put()的節點
描述
與 of_node_put() 類似,但該節點由測試用例管理,並在測試用例結束後使用 of_node_put() 自動放置。