if (!nodemgr_check_irm_capability(host, reset_cycles)) { 
if (!nodemgr_check_irm_capability(host, reset_cycles) || !nodemgr_do_irm_duties(host, reset_cycles)) { 
static int nodemgr_host_thread(void *__hi){	struct host_info *hi = (struct host_info *)__hi;	struct hpsb_host *host = hi->host;	int reset_cycles = 0;	/* No userlevel access needed */	daemonize(hi->daemon_name);	/* Setup our device-model entries */	nodemgr_create_host_dev_files(host);	/* Sit and wait for a signal to probe the nodes on the bus. This	 * happens when we get a bus reset. */	while (1) {		unsigned int generation = 0;		int i;		if (down_interruptible(&hi->reset_sem) ||		    down_interruptible(&nodemgr_serialize)) {			if (try_to_freeze())				continue;			printk("NodeMgr: received unexpected signal?!\n" );			break;		}		if (hi->kill_me) {			up(&nodemgr_serialize);			break;		}		/* Pause for 1/4 second in 1/16 second intervals,		 * to make sure things settle down. */		for (i = 0; i < 4 ; i++) {			set_current_state(TASK_INTERRUPTIBLE);			if (msleep_interruptible(63)) {				up(&nodemgr_serialize);				goto caught_signal;			}			/* Now get the generation in which the node ID's we collect			 * are valid.  During the bus scan we will use this generation			 * for the read transactions, so that if another reset occurs			 * during the scan the transactions will fail instead of			 * returning bogus data. */			generation = get_hpsb_generation(host);			/* If we get a reset before we are done waiting, then			 * start the the waiting over again */			while (!down_trylock(&hi->reset_sem))				i = 0;			/* Check the kill_me again */			if (hi->kill_me) {				up(&nodemgr_serialize);				goto caught_signal;			}		}		if (!nodemgr_check_irm_capability(host, reset_cycles)) {			reset_cycles++;			up(&nodemgr_serialize);			continue;		}		/* Scan our nodes to get the bus options and create node		 * entries. This does not do the sysfs stuff, since that		 * would trigger hotplug callbacks and such, which is a		 * bad idea at this point. */		nodemgr_node_scan(hi, generation);		if (!nodemgr_do_irm_duties(host, reset_cycles)) {			reset_cycles++;			up(&nodemgr_serialize);			continue;		}		reset_cycles = 0;		/* This actually does the full probe, with sysfs		 * registration. */		nodemgr_node_probe(hi, generation);		/* Update some of our sysfs symlinks */		nodemgr_update_host_dev_links(host);		up(&nodemgr_serialize);	}caught_signal:	HPSB_VERBOSE("NodeMgr: Exiting thread");	complete_and_exit(&hi->exited, 0);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/328699bf0ff4d35a9932ce279441f955e78a890e/nodemgr.c/clean/drivers/ieee1394/nodemgr.c