dprintk("%s: thread exiting\n", i2c_clientname(&chip->c)); 
dprintk("%s: thread exiting\n", chip->c.name); 
static int chip_thread(void *data){	DECLARE_WAITQUEUE(wait, current);        struct CHIPSTATE *chip = data;	struct CHIPDESC  *desc = chiplist + chip->type;	daemonize("%s",i2c_clientname(&chip->c));	allow_signal(SIGTERM);	dprintk("%s: thread started\n", i2c_clientname(&chip->c));	for (;;) {		add_wait_queue(&chip->wq, &wait);		if (!chip->done) {			set_current_state(TASK_INTERRUPTIBLE);			schedule();		}		remove_wait_queue(&chip->wq, &wait);		try_to_freeze();		if (chip->done || signal_pending(current))			break;		dprintk("%s: thread wakeup\n", i2c_clientname(&chip->c));		/* don't do anything for radio or if mode != auto */		if (chip->norm == VIDEO_MODE_RADIO || chip->mode != 0)			continue;		/* have a look what's going on */		desc->checkmode(chip);		/* schedule next check */		mod_timer(&chip->wt, jiffies+2*HZ);	}	dprintk("%s: thread exiting\n", i2c_clientname(&chip->c));        complete_and_exit(&chip->texit, 0);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/fae91e72b79ba9a21f0ce7551a1fd7e8984c85a6/tvaudio.c/buggy/drivers/media/video/tvaudio.c