uc_mcontext定义在哪里? [英] Where is uc_mcontext definition?

查看:24
本文介绍了uc_mcontext定义在哪里?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

sa_sigaction的第三个参数是指向与计算机相关的struct ucontext的指针,我想知道可以从struct ucontext转储什么。

void (*sa_sigaction)(int signum, siginfo_t *info, void *ucontext)

struct ucontext {
        unsigned long     uc_flags;
        struct ucontext  *uc_link;
        stack_t           uc_stack;
        struct sigcontext uc_mcontext;
        sigset_t          uc_sigmask;   /* mask last for extensibility */
};

尤其是通过uc_mcontext(如果您能告诉我在哪里可以了解其他数据成员的更多信息,那就太好了),因为人们通常使用uc_mcontext这样转储主机寄存器,

ucontext->uc_mcontext.gregs[REG_EIP]

因为uc_mcontext类型是struct sigcontext,所以我在arch/x86/include/asm/sigcontext.h中查看struct sigcontext

struct sigcontext {
        unsigned short gs, __gsh;
        unsigned short fs, __fsh;
        unsigned short es, __esh;
        unsigned short ds, __dsh;

        ... snip ...
};
是否正确,因为我在struct sigcontext中看不到gregs?欢迎任何建议。

推荐答案

您现在看到的是sigcontext的linux内核定义。您应该正在查看struct ucontext的C库头文件。它在/usr/include/sys/ucontext.h文件中定义

请注意,它是特定于体系结构的-例如,x86和PPC的字段完全不同!

这篇关于uc_mcontext定义在哪里?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