在所有架构上都可以使用asm头/符号/宏的Linux内核?

时间:2013-07-16 10:42:51

标签: linux-kernel

我想在内核模块中使用在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可以移植到所有架构(请确认这一点)。

1 个答案:

答案 0 :(得分:0)

您可以yourself检查:

算法:

  1. 所有可能的ARCH的初始数组,例如i386
  2. 每个拱门的初始/tmp/include/name_of_arch目录
  3. 为每个ARCH:make headers_install ARCH=name_of_arch INSTALL_HDR_PATH=/tmp/include/name_or_arch/
  4. 进行迭代
  5. 对于每个arch文件夹中的每个文件:compute sha256sum
  6. 查找所有公共sha256个签名的intersection
  7. 您可以在checkstack.pl脚本中找到一些ARCH,例如: m68k或在内核的主Makefile中。