forked from Minki/linux
[PATCH] uml: use generic sys_rt_sigsuspend
Use the generic sys_rt_sigsuspend. Signed-off-by: Jeff Dike <jdike@addtoit.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
2fc10620e7
commit
36a7878a22
@ -185,30 +185,6 @@ long sys_sigsuspend(int history0, int history1, old_sigset_t mask)
|
||||
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)
|
||||
{
|
||||
return(do_sigaltstack(uss, uoss, PT_REGS_SP(¤t->thread.regs)));
|
||||
|
@ -34,6 +34,7 @@ extern int um_execve(const char *file, char *const argv[], char *const env[]);
|
||||
#define __ARCH_WANT_SYS_SIGPENDING
|
||||
#define __ARCH_WANT_SYS_SIGPROCMASK
|
||||
#define __ARCH_WANT_SYS_RT_SIGACTION
|
||||
#define __ARCH_WANT_SYS_RT_SIGSUSPEND
|
||||
#endif
|
||||
|
||||
#ifdef __KERNEL_SYSCALLS__
|
||||
|
Loading…
Reference in New Issue
Block a user