From: Gleb Natapov <gleb@redhat.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 2/5] Add get_dev_path callback to ISA bus in qdev.
Date: Tue, 26 Oct 2010 12:48:08 +0200 [thread overview]
Message-ID: <1288090091-25874-3-git-send-email-gleb@redhat.com> (raw)
In-Reply-To: <1288090091-25874-1-git-send-email-gleb@redhat.com>
Use device ioports to create unique device path.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
---
hw/isa-bus.c | 39 +++++++++++++++++++++++++++++++++++++++
1 files changed, 39 insertions(+), 0 deletions(-)
diff --git a/hw/isa-bus.c b/hw/isa-bus.c
index 12938f5..b2ddfb5 100644
--- a/hw/isa-bus.c
+++ b/hw/isa-bus.c
@@ -31,11 +31,13 @@ static ISABus *isabus;
target_phys_addr_t isa_mem_base = 0;
static void isabus_dev_print(Monitor *mon, DeviceState *dev, int indent);
+static char *isabus_get_dev_path(DeviceState *dev);
static struct BusInfo isa_bus_info = {
.name = "ISA",
.size = sizeof(ISABus),
.print_dev = isabus_dev_print,
+ .get_dev_path = isabus_get_dev_path,
};
ISABus *isa_bus_new(DeviceState *dev)
@@ -187,4 +189,41 @@ static void isabus_register_devices(void)
sysbus_register_withprop(&isabus_bridge_info);
}
+static int find_range_end(ISADevice *d, int i)
+{
+ uint16_t p = d->ioports[i++];
+
+ while (i < d->nioports) {
+ if (d->ioports[i] - p != 1) {
+ break;
+ }
+ p = d->ioports[i++];
+ }
+ return i - 1;
+}
+
+static char *isabus_get_dev_path(DeviceState *dev)
+{
+ ISADevice *d = (ISADevice*)dev;
+ char path[100];
+ int i = 0, off = 0;
+
+ while (i < d->nioports) {
+ int e = find_range_end(d, i);
+ if (off)
+ path[off++] = ',';
+ if (i == e) {
+ off += snprintf(path + off, sizeof(path) - off, "%04x",
+ d->ioports[i]);
+ i++;
+ } else {
+ off += snprintf(path + off, sizeof(path) - off, "%04x-%04x",
+ d->ioports[i], d->ioports[e]);
+ i = e + 1;
+ }
+ }
+
+ return strdup(path);
+}
+
device_init(isabus_register_devices)
--
1.7.1
next prev parent reply other threads:[~2010-10-26 10:48 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-26 10:48 [Qemu-devel] [PATCH 0/5] boot order specification Gleb Natapov
2010-10-26 10:48 ` [Qemu-devel] [PATCH 1/5] Keep track of ISA ports ISA device is using in qdev Gleb Natapov
2010-10-26 13:25 ` Anthony Liguori
2010-10-26 13:30 ` Gleb Natapov
2010-10-26 13:32 ` Anthony Liguori
2010-10-26 15:42 ` Blue Swirl
2010-10-26 10:48 ` Gleb Natapov [this message]
2010-10-26 10:48 ` [Qemu-devel] [PATCH 3/5] Store IDE bus id in IDEBus structure for easy access Gleb Natapov
2010-10-26 10:48 ` [Qemu-devel] [PATCH 4/5] Add get_dev_path callback to IDE bus Gleb Natapov
2010-10-26 10:48 ` [Qemu-devel] [PATCH 5/5] Add bootindex parameter to net/block/fd device Gleb Natapov
2010-10-26 13:29 ` Anthony Liguori
2010-10-26 14:16 ` Gleb Natapov
2010-10-26 12:40 ` [Qemu-devel] [PATCH 0/5] boot order specification Bernhard Kohl
2010-10-26 13:07 ` Gleb Natapov
2010-10-26 13:35 ` Bernhard Kohl
2010-10-26 13:38 ` Gleb Natapov
2010-10-26 15:35 ` Blue Swirl
2010-10-26 15:43 ` Gleb Natapov
2010-10-26 17:00 ` Blue Swirl
2010-10-26 19:35 ` Gleb Natapov
2010-10-26 19:57 ` Blue Swirl
2010-10-26 20:34 ` Gleb Natapov
2010-10-26 20:49 ` Blue Swirl
2010-10-26 21:02 ` Gleb Natapov
2010-10-26 21:14 ` Scott Wood
2010-10-27 8:57 ` Gleb Natapov
2010-10-27 16:39 ` Scott Wood
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1288090091-25874-3-git-send-email-gleb@redhat.com \
--to=gleb@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).