static int __init isicom_init(void) 
static int __devinit isicom_init(void) 
static int __init isicom_init(void){	int card, channel, base;	struct isi_port * port;	unsigned long page;		if (!tmp_buf) { 		page = get_zeroed_page(GFP_KERNEL);	      	if (!page) {#ifdef ISICOM_DEBUG	      		      		printk(KERN_DEBUG "ISICOM: Couldn't allocate page for tmp_buf.\n");#else			printk(KERN_ERR "ISICOM: Not enough memory...\n");#endif	      	      		return 0;	      	}		      	tmp_buf = (unsigned char *) page;	}		if (!register_ioregion()) 	{		printk(KERN_ERR "ISICOM: All required I/O space found busy.\n");		free_page((unsigned long)tmp_buf);		return 0;	}	if (register_drivers()) 	{		unregister_ioregion();		free_page((unsigned long)tmp_buf);		return 0;	}	if (!register_isr()) 	{		unregister_drivers();		/*  ioports already uregistered in register_isr */		free_page((unsigned long)tmp_buf);		return 0;			}		memset(isi_ports, 0, sizeof(isi_ports));	for (card = 0; card < BOARD_COUNT; card++) {		port = &isi_ports[card * 16];		isi_card[card].ports = port;		spin_lock_init(&isi_card[card].card_lock);		base = isi_card[card].base;		for (channel = 0; channel < 16; channel++, port++) {			port->magic = ISICOM_MAGIC;			port->card = &isi_card[card];			port->channel = channel;		 	port->close_delay = 50 * HZ/100;		 	port->closing_wait = 3000 * HZ/100;		 	INIT_WORK(&port->hangup_tq, do_isicom_hangup, port);		 	INIT_WORK(&port->bh_tqueue, isicom_bottomhalf, port);		 	port->status = 0;			init_waitqueue_head(&port->open_wait);	 							init_waitqueue_head(&port->close_wait);			/*  . . .  */ 		}	} 		return 1;	}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/4b8497276a96928bcb5947cc44e61f8b69fe66ac/isicom.c/clean/drivers/char/isicom.c