Revision 7edfe652
b/hw/virtio-console.c | ||
---|---|---|
74 | 74 |
} |
75 | 75 |
} |
76 | 76 |
|
77 |
static int generic_port_init(VirtConsole *vcon, VirtIOSerialPort *port)
|
|
77 |
static int virtconsole_initfn(VirtIOSerialPort *port)
|
|
78 | 78 |
{ |
79 |
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port); |
|
79 | 80 |
VirtIOSerialPortInfo *info = DO_UPCAST(VirtIOSerialPortInfo, qdev, |
80 | 81 |
vcon->port.dev.info); |
81 | 82 |
|
83 |
if (port->id == 0 && !info->is_console) { |
|
84 |
error_report("Port number 0 on virtio-serial devices reserved for virtconsole devices for backward compatibility."); |
|
85 |
return -1; |
|
86 |
} |
|
87 |
|
|
82 | 88 |
if (vcon->chr) { |
83 | 89 |
qemu_chr_add_handlers(vcon->chr, chr_can_read, chr_read, chr_event, |
84 | 90 |
vcon); |
... | ... | |
86 | 92 |
info->guest_open = guest_open; |
87 | 93 |
info->guest_close = guest_close; |
88 | 94 |
} |
89 |
return 0; |
|
90 |
} |
|
91 |
|
|
92 |
/* Virtio Console Ports */ |
|
93 |
static int virtconsole_initfn(VirtIOSerialPort *port) |
|
94 |
{ |
|
95 |
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port); |
|
96 | 95 |
|
97 |
return generic_port_init(vcon, port);
|
|
96 |
return 0;
|
|
98 | 97 |
} |
99 | 98 |
|
100 | 99 |
static int virtconsole_exitfn(VirtIOSerialPort *port) |
... | ... | |
132 | 131 |
} |
133 | 132 |
device_init(virtconsole_register) |
134 | 133 |
|
135 |
/* Generic Virtio Serial Ports */ |
|
136 |
static int virtserialport_initfn(VirtIOSerialPort *port) |
|
137 |
{ |
|
138 |
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port); |
|
139 |
|
|
140 |
if (port->id == 0) { |
|
141 |
/* |
|
142 |
* Disallow a generic port at id 0, that's reserved for |
|
143 |
* console ports. |
|
144 |
*/ |
|
145 |
error_report("Port number 0 on virtio-serial devices reserved for virtconsole devices for backward compatibility."); |
|
146 |
return -1; |
|
147 |
} |
|
148 |
return generic_port_init(vcon, port); |
|
149 |
} |
|
150 |
|
|
151 | 134 |
static VirtIOSerialPortInfo virtserialport_info = { |
152 | 135 |
.qdev.name = "virtserialport", |
153 | 136 |
.qdev.size = sizeof(VirtConsole), |
154 |
.init = virtserialport_initfn,
|
|
137 |
.init = virtconsole_initfn,
|
|
155 | 138 |
.exit = virtconsole_exitfn, |
156 | 139 |
.qdev.props = (Property[]) { |
157 | 140 |
DEFINE_PROP_UINT32("nr", VirtConsole, port.id, VIRTIO_CONSOLE_BAD_ID), |
Also available in: Unified diff