This simplifies it and makes it more generic.
struct k_sigaction *ka;
spin_lock_irq(¤t->sighand->siglock);
- signr = dequeue_signal(¤t->blocked, &info);
+ signr = dequeue_signal(current, ¤t->blocked, &info);
spin_unlock_irq(¤t->sighand->siglock);
if (!signr)
for (;;) {
int signr;
- signr = dequeue_signal(¤t->blocked, &info);
+ signr = dequeue_signal(current, ¤t->blocked, &info);
if (!signr)
break;
unsigned long signr;
spin_lock_irq(¤t->sigmask_lock);
- signr = dequeue_signal(¤t->blocked, &info);
+ signr = dequeue_signal(current, ¤t->blocked, &info);
spin_unlock_irq(¤t->sigmask_lock);
if (!signr)
}
spin_lock_irq(¤t->sighand->siglock);
- sig = dequeue_signal(&these, &info);
+ sig = dequeue_signal(current, &these, &info);
if (!sig) {
/* None ready -- temporarily unblock those we're interested
in so that we'll be awakened when they arrive. */
timeout = schedule_timeout(timeout);
spin_lock_irq(¤t->sighand->siglock);
- sig = dequeue_signal(&these, &info);
+ sig = dequeue_signal(current, &these, &info);
current->blocked = current->real_blocked;
siginitset(¤t->real_blocked, 0);
recalc_sigpending();
}
spin_lock_irq(¤t->sighand->siglock);
- sig = dequeue_signal(&these, &info);
+ sig = dequeue_signal(current, &these, &info);
if (!sig) {
timeout = MAX_SCHEDULE_TIMEOUT;
if (uts)
timeout = schedule_timeout(timeout);
spin_lock_irq(¤t->sighand->siglock);
- sig = dequeue_signal(&these, &info);
+ sig = dequeue_signal(current, &these, &info);
current->blocked = current->real_blocked;
siginitset(¤t->real_blocked, 0);
recalc_sigpending();
spin_lock_irqsave(¤t->sighand->siglock, flags);
printk(KERN_WARNING "NBD (pid %d: %s) got signal %d\n",
current->pid, current->comm,
- dequeue_signal(¤t->blocked, &info));
+ dequeue_signal(current, ¤t->blocked, &info));
spin_unlock_irqrestore(¤t->sighand->siglock, flags);
result = -EINTR;
break;
siginfo_t sinfo;
spin_lock_irq(¤t->sighand->siglock);
- dequeue_signal(¤t->blocked,&sinfo);
+ dequeue_signal(current,¤t->blocked,&sinfo);
spin_unlock_irq(¤t->sighand->siglock);
}
}
unsigned long signr = 0;
spin_lock_irq(¤t->sighand->siglock);
- signr = dequeue_signal(¤t->blocked, &info);
+ signr = dequeue_signal(current, ¤t->blocked, &info);
spin_unlock_irq(¤t->sighand->siglock);
switch(signr) {
unsigned long signr;
spin_lock_irq(¤t_sig_lock);
- signr = dequeue_signal(¤t->blocked, &info);
+ signr = dequeue_signal(current, ¤t->blocked, &info);
spin_unlock_irq(¤t_sig_lock);
switch(signr) {
extern void proc_caches_init(void);
extern void flush_signals(struct task_struct *);
extern void flush_signal_handlers(struct task_struct *);
-extern int dequeue_signal(sigset_t *mask, siginfo_t *info);
+extern int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info);
extern void block_all_signals(int (*notifier)(void *priv), void *priv,
sigset_t *mask);
extern void unblock_all_signals(void);
*
* All callers have to hold the siglock.
*/
-int dequeue_signal(sigset_t *mask, siginfo_t *info)
+int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info)
{
- int signr = __dequeue_signal(¤t->pending, mask, info);
+ int signr = __dequeue_signal(&tsk->pending, mask, info);
if (!signr)
- signr = __dequeue_signal(¤t->signal->shared_pending,
+ signr = __dequeue_signal(&tsk->signal->shared_pending,
mask, info);
return signr;
}
continue;
}
dequeue:
- signr = dequeue_signal(mask, info);
+ signr = dequeue_signal(current, mask, info);
spin_unlock_irq(¤t->sighand->siglock);
if (!signr)
}
spin_lock_irq(¤t->sighand->siglock);
- sig = dequeue_signal(&these, &info);
+ sig = dequeue_signal(current, &these, &info);
if (!sig) {
timeout = MAX_SCHEDULE_TIMEOUT;
if (uts)
timeout = schedule_timeout(timeout);
spin_lock_irq(¤t->sighand->siglock);
- sig = dequeue_signal(&these, &info);
+ sig = dequeue_signal(current, &these, &info);
current->blocked = current->real_blocked;
siginitset(¤t->real_blocked, 0);
recalc_sigpending();
siginfo_t sinfo;
spin_lock_irq(¤t->sighand->siglock);
- dequeue_signal(¤t->blocked,&sinfo);
+ dequeue_signal(current,¤t->blocked,&sinfo);
spin_unlock_irq(¤t->sighand->siglock);
}
}