我想在内核模块中使用在arch/XXX/asm/include
(在我的例子中,PAGE_TABLE
)下声明/定义的东西(头文件,结构,函数或宏)。
是否可以知道所有架构上是否存在该内容?
换句话说:内核在asm/
下暴露给内核空间的可移植API到底是什么?
我可以find .
或grep -r
进入内核树,但是有更好的方法可以知道,对于每个出现的新架构,必须为要支持的架构定义该东西吗?毕竟,即使在所有现有架构上都提供了某些东西,谁能保证他们都提供这些东西不仅仅是巧合,而且它们不是强制性的?
以标题为例,在最近的源快照中,x86
包含acpi.h
,但arm
没有,但所有体系结构似乎都有page.h
。那么我怎么知道我可以使用#include <asm/page.h>
而不是acpi.h
?另一方面,page.h
预计将在所有arch上实施,因为include/linux/
在几个点使用它,include/linux
可以移植到所有架构(请确认这一点)。
答案 0 :(得分:0)
您可以yourself检查:
算法:
i386
/tmp/include/name_of_arch
目录make headers_install ARCH=name_of_arch INSTALL_HDR_PATH=/tmp/include/name_or_arch/
sha256sum
sha256
个签名的intersection。 您可以在checkstack.pl脚本中找到一些ARCH,例如: m68k
或在内核的主Makefile中。