static int sx_init_drivers(void){	int error;	int i;	func_enter();	specialix_driver = alloc_tty_driver(SX_NBOARD * SX_NPORT);	if (!specialix_driver) {		printk(KERN_ERR "sx: Couldn't allocate tty_driver.\n");		func_exit();		return 1;	}		if (!(tmp_buf = (unsigned char *) get_zeroed_page(GFP_KERNEL))) {		printk(KERN_ERR "sx: Couldn't get free page.\n");		put_tty_driver(specialix_driver);		func_exit();		return 1;	}	specialix_driver->owner = THIS_MODULE;	specialix_driver->name = "ttyW";	specialix_driver->major = SPECIALIX_NORMAL_MAJOR;	specialix_driver->type = TTY_DRIVER_TYPE_SERIAL;	specialix_driver->subtype = SERIAL_TYPE_NORMAL;	specialix_driver->init_termios = tty_std_termios;	specialix_driver->init_termios.c_cflag =		B9600 | CS8 | CREAD | HUPCL | CLOCAL;	specialix_driver->flags = TTY_DRIVER_REAL_RAW;	tty_set_operations(specialix_driver, &sx_ops);	if ((error = tty_register_driver(specialix_driver))) {		put_tty_driver(specialix_driver);		free_page((unsigned long)tmp_buf);		printk(KERN_ERR "sx: Couldn't register specialix IO8+ driver, error = %d\n",		       error);		func_exit();		return 1;	}	memset(sx_port, 0, sizeof(sx_port));	for (i = 0; i < SX_NPORT * SX_NBOARD; i++) {		sx_port[i].magic = SPECIALIX_MAGIC;		INIT_WORK(&sx_port[i].tqueue, do_softint, &sx_port[i]);		INIT_WORK(&sx_port[i].tqueue_hangup, do_sx_hangup, &sx_port[i]);		sx_port[i].close_delay = 50 * HZ/100;		sx_port[i].closing_wait = 3000 * HZ/100;		init_waitqueue_head(&sx_port[i].open_wait);		init_waitqueue_head(&sx_port[i].close_wait);		spin_lock_init(&sx_port[i].lock);	}		func_exit();	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/d61780c0d384939ef31c46b47442854d5def4623/specialix.c/buggy/drivers/char/specialix.c