X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/bb793d5c6918efee6a86de442463a7c9aaa4ecdd..59ecf21e36b2332f6adf2a568ef555283d8c119a:/lunaix-os/kernel/process/signal.c diff --git a/lunaix-os/kernel/process/signal.c b/lunaix-os/kernel/process/signal.c index 8c4322f..9989425 100644 --- a/lunaix-os/kernel/process/signal.c +++ b/lunaix-os/kernel/process/signal.c @@ -6,15 +6,19 @@ #include #include -LOG_MODULE("SIG") - #include +#include + +LOG_MODULE("SIG") + extern struct scheduler sched_ctx; /* kernel/sched.c */ #define UNMASKABLE (sigset(SIGKILL) | sigset(SIGTERM)) #define TERMSIG (sigset(SIGSEGV) | sigset(SIGINT) | UNMASKABLE) #define CORE (sigset(SIGSEGV)) +#define within_kstack(addr) \ + (KERNEL_STACK <= (addr) && (addr) <= KERNEL_STACK_END) static inline void signal_terminate(int errcode) @@ -57,7 +61,7 @@ signal_dispatch() ptr_t ustack = __current->ustack_top; - if ((int)(ustack - USTACK_END) < (int)sizeof(struct proc_sig)) { + if ((int)(ustack - USR_STACK) < (int)sizeof(struct proc_sig)) { // 用户栈没有空间存放信号上下文 return 0; } @@ -107,7 +111,7 @@ signal_send(pid_t pid, int signum) } else if (!pid) { proc = __current; goto send_grp; - } else if (pid < -1) { + } else if (pid < 0) { proc = get_process(-pid); goto send_grp; } else {