X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/bb793d5c6918efee6a86de442463a7c9aaa4ecdd..9eed27f6f2f002145667fb4abfc5e476b53630e5:/lunaix-os/kernel/process/signal.c diff --git a/lunaix-os/kernel/process/signal.c b/lunaix-os/kernel/process/signal.c index 8c4322f..c4e1662 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; }