假设我想找到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
如果我理解正确,系统调用会以某种方式动态生成,因此在内核针对特定体系结构进行预处理之前,不可能查找它们。
x86x86_64的所有定义都是一样的吗?当我需要的东西不是别人在网上生成的,我该如何继续?我本可以在桌面的标题中查找它,但我使用的是x86_64,而不是x86
那么,对于x86体系结构,如何找到标志和模式#defined到的确切数字?

最佳答案

对于用户空间api(uapi),它将在include/uapi/asm-generic/fcntl.h中定义。
路径的generic部分意味着这是独立于体系结构的代码。

关于c - 如何获得x86 Linux内核定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44083932/

10-16 06:40