sigaction: support for SA_RESETHAND on x86_64

refs #1031
This commit is contained in:
Ken Sato
2018-02-22 11:55:32 +09:00
parent 98df469d29
commit 523a066245
2 changed files with 96 additions and 0 deletions

View File

@ -809,6 +809,11 @@ do_signal(unsigned long rc, void *regs0, struct thread *thread, struct sig_pendi
regs->gpr.rip = (unsigned long)k->sa.sa_handler;
regs->gpr.rsp = (unsigned long)usp;
// check signal handler is ONESHOT
if (k->sa.sa_flags & SA_RESETHAND) {
k->sa.sa_handler = SIG_DFL;
}
if(!(k->sa.sa_flags & SA_NODEFER))
thread->sigmask.__val[0] |= pending->sigmask.__val[0];
kfree(pending);