提交 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) ...@@ -58,24 +58,28 @@ static void chr_event(void *opaque, int event)
} }
} }
/* Virtio Console Ports */ static int generic_port_init(VirtConsole *vcon, VirtIOSerialDevice *dev)
static int virtconsole_initfn(VirtIOSerialDevice *dev)
{ {
VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev); vcon->port.info = dev->info;
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
port->info = dev->info;
port->is_console = true;
if (vcon->chr) { if (vcon->chr) {
qemu_chr_add_handlers(vcon->chr, chr_can_read, chr_read, chr_event, qemu_chr_add_handlers(vcon->chr, chr_can_read, chr_read, chr_event,
vcon); vcon);
port->info->have_data = flush_buf; vcon->port.info->have_data = flush_buf;
} }
return 0; 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) static int virtconsole_exitfn(VirtIOSerialDevice *dev)
{ {
VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev); VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev);
...@@ -115,14 +119,7 @@ static int virtserialport_initfn(VirtIOSerialDevice *dev) ...@@ -115,14 +119,7 @@ static int virtserialport_initfn(VirtIOSerialDevice *dev)
VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev); VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev);
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port); VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
port->info = dev->info; return generic_port_init(vcon, dev);
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;
} }
static VirtIOSerialPortInfo virtserialport_info = { static VirtIOSerialPortInfo virtserialport_info = {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册