qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] qdev-monitor.c: Add device id generation
@ 2015-08-24 18:53 Programmingkid
  2015-08-24 22:21 ` Eric Blake
  2015-08-25 12:38 ` [Qemu-devel] Should we auto-generate IDs? (was: [PATCH] qdev-monitor.c: Add device id generation) Markus Armbruster
  0 siblings, 2 replies; 79+ messages in thread
From: Programmingkid @ 2015-08-24 18:53 UTC (permalink / raw)
  To: qemu-devel qemu-devel, Markus Armbruster

[-- Attachment #1: Type: text/plain, Size: 2328 bytes --]

Add device ID generation to each device if an ID isn't given.

Signed-off-by: John Arbuckle <programmingkidx@gmail.com>

---
This patch can be tested by adding adding usb devices using the monitor.
Start QEMU with the -usb option. Then go to the monitor and type
"device_add usb-mouse". The ID of the device will be set to a number.
Since QEMU will not allow an user to add a device with an ID set to a
number, there is no chance for ID collisions. 

 qdev-monitor.c |   24 ++++++++++++++++++------
 1 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/qdev-monitor.c b/qdev-monitor.c
index f9e2d62..98267c4 100644
--- a/qdev-monitor.c
+++ b/qdev-monitor.c
@@ -26,6 +26,10 @@
 #include "qapi/qmp/qerror.h"
 #include "qemu/config-file.h"
 #include "qemu/error-report.h"
+#include <math.h>
+
+/* USB's max number of devices is 127. This number is 3 digits long. */
+#define MAX_NUM_DIGITS_FOR_USB_ID 3
 
 /*
  * Aliases were a bad idea from the start.  Let's keep them
@@ -574,17 +578,25 @@ DeviceState *qdev_device_add(QemuOpts *opts, Error **errp)
     id = qemu_opts_id(opts);
     if (id) {
         dev->id = id;
+    } else { /* create an id for a device if none is provided */
+        static int device_id_count;
+
+        /* Add one for '\0' character */
+        char *device_id = (char *) malloc(sizeof(char) *
+                                            MAX_NUM_DIGITS_FOR_USB_ID + 1);
+        sprintf(device_id, "%d", device_id_count++);
+        dev->id = (const char *) device_id;
+
+        /* if device_id_count >= 10^MAX_NUM_DIGITS_FOR_USB_ID */
+        if (device_id_count >= pow(10, MAX_NUM_DIGITS_FOR_USB_ID)) {
+            printf("Warning: Maximum number of device ID's generated!\n\a");
+            printf("Time for you to make your own device ID's.\n");
+        }
     }
 
     if (dev->id) {
         object_property_add_child(qdev_get_peripheral(), dev->id,
                                   OBJECT(dev), NULL);
-    } else {
-        static int anon_count;
-        gchar *name = g_strdup_printf("device[%d]", anon_count++);
-        object_property_add_child(qdev_get_peripheral_anon(), name,
-                                  OBJECT(dev), NULL);
-        g_free(name);
     }
 
     /* set properties */
-- 
1.7.5.4


