-
- return 0;
-}
-
-int send_sigqueue(int sig, struct sigqueue *q, struct task_struct *p)
-{
- unsigned long flags;
- int ret = -1;
-
- BUG_ON(!(q->flags & SIGQUEUE_PREALLOC));
-
- /*
- * The rcu based delayed sighand destroy makes it possible to
- * run this without tasklist lock held. The task struct itself
- * cannot go away as create_timer did get_task_struct().
- *
- * We return -1, when the task is marked exiting, so
- * posix_timer_event can redirect it to the group leader
- */
- if (!likely(lock_task_sighand(p, &flags)))
- goto out_err;
-
- ret = do_send_sigqueue(sig, q, p, 0);
-
- complete_signal(sig, p, 0);
-
- unlock_task_sighand(p, &flags);
-out_err:
- return ret;
-}
-
-int
-send_group_sigqueue(int sig, struct sigqueue *q, struct task_struct *p)
-{
- unsigned long flags;
- int ret;
-
- BUG_ON(!(q->flags & SIGQUEUE_PREALLOC));
-
- /* Since it_lock is held, p->sighand cannot be NULL. */
- spin_lock_irqsave(&p->sighand->siglock, flags);
-
- ret = do_send_sigqueue(sig, q, p, 1);
-
- complete_signal(sig, p, 1);
-
- spin_unlock_irqrestore(&p->sighand->siglock, flags);
-