|
@@ -185,30 +185,6 @@ long sys_sigsuspend(int history0, int history1, old_sigset_t mask)
|
|
return -ERESTARTNOHAND;
|
|
return -ERESTARTNOHAND;
|
|
}
|
|
}
|
|
|
|
|
|
-long sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize)
|
|
|
|
-{
|
|
|
|
- sigset_t newset;
|
|
|
|
-
|
|
|
|
- /* XXX: Don't preclude handling different sized sigset_t's. */
|
|
|
|
- if (sigsetsize != sizeof(sigset_t))
|
|
|
|
- return -EINVAL;
|
|
|
|
-
|
|
|
|
- if (copy_from_user(&newset, unewset, sizeof(newset)))
|
|
|
|
- return -EFAULT;
|
|
|
|
- sigdelsetmask(&newset, ~_BLOCKABLE);
|
|
|
|
-
|
|
|
|
- spin_lock_irq(¤t->sighand->siglock);
|
|
|
|
- current->saved_sigmask = current->blocked;
|
|
|
|
- current->blocked = newset;
|
|
|
|
- recalc_sigpending();
|
|
|
|
- spin_unlock_irq(¤t->sighand->siglock);
|
|
|
|
-
|
|
|
|
- current->state = TASK_INTERRUPTIBLE;
|
|
|
|
- schedule();
|
|
|
|
- set_thread_flag(TIF_RESTORE_SIGMASK);
|
|
|
|
- return -ERESTARTNOHAND;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
long sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss)
|
|
long sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss)
|
|
{
|
|
{
|
|
return(do_sigaltstack(uss, uoss, PT_REGS_SP(¤t->thread.regs)));
|
|
return(do_sigaltstack(uss, uoss, PT_REGS_SP(¤t->thread.regs)));
|