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: Amit Shah <amit.shah@redhat.com>
This commit is contained in:
Amit Shah 2010-04-05 14:20:29 +05:30
parent 1b5f56b134
commit cbe77b616c

View file

@ -58,22 +58,26 @@ static void chr_event(void *opaque, int event)
} }
} }
static int generic_port_init(VirtConsole *vcon, VirtIOSerialDevice *dev)
{
vcon->port.info = dev->info;
if (vcon->chr) {
qemu_chr_add_handlers(vcon->chr, chr_can_read, chr_read, chr_event,
vcon);
vcon->port.info->have_data = flush_buf;
}
return 0;
}
/* Virtio Console Ports */ /* Virtio Console Ports */
static int virtconsole_initfn(VirtIOSerialDevice *dev) static int virtconsole_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;
port->is_console = true; port->is_console = true;
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 int virtconsole_exitfn(VirtIOSerialDevice *dev) static int virtconsole_exitfn(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 = {