设备树 (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()
自动放置。