virtio-serial: kill VirtIOSerialDevice
VirtIOSerialDevice is like VirtIOSerialPort with just the first two fields, which makes it pretty pointless. Using VirtIOSerialPort directly works equally well and is less confusing. [Amit: - rebase - rename 'dev' to 'port' in function params in virtio-serial.h ] Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Amit Shah <amit.shah@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
61a11c98b7
commit
a43f9c90c9
@ -57,10 +57,8 @@ static void chr_event(void *opaque, int event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int generic_port_init(VirtConsole *vcon, VirtIOSerialDevice *dev)
|
static int generic_port_init(VirtConsole *vcon, VirtIOSerialPort *port)
|
||||||
{
|
{
|
||||||
vcon->port.info = dev->info;
|
|
||||||
|
|
||||||
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);
|
||||||
@ -70,18 +68,16 @@ static int generic_port_init(VirtConsole *vcon, VirtIOSerialDevice *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Virtio Console Ports */
|
/* Virtio Console Ports */
|
||||||
static int virtconsole_initfn(VirtIOSerialDevice *dev)
|
static int virtconsole_initfn(VirtIOSerialPort *port)
|
||||||
{
|
{
|
||||||
VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev);
|
|
||||||
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
|
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
|
||||||
|
|
||||||
port->is_console = true;
|
port->is_console = true;
|
||||||
return generic_port_init(vcon, dev);
|
return generic_port_init(vcon, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int virtconsole_exitfn(VirtIOSerialDevice *dev)
|
static int virtconsole_exitfn(VirtIOSerialPort *port)
|
||||||
{
|
{
|
||||||
VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev);
|
|
||||||
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
|
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
|
||||||
|
|
||||||
if (vcon->chr) {
|
if (vcon->chr) {
|
||||||
@ -113,12 +109,11 @@ static void virtconsole_register(void)
|
|||||||
device_init(virtconsole_register)
|
device_init(virtconsole_register)
|
||||||
|
|
||||||
/* Generic Virtio Serial Ports */
|
/* Generic Virtio Serial Ports */
|
||||||
static int virtserialport_initfn(VirtIOSerialDevice *dev)
|
static int virtserialport_initfn(VirtIOSerialPort *port)
|
||||||
{
|
{
|
||||||
VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev);
|
|
||||||
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
|
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
|
||||||
|
|
||||||
return generic_port_init(vcon, dev);
|
return generic_port_init(vcon, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
static VirtIOSerialPortInfo virtserialport_info = {
|
static VirtIOSerialPortInfo virtserialport_info = {
|
||||||
|
@ -658,8 +658,7 @@ static VirtIOSerialBus *virtser_bus_new(DeviceState *dev)
|
|||||||
|
|
||||||
static void virtser_bus_dev_print(Monitor *mon, DeviceState *qdev, int indent)
|
static void virtser_bus_dev_print(Monitor *mon, DeviceState *qdev, int indent)
|
||||||
{
|
{
|
||||||
VirtIOSerialDevice *dev = DO_UPCAST(VirtIOSerialDevice, qdev, qdev);
|
VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, qdev);
|
||||||
VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev);
|
|
||||||
|
|
||||||
monitor_printf(mon, "%*s dev-prop-int: id: %u\n",
|
monitor_printf(mon, "%*s dev-prop-int: id: %u\n",
|
||||||
indent, "", port->id);
|
indent, "", port->id);
|
||||||
@ -721,9 +720,8 @@ static void remove_port(VirtIOSerial *vser, uint32_t port_id)
|
|||||||
|
|
||||||
static int virtser_port_qdev_init(DeviceState *qdev, DeviceInfo *base)
|
static int virtser_port_qdev_init(DeviceState *qdev, DeviceInfo *base)
|
||||||
{
|
{
|
||||||
VirtIOSerialDevice *dev = DO_UPCAST(VirtIOSerialDevice, qdev, qdev);
|
VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, qdev);
|
||||||
VirtIOSerialPortInfo *info = DO_UPCAST(VirtIOSerialPortInfo, qdev, base);
|
VirtIOSerialPortInfo *info = DO_UPCAST(VirtIOSerialPortInfo, qdev, base);
|
||||||
VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev);
|
|
||||||
VirtIOSerialBus *bus = DO_UPCAST(VirtIOSerialBus, qbus, qdev->parent_bus);
|
VirtIOSerialBus *bus = DO_UPCAST(VirtIOSerialBus, qbus, qdev->parent_bus);
|
||||||
int ret;
|
int ret;
|
||||||
bool plugging_port0;
|
bool plugging_port0;
|
||||||
@ -761,8 +759,8 @@ static int virtser_port_qdev_init(DeviceState *qdev, DeviceInfo *base)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev->info = info;
|
port->info = info;
|
||||||
ret = info->init(dev);
|
ret = info->init(port);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -791,8 +789,7 @@ static int virtser_port_qdev_init(DeviceState *qdev, DeviceInfo *base)
|
|||||||
|
|
||||||
static int virtser_port_qdev_exit(DeviceState *qdev)
|
static int virtser_port_qdev_exit(DeviceState *qdev)
|
||||||
{
|
{
|
||||||
VirtIOSerialDevice *dev = DO_UPCAST(VirtIOSerialDevice, qdev, qdev);
|
VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, qdev);
|
||||||
VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev);
|
|
||||||
VirtIOSerial *vser = port->vser;
|
VirtIOSerial *vser = port->vser;
|
||||||
|
|
||||||
remove_port(port->vser, port->id);
|
remove_port(port->vser, port->id);
|
||||||
@ -800,7 +797,7 @@ static int virtser_port_qdev_exit(DeviceState *qdev)
|
|||||||
QTAILQ_REMOVE(&vser->ports, port, next);
|
QTAILQ_REMOVE(&vser->ports, port, next);
|
||||||
|
|
||||||
if (port->info->exit)
|
if (port->info->exit)
|
||||||
port->info->exit(dev);
|
port->info->exit(port);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -62,11 +62,6 @@ typedef struct VirtIOSerialBus VirtIOSerialBus;
|
|||||||
typedef struct VirtIOSerialPort VirtIOSerialPort;
|
typedef struct VirtIOSerialPort VirtIOSerialPort;
|
||||||
typedef struct VirtIOSerialPortInfo VirtIOSerialPortInfo;
|
typedef struct VirtIOSerialPortInfo VirtIOSerialPortInfo;
|
||||||
|
|
||||||
typedef struct VirtIOSerialDevice {
|
|
||||||
DeviceState qdev;
|
|
||||||
VirtIOSerialPortInfo *info;
|
|
||||||
} VirtIOSerialDevice;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is the state that's shared between all the ports. Some of the
|
* This is the state that's shared between all the ports. Some of the
|
||||||
* state is configurable via command-line options. Some of it can be
|
* state is configurable via command-line options. Some of it can be
|
||||||
@ -136,12 +131,12 @@ struct VirtIOSerialPortInfo {
|
|||||||
* The per-port (or per-app) init function that's called when a
|
* The per-port (or per-app) init function that's called when a
|
||||||
* new device is found on the bus.
|
* new device is found on the bus.
|
||||||
*/
|
*/
|
||||||
int (*init)(VirtIOSerialDevice *dev);
|
int (*init)(VirtIOSerialPort *port);
|
||||||
/*
|
/*
|
||||||
* Per-port exit function that's called when a port gets
|
* Per-port exit function that's called when a port gets
|
||||||
* hot-unplugged or removed.
|
* hot-unplugged or removed.
|
||||||
*/
|
*/
|
||||||
int (*exit)(VirtIOSerialDevice *dev);
|
int (*exit)(VirtIOSerialPort *port);
|
||||||
|
|
||||||
/* Callbacks for guest events */
|
/* Callbacks for guest events */
|
||||||
/* Guest opened device. */
|
/* Guest opened device. */
|
||||||
|
Loading…
Reference in New Issue
Block a user