[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:
committed by
Linus Torvalds
parent
2fc10620e7
commit
36a7878a22
@@ -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)));
|
||||||
|
@@ -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_SIGPENDING
|
||||||
#define __ARCH_WANT_SYS_SIGPROCMASK
|
#define __ARCH_WANT_SYS_SIGPROCMASK
|
||||||
#define __ARCH_WANT_SYS_RT_SIGACTION
|
#define __ARCH_WANT_SYS_RT_SIGACTION
|
||||||
|
#define __ARCH_WANT_SYS_RT_SIGSUSPEND
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __KERNEL_SYSCALLS__
|
#ifdef __KERNEL_SYSCALLS__
|
||||||
|
Reference in New Issue
Block a user