git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
refactor: elf parsing utility and exec related
[lunaix-os.git]
/
lunaix-os
/
kernel
/
process
/
signal.c
diff --git
a/lunaix-os/kernel/process/signal.c
b/lunaix-os/kernel/process/signal.c
index 9933682a047e49c8c303370c7bbd571ed07c4472..e8683a1b80f46ced290f989a8e60dc8c65712276 100644
(file)
--- 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
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,
[_SIGINT] = default_sighandler_term,
+ [_SIGTERM] = default_sighandler_term,
+ [_SIGKILL] = default_sighandler_term,
+ [_SIGSEGV] = default_sighandler_term,
};
// Referenced in kernel/asm/x86/interrupt.S
};
// Referenced in kernel/asm/x86/interrupt.S
@@
-42,6
+43,10
@@
signal_dispatch()
return 0;
}
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,则忽略
if (!__current->sig_handler[sig_selected] &&
!default_handlers[sig_selected]) {
// 如果该信号没有handler,则忽略