我正在为armhf Debian上的SIGSEGV写一个信号处理程序。似乎si_trapno
的{{1}}成员在ARM上不可用(来自eglibc的siginfo_t
):
/usr/include/asm-generic/siginfo.h
我的问题是为什么?为什么没有为ARM定义此宏? MMU太愚蠢了,无法传递这种信息吗?
答案 0 :(得分:1)
不只是ARM。来自sigaction(2)
:
int si_trapno; /* Trap number that caused
hardware-generated signal
(unused on most architectures) */
快速浏览一下内核源代码,可以看出它只存在于Alpha,Sparc和Tile上。 (您正在查看的标题来自Linux内核,/usr/include/asm
,/usr/include/asm-generic
和/usr/include/linux
上的所有文件也是如此。
所以,问题不在于ARM上不存在这个字段的原因;问题是为什么它会存在于ARM中,因为正如您所看到的,它的默认状态不存在。我想在Alpha和Sparc上都添加了它,以便在同一硬件上兼容旧的Unix变种;我不知道为什么Tile决定添加它。