[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 16/21] qdev: use wrapper for qdev_get_path
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 16/21] qdev: use wrapper for qdev_get_path |
Date: |
Wed, 2 May 2012 13:31:08 +0200 |
From: Anthony Liguori <address@hidden>
This makes it easier to remove it from BusInfo.
Signed-off-by: Anthony Liguori <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
Anthony's patch used BUS_CLASS so it broke bisectability; fixed here.
exec.c | 4 ++--
hw/qdev.c | 16 ++++++++++++++++
hw/qdev.h | 2 ++
hw/scsi-bus.c | 4 +---
hw/usb/bus.c | 5 ++---
hw/usb/desc.c | 5 +++--
savevm.c | 12 ++++++------
7 files changed, 32 insertions(+), 16 deletions(-)
diff --git a/exec.c b/exec.c
index 0607c9b..e3523d2 100644
--- a/exec.c
+++ b/exec.c
@@ -2583,8 +2583,8 @@ void qemu_ram_set_idstr(ram_addr_t addr, const char
*name, DeviceState *dev)
assert(new_block);
assert(!new_block->idstr[0]);
- if (dev && dev->parent_bus && dev->parent_bus->info->get_dev_path) {
- char *id = dev->parent_bus->info->get_dev_path(dev);
+ if (dev) {
+ char *id = qdev_get_dev_path(dev);
if (id) {
snprintf(new_block->idstr, sizeof(new_block->idstr), "%s/", id);
g_free(id);
diff --git a/hw/qdev.c b/hw/qdev.c
index 7f18590..7b2802d 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -494,6 +494,22 @@ char* qdev_get_fw_dev_path(DeviceState *dev)
return strdup(path);
}
+char *qdev_get_dev_path(DeviceState *dev)
+{
+ BusInfo *businfo;
+
+ if (!dev || !dev->parent_bus) {
+ return NULL;
+ }
+
+ businfo = dev->parent_bus->info;
+ if (businfo->get_dev_path) {
+ return businfo->get_dev_path(dev);
+ }
+
+ return NULL;
+}
+
/**
* Legacy property handling
*/
diff --git a/hw/qdev.h b/hw/qdev.h
index 23147df..2e82a2f 100644
--- a/hw/qdev.h
+++ b/hw/qdev.h
@@ -354,4 +354,6 @@ void qdev_set_parent_bus(DeviceState *dev, BusState *bus);
extern int qdev_hotplug;
+char *qdev_get_dev_path(DeviceState *dev);
+
#endif
diff --git a/hw/scsi-bus.c b/hw/scsi-bus.c
index d7054da..0dba3aa 100644
--- a/hw/scsi-bus.c
+++ b/hw/scsi-bus.c
@@ -1434,9 +1434,7 @@ static char *scsibus_get_dev_path(DeviceState *dev)
char *id = NULL;
char *path;
- if (hba && hba->parent_bus && hba->parent_bus->info->get_dev_path) {
- id = hba->parent_bus->info->get_dev_path(hba);
- }
+ id = qdev_get_dev_path(hba);
if (id) {
path = g_strdup_printf("%s/%d:%d:%d", id, d->channel, d->id, d->lun);
} else {
diff --git a/hw/usb/bus.c b/hw/usb/bus.c
index 64887d5..8b08f93 100644
--- a/hw/usb/bus.c
+++ b/hw/usb/bus.c
@@ -467,9 +467,8 @@ static char *usb_get_dev_path(DeviceState *qdev)
DeviceState *hcd = qdev->parent_bus->parent;
char *id = NULL;
- if ((dev->flags & (1 << USB_DEV_FLAG_FULL_PATH)) &&
- hcd && hcd->parent_bus && hcd->parent_bus->info->get_dev_path) {
- id = hcd->parent_bus->info->get_dev_path(hcd);
+ if (dev->flags & (1 << USB_DEV_FLAG_FULL_PATH)) {
+ id = qdev_get_dev_path(hcd);
}
if (id) {
char *ret = g_strdup_printf("%s/%s", id, dev->port->path);
diff --git a/hw/usb/desc.c b/hw/usb/desc.c
index e8a3c6a..0a9d3c9 100644
--- a/hw/usb/desc.c
+++ b/hw/usb/desc.c
@@ -432,12 +432,13 @@ void usb_desc_create_serial(USBDevice *dev)
const USBDesc *desc = usb_device_get_usb_desc(dev);
int index = desc->id.iSerialNumber;
char serial[64];
+ char *path;
int dst;
assert(index != 0 && desc->str[index] != NULL);
dst = snprintf(serial, sizeof(serial), "%s", desc->str[index]);
- if (hcd && hcd->parent_bus && hcd->parent_bus->info->get_dev_path) {
- char *path = hcd->parent_bus->info->get_dev_path(hcd);
+ path = qdev_get_dev_path(hcd);
+ if (path) {
dst += snprintf(serial+dst, sizeof(serial)-dst, "-%s", path);
}
dst += snprintf(serial+dst, sizeof(serial)-dst, "-%s", dev->port->path);
diff --git a/savevm.c b/savevm.c
index 2d18bab..818ddfc 100644
--- a/savevm.c
+++ b/savevm.c
@@ -1248,8 +1248,8 @@ int register_savevm_live(DeviceState *dev,
se->is_ram = 1;
}
- if (dev && dev->parent_bus && dev->parent_bus->info->get_dev_path) {
- char *id = dev->parent_bus->info->get_dev_path(dev);
+ if (dev) {
+ char *id = qdev_get_dev_path(dev);
if (id) {
pstrcpy(se->idstr, sizeof(se->idstr), id);
pstrcat(se->idstr, sizeof(se->idstr), "/");
@@ -1292,8 +1292,8 @@ void unregister_savevm(DeviceState *dev, const char
*idstr, void *opaque)
SaveStateEntry *se, *new_se;
char id[256] = "";
- if (dev && dev->parent_bus && dev->parent_bus->info->get_dev_path) {
- char *path = dev->parent_bus->info->get_dev_path(dev);
+ if (dev) {
+ char *path = qdev_get_dev_path(dev);
if (path) {
pstrcpy(id, sizeof(id), path);
pstrcat(id, sizeof(id), "/");
@@ -1334,8 +1334,8 @@ int vmstate_register_with_alias_id(DeviceState *dev, int
instance_id,
se->alias_id = alias_id;
se->no_migrate = vmsd->unmigratable;
- if (dev && dev->parent_bus && dev->parent_bus->info->get_dev_path) {
- char *id = dev->parent_bus->info->get_dev_path(dev);
+ if (dev) {
+ char *id = qdev_get_dev_path(dev);
if (id) {
pstrcpy(se->idstr, sizeof(se->idstr), id);
pstrcat(se->idstr, sizeof(se->idstr), "/");
--
1.7.9.3
- Re: [Qemu-devel] [PATCH 18/21] qdev: convert busses to QEMU Object Model, (continued)
- [Qemu-devel] [PATCH 21/21] qbus: initialize in standard way, Paolo Bonzini, 2012/05/02
- [Qemu-devel] [PATCH 11/21] qdev: move bus properties to abstract superclasses, Paolo Bonzini, 2012/05/02
- Re: [Qemu-devel] [PATCH 11/21] qdev: move bus properties to abstract superclasses, Anthony Liguori, 2012/05/02
- Re: [Qemu-devel] [PATCH 11/21] qdev: move bus properties to abstract superclasses, Paolo Bonzini, 2012/05/02
- Re: [Qemu-devel] [PATCH 11/21] qdev: move bus properties to abstract superclasses, Anthony Liguori, 2012/05/02
- Re: [Qemu-devel] [PATCH 11/21] qdev: move bus properties to abstract superclasses, Paolo Bonzini, 2012/05/02
- Re: [Qemu-devel] [PATCH 11/21] qdev: move bus properties to abstract superclasses, Anthony Liguori, 2012/05/03
- Re: [Qemu-devel] [PATCH 11/21] qdev: move bus properties to abstract superclasses, Paolo Bonzini, 2012/05/03
- [Qemu-devel] [PATCH 16/21] qdev: use wrapper for qdev_get_path,
Paolo Bonzini <=
- [Qemu-devel] [PATCH 20/21] qbus: make child devices links, Paolo Bonzini, 2012/05/02
- [Qemu-devel] [PATCH 12/21] pc: add back PCI.rombar compat property, Paolo Bonzini, 2012/05/02
- Re: [Qemu-devel] [PATCH 00/21] qbus QOM conversion, rebased on top of my patches, Paolo Bonzini, 2012/05/04
- Re: [Qemu-devel] [PATCH 00/21] qbus QOM conversion, rebased on top of my patches, Paolo Bonzini, 2012/05/23