wait_event_interruptible_timeout(thread->wqueue, test_bit(THREAD_WAKEUP, &thread->flags) || kthread_should_stop(), thread->timeout); 
wait_event_timeout(thread->wqueue, test_bit(THREAD_WAKEUP, &thread->flags) || kthread_should_stop(), thread->timeout); 
static int md_thread(void * arg){	mdk_thread_t *thread = arg;	/*	 * md_thread is a 'system-thread', it's priority should be very	 * high. We avoid resource deadlocks individually in each	 * raid personality. (RAID5 does preallocation) We also use RR and	 * the very same RT priority as kswapd, thus we will never get	 * into a priority inversion deadlock.	 *	 * we definitely have to have equal or higher priority than	 * bdflush, otherwise bdflush will deadlock if there are too	 * many dirty RAID5 blocks.	 */	allow_signal(SIGKILL);	complete(thread->event);	while (!kthread_should_stop()) {		void (*run)(mddev_t *);		wait_event_interruptible_timeout(thread->wqueue,						 test_bit(THREAD_WAKEUP, &thread->flags)						 || kthread_should_stop(),						 thread->timeout);		try_to_freeze();		clear_bit(THREAD_WAKEUP, &thread->flags);		run = thread->run;		if (run)			run(thread->mddev);	}	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/787453c2397edcc3261efebb661739acd8c38547/md.c/clean/drivers/md/md.c