[-- Attachment #2: Type: text/html, Size: 12232 bytes --]

^ permalink raw reply related	[flat|nested] 79+ messages in thread

end of thread, other threads:[~2015-09-03 16:12 UTC | newest]

Thread overview: 79+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-24 18:53 [Qemu-devel] [PATCH] qdev-monitor.c: Add device id generation Programmingkid
2015-08-24 22:21 ` Eric Blake
2015-08-25 12:42   ` Markus Armbruster
2015-08-25 15:25     ` Programmingkid
2015-08-25 15:33       ` Peter Maydell
2015-08-25 15:50         ` Programmingkid
2015-08-25 18:30           ` Markus Armbruster
2015-08-25 19:05             ` Programmingkid
2015-08-25 14:33   ` Programmingkid
2015-08-25 12:38 ` [Qemu-devel] Should we auto-generate IDs? (was: [PATCH] qdev-monitor.c: Add device id generation) Markus Armbruster
2015-08-25 15:15   ` Programmingkid
2015-08-26 14:52   ` Programmingkid
2015-08-26 16:31     ` [Qemu-devel] Should we auto-generate IDs? Markus Armbruster
2015-08-26 17:16       ` Programmingkid
2015-08-26 18:45         ` Peter Maydell
2015-08-26 21:48           ` Programmingkid
2015-08-26 22:08             ` John Snow
2015-08-27  3:40               ` Programmingkid
2015-08-27  5:39                 ` Markus Armbruster
2015-08-27 15:39                   ` Programmingkid
2015-08-26 17:25       ` Jeff Cody
2015-08-26 17:29         ` Programmingkid
2015-08-26 18:08           ` Jeff Cody
2015-08-26 18:17             ` Programmingkid
2015-08-26 22:01               ` Jeff Cody
2015-08-26 22:04                 ` John Snow
2015-08-27  3:26                   ` Programmingkid
2015-08-27  3:22                 ` Programmingkid
2015-08-27 12:32                   ` Jeff Cody
2015-08-27 13:00                     ` Eric Blake
2015-08-27 13:39                       ` Programmingkid
2015-08-27 13:51                         ` Daniel P. Berrange
2015-08-27 14:01                           ` Eric Blake
2015-08-27 14:18                             ` Jeff Cody
2015-08-27 14:19                             ` Programmingkid
2015-08-27 14:01                           ` Programmingkid
2015-08-27 18:59                       ` John Snow
2015-08-27 19:20                         ` Eric Blake
2015-08-27 13:33                     ` Programmingkid
2015-08-27 13:49                       ` Daniel P. Berrange
2015-08-27 13:56                         ` Programmingkid
2015-08-27 14:02                           ` Eric Blake
2015-08-27 14:34                             ` Programmingkid
2015-08-27 14:42                               ` Daniel P. Berrange
2015-08-27 15:20                                 ` Programmingkid
2015-08-27 15:40                                   ` Jeff Cody
2015-08-27 15:58                                     ` Programmingkid
2015-08-27 16:02                                       ` Daniel P. Berrange
2015-08-27 16:08                                         ` Programmingkid
2015-08-27 16:22                                           ` Daniel P. Berrange
2015-08-27 16:49                                             ` Programmingkid
2015-08-27 20:15                                             ` Programmingkid
2015-08-27 19:08                                         ` Jeff Cody
2015-08-27 19:27                                           ` Eric Blake
2015-08-27 20:37                                             ` Jeff Cody
2015-08-27 14:06                           ` Daniel P. Berrange
2015-08-27 14:54                             ` Programmingkid
2015-08-27 14:07                       ` Jeff Cody
2015-08-27 15:13                         ` Programmingkid
2015-08-27 15:19                           ` Daniel P. Berrange
2015-08-27 15:22                             ` Programmingkid
2015-08-27 15:55                               ` Daniel P. Berrange
2015-08-27 16:03                                 ` Programmingkid
2015-08-27 16:06                                   ` Daniel P. Berrange
2015-08-27 16:08                                     ` Eric Blake
2015-09-01 12:34                     ` Kevin Wolf
2015-09-01 14:18                       ` Programmingkid
2015-09-01 14:43                         ` Kevin Wolf
2015-09-01 15:55                           ` Programmingkid
2015-09-03 14:34       ` Programmingkid
2015-09-03 14:43         ` Jeff Cody
2015-09-03 15:55           ` Programmingkid
2015-09-03 16:12           ` [Qemu-devel] [PATCH v3] qdev-monitor.c: Add device id generation Programmingkid
2015-08-26 17:28   ` [Qemu-devel] Should we auto-generate IDs? (was: [PATCH] qdev-monitor.c: Add device id generation) Daniel P. Berrange
2015-08-26 17:46     ` Programmingkid
2015-08-26 17:53       ` Daniel P. Berrange
2015-08-26 18:01         ` Programmingkid
2015-08-27 13:54           ` Daniel P. Berrange
2015-08-27 14:03             ` Programmingkid

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).