假设我想找到O_APPEND
的真正定义,它是open()
系统调用的标志之一。根据真正的定义,我指的是一个类似于0x2
的数字。
I go to LXR and do a search:
Defined in 5 files:
arch/alpha/include/uapi/asm/fcntl.h, line 10 (as a macro)
arch/mips/include/uapi/asm/fcntl.h, line 13 (as a macro)
arch/parisc/include/uapi/asm/fcntl.h, line 4 (as a macro)
arch/sparc/include/uapi/asm/fcntl.h, line 4 (as a macro)
include/uapi/asm-generic/fcntl.h, line 35 (as a macro)
但是,这里没有
x86
。为什么?当我需要查找syscalls的数字时,我遇到了同样的问题,最后我使用了一个包含生成表的3rd-party website。
如果我理解正确,系统调用会以某种方式动态生成,因此在内核针对特定体系结构进行预处理之前,不可能查找它们。
对
x86
和x86_64
的所有定义都是一样的吗?当我需要的东西不是别人在网上生成的,我该如何继续?我本可以在桌面的标题中查找它,但我使用的是x86_64
,而不是x86
。那么,对于x86体系结构,如何找到标志和模式
#define
d到的确切数字? 最佳答案
对于用户空间api(uapi),它将在include/uapi/asm-generic/fcntl.h
中定义。
路径的generic
部分意味着这是独立于体系结构的代码。
关于c - 如何获得x86 Linux内核定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44083932/