【发布时间】:2021-11-07 22:06:59
【问题描述】:
在 linux 系统的 setjmp.h 库中,jmp_buf 被加密解密,我们使用 mangle 函数
*/static long int i64_ptr_mangle(long int p) {
long int ret;
asm(" mov %1, %%rax;\n"
" xor %%fs:0x30, %%rax;"
" rol $0x11, %%rax;"
" mov %%rax, %0;"
: "=r"(ret)
: "r"(p)
: "%rax"
);
return ret;
}
我需要保存上下文并更改 jmp_buffer 中的堆栈指针、基指针和程序计数器,我可以使用此函数的任何替代方法。我正在尝试构建基本线程库,但无法解决这个问题。我不能使用 ucontext.h 。
【问题讨论】:
标签: c multithreading context-switch setjmp