while (!(id_bit && comp_bit) && !last_device && count++ < dev->max_slave_count) { last = rn; 
while ( !last_device && (slave_count++ < dev->max_slave_count) ) { last_rn = rn; 
void w1_search(struct w1_master *dev){	u64 last, rn, tmp;	int i, count = 0;	int last_family_desc, last_zero, last_device;	int search_bit, id_bit, comp_bit, desc_bit;	search_bit = id_bit = comp_bit = 0;	rn = tmp = last = 0;	last_device = last_zero = last_family_desc = 0;	desc_bit = 64;	while (!(id_bit && comp_bit) && !last_device &&	       count++ < dev->max_slave_count) {		last = rn;		rn = 0;		last_family_desc = 0;		/*		 * Reset bus and all 1-wire device state machines		 * so they can respond to our requests.		 *		 * Return 0 - device(s) present, 1 - no devices present.		 */		if (w1_reset_bus(dev)) {			dev_info(&dev->dev, "No devices present on the wire.\n");			break;		}#if 1		w1_write_8(dev, W1_SEARCH);		for (i = 0; i < 64; ++i) {			/*			 * Read 2 bits from bus.			 * All who don't sleep must send ID bit and COMPLEMENT ID bit.			 * They actually are ANDed between all senders.			 */			id_bit = w1_touch_bit(dev, 1);			comp_bit = w1_touch_bit(dev, 1);			if (id_bit && comp_bit)				break;			if (id_bit == 0 && comp_bit == 0) {				if (i == desc_bit)					search_bit = 1;				else if (i > desc_bit)					search_bit = 0;				else					search_bit = ((last >> i) & 0x1);				if (search_bit == 0) {					last_zero = i;					if (last_zero < 9)						last_family_desc = last_zero;				}			} else				search_bit = id_bit;			tmp = search_bit;			rn |= (tmp << i);			/*			 * Write 1 bit to bus			 * and make all who don't have "search_bit" in "i"'th position			 * in it's registration number sleep.			 */			if (dev->bus_master->touch_bit)				w1_touch_bit(dev, search_bit);			else				w1_write_bit(dev, search_bit);		}#endif		if (desc_bit == last_zero)			last_device = 1;		desc_bit = last_zero;		w1_slave_found(dev->bus_master->data, rn);	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/6b729861831177b270a2932a13e79cb41d673146/w1.c/buggy/drivers/w1/w1.c