[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC v4 08/13] ide: enumerate_slots implementation
From: |
Eduardo Habkost |
Subject: |
[Qemu-devel] [RFC v4 08/13] ide: enumerate_slots implementation |
Date: |
Mon, 14 Aug 2017 18:57:43 -0300 |
Example output when using "-machine q35":
{
"available": true,
"count": 1,
"device-types": [
"ide-device"
],
"hotpluggable": false,
"opts": [
{ "option": "unit", "values": 0 },
{ "option": "bus", "values": "ide.2" }
],
"opts-complete": true
}
{
"available": false,
"count": 1,
"device": "/machine/unattached/device[19]",
"device-types": [
"ide-device"
],
"hotpluggable": false,
"opts": [
{ "option": "unit", "values": 1 },
{ "option": "bus", "values": "ide.2" } ],
"opts-complete": true
}
{
"available": true,
"count": 10,
"device-types": [
"ide-device"
],
"hotpluggable": false,
"opts": [
{ "option": "unit", "values": [ [ 0, 1 ] ] },
{ "option": "bus", "values": [ "ide.4", "ide.3", "ide.5", "ide.0",
"ide.1" ] }
],
"opts-complete": true
}
Cc: John Snow <address@hidden>
Cc: address@hidden
Signed-off-by: Eduardo Habkost <address@hidden>
---
hw/ide/qdev.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
index f17da1f..cc96f6f 100644
--- a/hw/ide/qdev.c
+++ b/hw/ide/qdev.c
@@ -25,6 +25,7 @@
#include "sysemu/block-backend.h"
#include "sysemu/blockdev.h"
#include "hw/block/block.h"
+#include "hw/qdev-slotinfo.h"
#include "sysemu/sysemu.h"
#include "qapi/visitor.h"
@@ -38,6 +39,30 @@ static Property ide_props[] = {
DEFINE_PROP_END_OF_LIST(),
};
+static DeviceSlotInfoList *ide_bus_enumerate_slots(BusState *bus)
+{
+ int unit;
+ DeviceSlotInfoList *r = NULL;
+ IDEBus *ib = IDE_BUS(bus);
+
+ for (unit = 0; unit < 2; unit++) {
+ DeviceSlotInfo *s = make_slot(bus);
+ IDEDevice *dev = (unit ? ib->master : ib->slave);
+ slot_add_opt_int(s, "unit", unit);
+ s->opts_complete = true;
+ s->has_count = true;
+ s->count = 1;
+ if (dev) {
+ s->available = false;
+ s->has_device = true;
+ s->device = object_get_canonical_path(OBJECT(dev));
+ }
+ slot_list_add_slot(&r, s);
+ }
+
+ return r;
+}
+
static void ide_bus_class_init(ObjectClass *klass, void *data)
{
BusClass *k = BUS_CLASS(klass);
@@ -45,6 +70,7 @@ static void ide_bus_class_init(ObjectClass *klass, void *data)
k->get_fw_dev_path = idebus_get_fw_dev_path;
k->unrealize = idebus_unrealize;
k->device_type = TYPE_IDE_DEVICE;
+ k->enumerate_slots = ide_bus_enumerate_slots;
}
static void idebus_unrealize(BusState *bus, Error **errp)
--
2.9.4
- [Qemu-devel] [RFC v4 01/13] qmp: Define query-device-slots command, (continued)
- [Qemu-devel] [RFC v4 01/13] qmp: Define query-device-slots command, Eduardo Habkost, 2017/08/14
- [Qemu-devel] [RFC v4 02/13] qapi: qobject_compare() helper, Eduardo Habkost, 2017/08/14
- [Qemu-devel] [RFC v4 03/13] qdev: Add BusClass::device_type field, Eduardo Habkost, 2017/08/14
- [Qemu-devel] [RFC v4 04/13] qdev: Slot info helpers, Eduardo Habkost, 2017/08/14
- [Qemu-devel] [RFC v4 05/13] query-device-slots: Collapse similar entries, Eduardo Habkost, 2017/08/14
- [Qemu-devel] [RFC v4 06/13] qdev core: generic enumerate_slots implementation, Eduardo Habkost, 2017/08/14
- [Qemu-devel] [RFC v4 07/13] qdev: Enumerate CPU slots on query-device-slots, Eduardo Habkost, 2017/08/14
- [Qemu-devel] [RFC v4 09/13] pci: pci_bus_has_pcie_upstream_port() function, Eduardo Habkost, 2017/08/14
- [Qemu-devel] [RFC v4 08/13] ide: enumerate_slots implementation,
Eduardo Habkost <=
[Qemu-devel] [RFC v4 10/13] pci: device-number & function properties, Eduardo Habkost, 2017/08/14
[Qemu-devel] [RFC v4 11/13] pci: enumerate_slots implementation, Eduardo Habkost, 2017/08/14
[Qemu-devel] [RFC v4 12/13] usb: enumerate_slots implementation, Eduardo Habkost, 2017/08/14