diff options
author | KONRAD Frederic <fred.konrad@greensocs.com> | 2013-04-30 16:08:48 +0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2013-05-03 12:05:15 -0500 |
commit | 1034e9cf4d0740c4c845d79998ac53a5b23e534d (patch) | |
tree | 2c8835e4f0f6fc82e6eaa981ca57f70559a7e1d0 /hw | |
parent | f4dd69aa4ce96196b3d84cd3d3e14a79ea029630 (diff) |
virtio: add virtio_device_set_child_bus_name.
Add virtio_device_set_child_bus_name function.
It will be used with virtio-serial-x and virtio-scsi-x to set the
child bus name before calling virtio-x-device's init.
Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com>
Tested-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Message-id: 1367330931-12994-3-git-send-email-fred.konrad@greensocs.com
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/virtio/virtio.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 0f88c251c1..53a0d90468 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -1087,6 +1087,18 @@ EventNotifier *virtio_queue_get_host_notifier(VirtQueue *vq) return &vq->host_notifier; } +void virtio_device_set_child_bus_name(VirtIODevice *vdev, char *bus_name) +{ + if (vdev->bus_name) { + g_free(vdev->bus_name); + vdev->bus_name = NULL; + } + + if (bus_name) { + vdev->bus_name = g_strdup(bus_name); + } +} + static int virtio_device_init(DeviceState *qdev) { VirtIODevice *vdev = VIRTIO_DEVICE(qdev); @@ -1099,11 +1111,23 @@ static int virtio_device_init(DeviceState *qdev) return 0; } +static int virtio_device_exit(DeviceState *qdev) +{ + VirtIODevice *vdev = VIRTIO_DEVICE(qdev); + + if (vdev->bus_name) { + g_free(vdev->bus_name); + vdev->bus_name = NULL; + } + return 0; +} + static void virtio_device_class_init(ObjectClass *klass, void *data) { /* Set the default value here. */ DeviceClass *dc = DEVICE_CLASS(klass); dc->init = virtio_device_init; + dc->exit = virtio_device_exit; dc->bus_type = TYPE_VIRTIO_BUS; } |