virtio-console: Simplify init callbacks

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Amit Shah <amit.shah@redhat.com>
This commit is contained in:
Markus Armbruster 2011-05-25 14:21:14 +02:00 committed by Amit Shah
parent a15bb0d6a9
commit 7edfe65246

View File

@ -74,11 +74,17 @@ static void chr_event(void *opaque, int event)
} }
} }
static int generic_port_init(VirtConsole *vcon, VirtIOSerialPort *port) static int virtconsole_initfn(VirtIOSerialPort *port)
{ {
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
VirtIOSerialPortInfo *info = DO_UPCAST(VirtIOSerialPortInfo, qdev, VirtIOSerialPortInfo *info = DO_UPCAST(VirtIOSerialPortInfo, qdev,
vcon->port.dev.info); vcon->port.dev.info);
if (port->id == 0 && !info->is_console) {
error_report("Port number 0 on virtio-serial devices reserved for virtconsole devices for backward compatibility.");
return -1;
}
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);
@ -86,17 +92,10 @@ static int generic_port_init(VirtConsole *vcon, VirtIOSerialPort *port)
info->guest_open = guest_open; info->guest_open = guest_open;
info->guest_close = guest_close; info->guest_close = guest_close;
} }
return 0; return 0;
} }
/* Virtio Console Ports */
static int virtconsole_initfn(VirtIOSerialPort *port)
{
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
return generic_port_init(vcon, port);
}
static int virtconsole_exitfn(VirtIOSerialPort *port) static int virtconsole_exitfn(VirtIOSerialPort *port)
{ {
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port); VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
@ -132,26 +131,10 @@ static void virtconsole_register(void)
} }
device_init(virtconsole_register) device_init(virtconsole_register)
/* Generic Virtio Serial Ports */
static int virtserialport_initfn(VirtIOSerialPort *port)
{
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
if (port->id == 0) {
/*
* Disallow a generic port at id 0, that's reserved for
* console ports.
*/
error_report("Port number 0 on virtio-serial devices reserved for virtconsole devices for backward compatibility.");
return -1;
}
return generic_port_init(vcon, port);
}
static VirtIOSerialPortInfo virtserialport_info = { static VirtIOSerialPortInfo virtserialport_info = {
.qdev.name = "virtserialport", .qdev.name = "virtserialport",
.qdev.size = sizeof(VirtConsole), .qdev.size = sizeof(VirtConsole),
.init = virtserialport_initfn, .init = virtconsole_initfn,
.exit = virtconsole_exitfn, .exit = virtconsole_exitfn,
.qdev.props = (Property[]) { .qdev.props = (Property[]) {
DEFINE_PROP_UINT32("nr", VirtConsole, port.id, VIRTIO_CONSOLE_BAD_ID), DEFINE_PROP_UINT32("nr", VirtConsole, port.id, VIRTIO_CONSOLE_BAD_ID),