|
@@ -2475,6 +2475,16 @@ static inline int kernel_dequeue_signal(siginfo_t *info)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
+static inline void kernel_signal_stop(void)
|
|
|
+{
|
|
|
+ spin_lock_irq(¤t->sighand->siglock);
|
|
|
+ if (current->jobctl & JOBCTL_STOP_DEQUEUED)
|
|
|
+ __set_current_state(TASK_STOPPED);
|
|
|
+ spin_unlock_irq(¤t->sighand->siglock);
|
|
|
+
|
|
|
+ schedule();
|
|
|
+}
|
|
|
+
|
|
|
extern void release_task(struct task_struct * p);
|
|
|
extern int send_sig_info(int, struct siginfo *, struct task_struct *);
|
|
|
extern int force_sigsegv(int, struct task_struct *);
|