Add a simple method to return some kind of human readable identifier for use in error messages.
Signed-off-by: Manos Pitsidianakis <manos.pitsidiana...@linaro.org> --- hw/core/qdev.c | 10 ++++++++++ include/hw/qdev-core.h | 15 +++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 43d863b0c5..499f191826 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -879,6 +879,16 @@ Object *qdev_get_machine(void) return dev; } +char *qdev_get_human_name(DeviceState *dev) +{ + if (!dev) { + return g_strdup(""); + } + + return dev->id ? + g_strdup(dev->id) : object_get_canonical_path(OBJECT(dev)); +} + static MachineInitPhase machine_phase; bool phase_check(MachineInitPhase phase) diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index 151d968238..a8c742b4a3 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -993,6 +993,21 @@ const char *qdev_fw_name(DeviceState *dev); void qdev_assert_realized_properly(void); Object *qdev_get_machine(void); +/** + * qdev_get_human_name() - Return a human-readable name for a device + * @dev: The device + * + * .. note:: + * This function is intended for user friendly error messages. + * + * Returns: A newly allocated string containing the device id if not null, + * else the object canonical path if not null. If @dev is NULL, it returns an + * allocated empty string. + * + * Use g_free() to free it. + */ +char *qdev_get_human_name(DeviceState *dev); + /* FIXME: make this a link<> */ bool qdev_set_parent_bus(DeviceState *dev, BusState *bus, Error **errp); -- γαῖα πυρί μιχθήτω