if (try_to_freeze(PF_FREEZE)) { 
if (try_to_freeze()) { 
static int __pdflush(struct pdflush_work *my_work){	current->flags |= PF_FLUSHER;	my_work->fn = NULL;	my_work->who = current;	INIT_LIST_HEAD(&my_work->list);	spin_lock_irq(&pdflush_lock);	nr_pdflush_threads++;	for ( ; ; ) {		struct pdflush_work *pdf;		set_current_state(TASK_INTERRUPTIBLE);		list_move(&my_work->list, &pdflush_list);		my_work->when_i_went_to_sleep = jiffies;		spin_unlock_irq(&pdflush_lock);		schedule();		if (try_to_freeze(PF_FREEZE)) {			spin_lock_irq(&pdflush_lock);			continue;		}		spin_lock_irq(&pdflush_lock);		if (!list_empty(&my_work->list)) {			printk("pdflush: bogus wakeup!\n");			my_work->fn = NULL;			continue;		}		if (my_work->fn == NULL) {			printk("pdflush: NULL work function\n");			continue;		}		spin_unlock_irq(&pdflush_lock);		(*my_work->fn)(my_work->arg0);		/*		 * Thread creation: For how long have there been zero		 * available threads?		 */		if (jiffies - last_empty_jifs > 1 * HZ) {			/* unlocked list_empty() test is OK here */			if (list_empty(&pdflush_list)) {				/* unlocked test is OK here */				if (nr_pdflush_threads < MAX_PDFLUSH_THREADS)					start_one_pdflush_thread();			}		}		spin_lock_irq(&pdflush_lock);		my_work->fn = NULL;		/*		 * Thread destruction: For how long has the sleepiest		 * thread slept?		 */		if (list_empty(&pdflush_list))			continue;		if (nr_pdflush_threads <= MIN_PDFLUSH_THREADS)			continue;		pdf = list_entry(pdflush_list.prev, struct pdflush_work, list);		if (jiffies - pdf->when_i_went_to_sleep > 1 * HZ) {			/* Limit exit rate */			pdf->when_i_went_to_sleep = jiffies;			break;					/* exeunt */		}	}	nr_pdflush_threads--;	spin_unlock_irq(&pdflush_lock);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/3e1d1d28d99dabe63c64f7f40f1ca1d646de1f73/pdflush.c/clean/mm/pdflush.c