提交 cbe77b61 编写于 作者: A Amit Shah

virtio-console: Factor out common init between console and generic ports

The initialisation for generic ports and console ports is similar.
Factor out the parts that are the same in a different function that can
be called from each of the initfns.
Signed-off-by: NAmit Shah <amit.shah@redhat.com>
上级 1b5f56b1
......@@ -58,24 +58,28 @@ static void chr_event(void *opaque, int event)
}
}
/* Virtio Console Ports */
static int virtconsole_initfn(VirtIOSerialDevice *dev)
static int generic_port_init(VirtConsole *vcon, VirtIOSerialDevice *dev)
{
VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev);
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
port->info = dev->info;
port->is_console = true;
vcon->port.info = dev->info;
if (vcon->chr) {
qemu_chr_add_handlers(vcon->chr, chr_can_read, chr_read, chr_event,
vcon);
port->info->have_data = flush_buf;
vcon->port.info->have_data = flush_buf;
}
return 0;
}
/* Virtio Console Ports */
static int virtconsole_initfn(VirtIOSerialDevice *dev)
{
VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev);
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
port->is_console = true;
return generic_port_init(vcon, dev);
}
static int virtconsole_exitfn(VirtIOSerialDevice *dev)
{
VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev);
......@@ -115,14 +119,7 @@ static int virtserialport_initfn(VirtIOSerialDevice *dev)
VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev);
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
port->info = dev->info;
if (vcon->chr) {
qemu_chr_add_handlers(vcon->chr, chr_can_read, chr_read, chr_event,
vcon);
port->info->have_data = flush_buf;
}
return 0;
return generic_port_init(vcon, dev);
}
static VirtIOSerialPortInfo virtserialport_info = {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册