set_current_state(TASK_UNINTERRUPTIBLE); remaining = schedule_timeout(HZ); 
remaining = schedule_timeout_uninterruptible(HZ); 
islpci_reset_if(islpci_private *priv){	long remaining;	int result = -ETIME;	int count;	DEFINE_WAIT(wait);	prepare_to_wait(&priv->reset_done, &wait, TASK_UNINTERRUPTIBLE);		/* now the last step is to reset the interface */	isl38xx_interface_reset(priv->device_base, priv->device_host_address);	islpci_set_state(priv, PRV_STATE_PREINIT);        for(count = 0; count < 2 && result; count++) {		/* The software reset acknowledge needs about 220 msec here.		 * Be conservative and wait for up to one second. */			set_current_state(TASK_UNINTERRUPTIBLE);		remaining = schedule_timeout(HZ);		if(remaining > 0) {			result = 0;			break;		}		/* If we're here it's because our IRQ hasn't yet gone through. 		 * Retry a bit more...		 */		printk(KERN_ERR "%s: no 'reset complete' IRQ seen - retrying\n",			priv->ndev->name);	}	finish_wait(&priv->reset_done, &wait);	if (result) {		printk(KERN_ERR "%s: interface reset failure\n", priv->ndev->name);		return result;	}	islpci_set_state(priv, PRV_STATE_INIT);	/* Now that the device is 100% up, let's allow	 * for the other interrupts --	 * NOTE: this is not *yet* true since we've only allowed the 	 * INIT interrupt on the IRQ line. We can perhaps poll	 * the IRQ line until we know for sure the reset went through */	isl38xx_enable_common_interrupts(priv->device_base);	down_write(&priv->mib_sem);	result = mgt_commit(priv);	if (result) {		printk(KERN_ERR "%s: interface reset failure\n", priv->ndev->name);		up_write(&priv->mib_sem);		return result;	}	up_write(&priv->mib_sem);	islpci_set_state(priv, PRV_STATE_READY);	printk(KERN_DEBUG "%s: interface reset complete\n", priv->ndev->name);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/3173c8907ffb2c64456142da3df2bd0500bd59e0/islpci_dev.c/buggy/drivers/net/wireless/prism54/islpci_dev.c