X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/75339638bc5f21f13d3475374ecbd91065a427c3..986ce23ace2f7875a1a561bd947f435a7594146c:/lunaix-os/kernel/process/signal.c?ds=sidebyside diff --git a/lunaix-os/kernel/process/signal.c b/lunaix-os/kernel/process/signal.c index 9933682..e8683a1 100644 --- a/lunaix-os/kernel/process/signal.c +++ b/lunaix-os/kernel/process/signal.c @@ -17,9 +17,10 @@ default_sighandler_term(int signum) void* default_handlers[_SIG_NUM] = { // TODO: 添加默认handler - [_SIGINT] = default_sighandler_term, [_SIGTERM] = default_sighandler_term, - [_SIGKILL] = default_sighandler_term, [_SIGSEGV] = default_sighandler_term, [_SIGINT] = default_sighandler_term, + [_SIGTERM] = default_sighandler_term, + [_SIGKILL] = default_sighandler_term, + [_SIGSEGV] = default_sighandler_term, }; // Referenced in kernel/asm/x86/interrupt.S @@ -42,6 +43,10 @@ signal_dispatch() return 0; } + // TODO: SIG{INT|TERM|KILL|SEGV} should have highest priority. + // Terminate the process right here if any of unmaskable signal is + // set. + if (!__current->sig_handler[sig_selected] && !default_handlers[sig_selected]) { // 如果该信号没有handler,则忽略