X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/fa57b4a05aa12d594f40e0894e0ac6f810a7095c..0b6fbe304e14f104a9e8cf43a09bf60709d44207:/lunaix-os/kernel/process/signal.c diff --git a/lunaix-os/kernel/process/signal.c b/lunaix-os/kernel/process/signal.c index 9a9a349..9933682 100644 --- a/lunaix-os/kernel/process/signal.c +++ b/lunaix-os/kernel/process/signal.c @@ -1,6 +1,3 @@ -#include -#include -#include #include #include #include @@ -8,6 +5,8 @@ #include #include +#include + extern struct scheduler sched_ctx; /* kernel/sched.c */ void __USER__ @@ -23,7 +22,6 @@ void* default_handlers[_SIG_NUM] = { [_SIGINT] = default_sighandler_term, }; -volatile struct proc_sigstate __temp_save; // Referenced in kernel/asm/x86/interrupt.S void* signal_dispatch() @@ -80,6 +78,7 @@ signal_dispatch() 解决办法就是先吧intr_ctx拷贝到一个静态分配的区域里,然后再注入到用户栈。 */ + static volatile struct proc_sigstate __temp_save; __temp_save.proc_regs = __current->intr_ctx; memcpy(__temp_save.fxstate, __current->fxstate, 512);