spin_lock_init(&port->lock); 
int uart_add_one_port(struct uart_driver *drv, struct uart_port *port){	struct uart_state *state;	int ret = 0;	BUG_ON(in_interrupt());	if (port->line >= drv->nr)		return -EINVAL;	state = drv->state + port->line;	down(&port_sem);	if (state->port) {		ret = -EINVAL;		goto out;	}	state->port = port;	spin_lock_init(&port->lock);	port->cons = drv->cons;	port->info = state->info;	uart_configure_port(drv, state, port);	/*	 * Register the port whether it's detected or not.  This allows	 * setserial to be used to alter this ports parameters.	 */	tty_register_device(drv->tty_driver, port->line, port->dev);	/*	 * If this driver supports console, and it hasn't been	 * successfully registered yet, try to re-register it.	 * It may be that the port was not available.	 */	if (port->type != PORT_UNKNOWN &&	    port->cons && !(port->cons->flags & CON_ENABLED))		register_console(port->cons); out:	up(&port_sem);	return ret;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/976ecd12b8144d066a23fe97c6fbfc1ac8470af7/serial_core.c/clean/drivers/serial/serial_core.c