try_to_freeze(PF_FREEZE); 
try_to_freeze(); 
static int airo_thread(void *data) {	struct net_device *dev = data;	struct airo_info *ai = dev->priv;	int locked;		daemonize("%s", dev->name);	allow_signal(SIGTERM);	while(1) {		if (signal_pending(current))			flush_signals(current);		/* make swsusp happy with our thread */		try_to_freeze(PF_FREEZE);		if (test_bit(JOB_DIE, &ai->flags))			break;		if (ai->flags & JOB_MASK) {			locked = down_interruptible(&ai->sem);		} else {			wait_queue_t wait;			init_waitqueue_entry(&wait, current);			add_wait_queue(&ai->thr_wait, &wait);			for (;;) {				set_current_state(TASK_INTERRUPTIBLE);				if (ai->flags & JOB_MASK)					break;				if (ai->expires) {					if (time_after_eq(jiffies,ai->expires)){						set_bit(JOB_AUTOWEP,&ai->flags);						break;					}					if (!signal_pending(current)) {						schedule_timeout(ai->expires - jiffies);						continue;					}				} else if (!signal_pending(current)) {					schedule();					continue;				}				break;			}			current->state = TASK_RUNNING;			remove_wait_queue(&ai->thr_wait, &wait);			locked = 1;		}		if (locked)			continue;		if (test_bit(JOB_DIE, &ai->flags)) {			up(&ai->sem);			break;		}		if (ai->power || test_bit(FLAG_FLASHING, &ai->flags)) {			up(&ai->sem);			continue;		}		if (test_bit(JOB_XMIT, &ai->flags))			airo_end_xmit(dev);		else if (test_bit(JOB_XMIT11, &ai->flags))			airo_end_xmit11(dev);		else if (test_bit(JOB_STATS, &ai->flags))			airo_read_stats(ai);		else if (test_bit(JOB_WSTATS, &ai->flags))			airo_read_wireless_stats(ai);		else if (test_bit(JOB_PROMISC, &ai->flags))			airo_set_promisc(ai);#ifdef MICSUPPORT		else if (test_bit(JOB_MIC, &ai->flags))			micinit(ai);#endif		else if (test_bit(JOB_EVENT, &ai->flags))			airo_send_event(dev);		else if (test_bit(JOB_AUTOWEP, &ai->flags))			timer_func(dev);	}	complete_and_exit (&ai->thr_exited, 0);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/3e1d1d28d99dabe63c64f7f40f1ca1d646de1f73/airo.c/clean/drivers/net/wireless/airo.c