int __sigpause (int sig_or_mask, int is_sig) { if (SINGLE_THREAD_P) return do_sigpause (sig_or_mask, is_sig); int oldtype = LIBC_CANCEL_ASYNC (); int result = do_sigpause (sig_or_mask, is_sig); LIBC_CANCEL_RESET (oldtype); return result; }
int abi_sigsuspend(struct pt_regs * regs) { unsigned long * set; unsigned long oldset; old_sigset_t newset; int error; if (personality(PER_BSD)) { oldset = get_syscall_parameter (regs, 0); } else { set = (unsigned long *)get_syscall_parameter (regs, 0); error = get_user(oldset, set); if (error) return error; } newset = map_bitvec(oldset, current->exec_domain->signal_map); #ifdef CONFIG_ABI_TRACE if ((ibcs_trace & TRACE_SIGNAL) || ibcs_func_p->trace) printk("iBCS: sigsuspend oldset, newset = %lx %lx\n", oldset, newset); #endif { #if 0 extern do_sigpause(unsigned int, struct pt_regs *); return do_sigpause(newset, regs); #endif } return SYS(sigsuspend)(0, oldset, newset, regs->esi, regs->edi, regs->ebp, regs->eax, regs->xds, regs->xes, regs->orig_eax, regs->eip, regs->xcs, regs->eflags, regs->esp, regs->xss); }