From: Amit Shah <amit.shah@redhat.com>
To: qemu list <qemu-devel@nongnu.org>
Cc: Amit Shah <amit.shah@redhat.com>, Amos Kong <akong@redhat.com>,
Markus Armbruster <armbru@redhat.com>
Subject: [Qemu-devel] [PATCH 1/2] virtio-serial: create a linked list of all active devices
Date: Wed, 16 Jul 2014 17:01:03 +0530 [thread overview]
Message-ID: <c6749c36478b78b14eee4e40918fb0006533f839.1405510095.git.amit.shah@redhat.com> (raw)
In-Reply-To: <cover.1405510095.git.amit.shah@redhat.com>
In-Reply-To: <cover.1405510095.git.amit.shah@redhat.com>
To ensure two virtserialports don't get added to the system with the
same 'name' parameter, we need to access all the ports on all the
devices added, and compare the names.
We currently don't have a list of all VirtIOSerial devices added to the
system. This commit adds a simple linked list in which devices are put
when they're initialized, and removed when they go away.
Signed-off-by: Amit Shah <amit.shah@redhat.com>
---
hw/char/virtio-serial-bus.c | 10 ++++++++++
include/hw/virtio/virtio-serial.h | 2 ++
2 files changed, 12 insertions(+)
diff --git a/hw/char/virtio-serial-bus.c b/hw/char/virtio-serial-bus.c
index 07bebc0..8c26f4e 100644
--- a/hw/char/virtio-serial-bus.c
+++ b/hw/char/virtio-serial-bus.c
@@ -26,6 +26,10 @@
#include "hw/virtio/virtio-serial.h"
#include "hw/virtio/virtio-access.h"
+struct VirtIOSerialDevices {
+ QLIST_HEAD(, VirtIOSerial) devices;
+} vserdevices;
+
static VirtIOSerialPort *find_port_by_id(VirtIOSerial *vser, uint32_t id)
{
VirtIOSerialPort *port;
@@ -975,6 +979,8 @@ static void virtio_serial_device_realize(DeviceState *dev, Error **errp)
*/
register_savevm(dev, "virtio-console", -1, 3, virtio_serial_save,
virtio_serial_load, vser);
+
+ QLIST_INSERT_HEAD(&vserdevices.devices, vser, next);
}
static void virtio_serial_port_class_init(ObjectClass *klass, void *data)
@@ -1003,6 +1009,8 @@ static void virtio_serial_device_unrealize(DeviceState *dev, Error **errp)
VirtIODevice *vdev = VIRTIO_DEVICE(dev);
VirtIOSerial *vser = VIRTIO_SERIAL(dev);
+ QLIST_REMOVE(vser, next);
+
unregister_savevm(dev, "virtio-console", vser);
g_free(vser->ivqs);
@@ -1027,6 +1035,8 @@ static void virtio_serial_class_init(ObjectClass *klass, void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass);
+ QLIST_INIT(&vserdevices.devices);
+
dc->props = virtio_serial_properties;
set_bit(DEVICE_CATEGORY_INPUT, dc->categories);
vdc->realize = virtio_serial_device_realize;
diff --git a/include/hw/virtio/virtio-serial.h b/include/hw/virtio/virtio-serial.h
index 4746312..a679e54 100644
--- a/include/hw/virtio/virtio-serial.h
+++ b/include/hw/virtio/virtio-serial.h
@@ -202,6 +202,8 @@ struct VirtIOSerial {
QTAILQ_HEAD(, VirtIOSerialPort) ports;
+ QLIST_ENTRY(VirtIOSerial) next;
+
/* bitmap for identifying active ports */
uint32_t *ports_map;
--
1.9.3
next prev parent reply other threads:[~2014-07-16 11:32 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-16 11:31 [Qemu-devel] [PATCH 0/2] virtio-serial: Prevent addition of ports with same name Amit Shah
2014-07-16 11:31 ` Amit Shah [this message]
2014-08-04 11:33 ` [Qemu-devel] [PATCH 1/2] virtio-serial: create a linked list of all active devices Markus Armbruster
2014-08-04 11:45 ` Amit Shah
2014-08-06 7:27 ` Markus Armbruster
2014-08-06 7:39 ` Amit Shah
2014-08-18 17:21 ` Andreas Färber
2014-08-19 15:45 ` Markus Armbruster
2014-08-19 16:15 ` Andreas Färber
2014-07-16 11:31 ` [Qemu-devel] [PATCH 2/2] virtio-serial: search for duplicate port names before adding new ports Amit Shah
2014-08-06 7:27 ` [Qemu-devel] [PATCH 0/2] virtio-serial: Prevent addition of ports with same name Markus Armbruster
2014-08-06 7:39 ` Amit Shah
2014-08-18 17:10 ` Amit Shah
2014-08-18 17:17 ` Andreas Färber
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=c6749c36478b78b14eee4e40918fb0006533f839.1405510095.git.amit.shah@redhat.com \
--to=amit.shah@redhat.com \
--cc=akong@redhat.com \
--cc=armbru@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).