current->state=TASK_INTERRUPTIBLE; i=schedule_timeout(TR_RETRY_INTERVAL); /* wait 30 seconds */ 
i=schedule_timeout_interruptible(TR_RETRY_INTERVAL); /* wait 30 seconds */ 
static int tok_open(struct net_device *dev){	struct tok_info *ti = (struct tok_info *) dev->priv;	int i;	/*the case we were left in a failure state during a previous open */	if (ti->open_failure == YES) {		DPRINTK("Last time you were disconnected, how about now?\n");		printk("You can't insert with an ICS connector half-cocked.\n");	}	ti->open_status  = CLOSED; /* CLOSED or OPEN      */	ti->sap_status   = CLOSED; /* CLOSED or OPEN      */	ti->open_failure =     NO; /* NO     or YES       */	ti->open_mode    = MANUAL; /* MANUAL or AUTOMATIC */	ti->sram_phys &= ~1; /* to reverse what we do in tok_close */	/* init the spinlock */	spin_lock_init(&ti->lock);	init_timer(&ti->tr_timer);		i = tok_init_card(dev);	if (i) return i;	while (1){		tok_open_adapter((unsigned long) dev);		i= interruptible_sleep_on_timeout(&ti->wait_for_reset, 25 * HZ);		/* sig catch: estimate opening adapter takes more than .5 sec*/		if (i>(245*HZ)/10) break; /* fancier than if (i==25*HZ) */		if (i==0) break;		if (ti->open_status == OPEN && ti->sap_status==OPEN) {			netif_start_queue(dev);			DPRINTK("Adapter is up and running\n");			return 0;		}		current->state=TASK_INTERRUPTIBLE;		i=schedule_timeout(TR_RETRY_INTERVAL); /* wait 30 seconds */		if(i!=0) break; /*prob. a signal, like the i>24*HZ case above */	}	outb(0, dev->base_addr + ADAPTRESET);/* kill pending interrupts*/	DPRINTK("TERMINATED via signal\n");	/*BMS useful */	return -EAGAIN;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/3173c8907ffb2c64456142da3df2bd0500bd59e0/ibmtr.c/buggy/drivers/net/tokenring/ibmtr.c