[PATCH] uml: move console configuration
This patch changes when console devices are configured in order to prepare the ground for the next patch. parse_chan_pair is now done earlier, when initcalls are run, rather than when the device is opened. When a host device disappears, the channel list is closed, but not freed. This is required by the previous change. line_config now takes the options structure as an argument, and line_open doesn't. Signed-off-by: Jeff Dike <jdike@addtoit.com> Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
418e55d49b
commit
1f80171e81
@@ -311,14 +311,12 @@ int console_write_chan(struct list_head *chans, const char *buf, int len)
|
||||
int console_open_chan(struct line *line, struct console *co,
|
||||
struct chan_opts *opts)
|
||||
{
|
||||
if (!list_empty(&line->chan_list))
|
||||
return 0;
|
||||
int err;
|
||||
|
||||
err = open_chan(&line->chan_list);
|
||||
if(err)
|
||||
return err;
|
||||
|
||||
if (0 != parse_chan_pair(line->init_str, &line->chan_list,
|
||||
co->index, opts))
|
||||
return -1;
|
||||
if (0 != open_chan(&line->chan_list))
|
||||
return -1;
|
||||
printk("Console initialized on /dev/%s%d\n",co->name,co->index);
|
||||
return 0;
|
||||
}
|
||||
@@ -596,13 +594,11 @@ void chan_interrupt(struct list_head *chans, struct work_struct *task,
|
||||
tty_hangup(tty);
|
||||
line_disable(tty, irq);
|
||||
close_chan(chans);
|
||||
free_chan(chans);
|
||||
return;
|
||||
}
|
||||
else {
|
||||
if(chan->ops->close != NULL)
|
||||
chan->ops->close(chan->fd, chan->data);
|
||||
free_one_chan(chan);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user