tsk->signal->flags |= SIGNAL_STOP_DEQUEUED; 
if (!(tsk->signal->flags & SIGNAL_GROUP_EXIT)) tsk->signal->flags |= SIGNAL_STOP_DEQUEUED; 
int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info){	int signr = __dequeue_signal(&tsk->pending, mask, info);	if (!signr)		signr = __dequeue_signal(&tsk->signal->shared_pending,					 mask, info); 	if (signr && unlikely(sig_kernel_stop(signr))) { 		/* 		 * Set a marker that we have dequeued a stop signal.  Our 		 * caller might release the siglock and then the pending 		 * stop signal it is about to process is no longer in the 		 * pending bitmasks, but must still be cleared by a SIGCONT 		 * (and overruled by a SIGKILL).  So those cases clear this 		 * shared flag after we've set it.  Note that this flag may 		 * remain set after the signal we return is ignored or 		 * handled.  That doesn't matter because its only purpose 		 * is to alert stop-signal processing code when another 		 * processor has come along and cleared the flag. 		 */ 		tsk->signal->flags |= SIGNAL_STOP_DEQUEUED; 	}	if ( signr &&	     ((info->si_code & __SI_MASK) == __SI_TIMER) &&	     info->si_sys_private){		/*		 * Release the siglock to ensure proper locking order		 * of timer locks outside of siglocks.  Note, we leave		 * irqs disabled here, since the posix-timers code is		 * about to disable them again anyway.		 */		spin_unlock(&tsk->sighand->siglock);		do_schedule_next_timer(info);		spin_lock(&tsk->sighand->siglock);	}	return signr;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/788e05a67c343fa22f2ae1d3ca264e7f15c25eaf/signal.c/clean/kernel/signal.c