【发布时间】:2015-03-25 07:24:50
【问题描述】:
我在哪里可以找到STAT 系列系统调用所期望的结构的精确定义?
请注意,我指的是在汇编中调用的原始系统调用(x86_64 上的系统调用编号 4、5 和 6),而不是通常由 libc 提供的包装器.
手册页stat(2) 以及我从 linux 和 glibc 源代码中挖掘出来的内容给出了令人困惑和矛盾的结果(不同的结构字段排序、额外字段、填充)。
我确定我没有找到我应该去的地方是我的错,但我似乎无法找到我想要的信息。这导致我发布了这个问题。
澄清:我寻求的是任何给定架构上的系统调用返回的统计结构的确切定义。我知道我可以通过实验确定这些信息。实验仅限于我的特定架构。此外,我希望在某个地方记录一些与 Linux ABI 中使用的数据结构一样重要的东西。我想知道在哪里。
问题here 没有本文要求的信息。请取消将此帖子标记为重复。
【问题讨论】:
-
为什么你认为系统调用 4、5、6 代表
stat()系统调用?正如我从here 看到的,它们是__NR_io_getevents、__NR_setxattr、__NR_lsetxattr。我错过了什么吗?另外,您指的是哪个特定的内核版本? -
@SamProtsenko 这是我传递给系统调用指令的数字。在我的系统
x86_64/3.13.0上,SYS_STAT被定义为__NR_stat,而在文件中又被定义为 4:/usr/include/x86_64-linux-gnu/asm/unistd_64.h
标签: linux assembly system-calls stat