[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 15/22] qdev: Use wrapper for qdev_get_path
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PATCH 15/22] qdev: Use wrapper for qdev_get_path |
Date: |
Mon, 18 Jun 2012 15:59:07 +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>
[AF: Drop now unnecessary NULL initialization in scsibus_get_dev_path()]
Signed-off-by: Andreas Färber <address@hidden>
---
exec.c | 4 ++--
hw/qdev.c | 16 ++++++++++++++++
hw/qdev.h | 2 ++
hw/scsi-bus.c | 6 ++----
hw/usb/bus.c | 5 ++---
hw/usb/desc.c | 5 +++--
savevm.c | 12 ++++++------
7 files changed, 33 insertions(+), 17 deletions(-)
diff --git a/exec.c b/exec.c
index 5c9b762..b5d6885 100644
--- a/exec.c
+++ b/exec.c
@@ -2603,8 +2603,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 1af5382..013ccf2 100644
--- a/hw/qdev.h
+++ b/hw/qdev.h
@@ -352,4 +352,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 a1d75b9..e79bb54 100644
--- a/hw/scsi-bus.c
+++ b/hw/scsi-bus.c
@@ -1453,12 +1453,10 @@ static char *scsibus_get_dev_path(DeviceState *dev)
{
SCSIDevice *d = DO_UPCAST(SCSIDevice, qdev, dev);
DeviceState *hba = dev->parent_bus->parent;
- char *id = NULL;
+ char *id;
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.7
- [Qemu-devel] [PATCH 10/22] qdev: Push "type" property up to Object, (continued)
- [Qemu-devel] [PATCH 10/22] qdev: Push "type" property up to Object, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 06/22] qom: Drop type_register_static_alias() macro, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 02/22] qom: Introduce object_property_is_{child, link}(), Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 11/22] qdev: Move bus properties to a separate global, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 12/22] qdev: Move bus properties to abstract superclasses, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 19/22] qbus: Make child devices links, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 13/22] qdev: Clean up global properties, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 14/22] qdev: Remove qdev_prop_set_defaults, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 21/22] qdev: Remove qdev_prop_exists(), Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 17/22] qdev: Convert busses to QEMU Object Model, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 15/22] qdev: Use wrapper for qdev_get_path,
Andreas Färber <=
- Re: [Qemu-devel] [PULL] qom-next queue, second batch: QBus, API additions and cleanups, Anthony Liguori, 2012/06/20