[libvirt] [PATCH] Convert qemu command line flags to 64-bit int

Daniel P. Berrange berrange at redhat.com
Tue Feb 9 19:04:24 UTC 2010


The QEMU flags are commonly stored as a signed or unsigned int,
allowing only 31 flags. This limit is rather close, so to aid
future patches, change it to a 64-bit int

* src/qemu/qemu_conf.c, src/qemu/qemu_conf.h, src/qemu/qemu_driver.c,
  tests/qemuargv2xmltest.c, tests/qemuhelptest.c, tests/qemuxml2argvtest.c:
  Use 'unsigned long long' for QEMU flags
---
 src/qemu/qemu_conf.c     |   28 ++++++++++++++--------------
 src/qemu/qemu_conf.h     |   14 +++++++-------
 src/qemu/qemu_driver.c   |   12 ++++++------
 tests/qemuargv2xmltest.c |    2 +-
 tests/qemuhelptest.c     |   13 +++++++------
 tests/qemuxml2argvtest.c |    7 ++++---
 6 files changed, 39 insertions(+), 37 deletions(-)

diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
index 257b4a4..e3769c8 100644
--- a/src/qemu/qemu_conf.c
+++ b/src/qemu/qemu_conf.c
@@ -1108,12 +1108,12 @@ virCapsPtr qemudCapsInit(virCapsPtr old_caps) {
     return NULL;
 }
 
-static unsigned int qemudComputeCmdFlags(const char *help,
-                                         unsigned int version,
-                                         unsigned int is_kvm,
-                                         unsigned int kvm_version)
+static unsigned long long qemudComputeCmdFlags(const char *help,
+                                               unsigned int version,
+                                               unsigned int is_kvm,
+                                               unsigned int kvm_version)
 {
-    unsigned int flags = 0;
+    unsigned long long flags = 0;
 
     if (strstr(help, "-no-kqemu"))
         flags |= QEMUD_CMD_FLAG_KQEMU;
@@ -1236,7 +1236,7 @@ static unsigned int qemudComputeCmdFlags(const char *help,
 #define SKIP_BLANKS(p) do { while ((*(p) == ' ') || (*(p) == '\t')) (p)++; } while (0)
 
 int qemudParseHelpStr(const char *help,
-                      unsigned int *flags,
+                      unsigned long long *flags,
                       unsigned int *version,
                       unsigned int *is_kvm,
                       unsigned int *kvm_version)
@@ -1316,14 +1316,14 @@ fail:
 
 int qemudExtractVersionInfo(const char *qemu,
                             unsigned int *retversion,
-                            unsigned int *retflags) {
+                            unsigned long long *retflags) {
     const char *const qemuarg[] = { qemu, "-help", NULL };
     const char *const qemuenv[] = { "LC_ALL=C", NULL };
     pid_t child;
     int newstdout = -1;
     int ret = -1, status;
     unsigned int version, is_kvm, kvm_version;
-    unsigned int flags = 0;
+    unsigned long long flags = 0;
 
     if (retflags)
         *retflags = 0;
@@ -1425,7 +1425,7 @@ int
 qemudNetworkIfaceConnect(virConnectPtr conn,
                          struct qemud_driver *driver,
                          virDomainNetDefPtr net,
-                         int qemuCmdFlags)
+                         unsigned long long qemuCmdFlags)
 {
     char *brname = NULL;
     int err;
@@ -1637,7 +1637,7 @@ no_memory:
 
 
 int
-qemuAssignDeviceDiskAlias(virDomainDiskDefPtr def, int qemuCmdFlags)
+qemuAssignDeviceDiskAlias(virDomainDiskDefPtr def, unsigned long long qemuCmdFlags)
 {
     if (qemuCmdFlags & QEMUD_CMD_FLAG_DRIVE) {
         if (qemuCmdFlags & QEMUD_CMD_FLAG_DEVICE)
@@ -1720,7 +1720,7 @@ qemuAssignDeviceControllerAlias(virDomainControllerDefPtr controller)
 
 
 static int
-qemuAssignDeviceAliases(virDomainDefPtr def, int qemuCmdFlags)
+qemuAssignDeviceAliases(virDomainDefPtr def, unsigned long long qemuCmdFlags)
 {
     int i;
 
@@ -2189,7 +2189,7 @@ qemuSafeSerialParamValue(virConnectPtr conn,
 char *
 qemuBuildDriveStr(virDomainDiskDefPtr disk,
                   int bootable,
-                  int qemuCmdFlags)
+                  unsigned long long qemuCmdFlags)
 {
     virBuffer opt = VIR_BUFFER_INITIALIZER;
     const char *bus = virDomainDiskQEMUBusTypeToString(disk->bus);
@@ -3017,7 +3017,7 @@ no_memory:
 
 static char *
 qemuBuildSmpArgStr(const virDomainDefPtr def,
-                   int qemuCmdFlags)
+                   unsigned long long qemuCmdFlags)
 {
     virBuffer buf = VIR_BUFFER_INITIALIZER;
 
@@ -3057,7 +3057,7 @@ int qemudBuildCommandLine(virConnectPtr conn,
                           virDomainDefPtr def,
                           virDomainChrDefPtr monitor_chr,
                           int monitor_json,
-                          unsigned int qemuCmdFlags,
+                          unsigned long long qemuCmdFlags,
                           const char ***retargv,
                           const char ***retenv,
                           int **tapfds,
diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h
index 5525b6c..f6397b7 100644
--- a/src/qemu/qemu_conf.h
+++ b/src/qemu/qemu_conf.h
@@ -170,10 +170,10 @@ virCapsPtr  qemudCapsInit               (virCapsPtr old_caps);
 int         qemudExtractVersion         (struct qemud_driver *driver);
 int         qemudExtractVersionInfo     (const char *qemu,
                                          unsigned int *version,
-                                         unsigned int *flags);
+                                         unsigned long long *qemuCmdFlags);
 
 int         qemudParseHelpStr           (const char *str,
-                                         unsigned int *flags,
+                                         unsigned long long *qemuCmdFlags,
                                          unsigned int *version,
                                          unsigned int *is_kvm,
                                          unsigned int *kvm_version);
@@ -183,7 +183,7 @@ int         qemudBuildCommandLine       (virConnectPtr conn,
                                          virDomainDefPtr def,
                                          virDomainChrDefPtr monitor_chr,
                                          int monitor_json,
-                                         unsigned int qemuCmdFlags,
+                                         unsigned long long qemuCmdFlags,
                                          const char ***retargv,
                                          const char ***retenv,
                                          int **tapfds,
@@ -205,12 +205,12 @@ char * qemuBuildNicStr(virConnectPtr conn,
 
 /* Current, best practice */
 char * qemuBuildNicDevStr(virDomainNetDefPtr net,
-                          int qemuCmdFlags);
+                          int vlan);
 
 /* Both legacy & current support */
 char *qemuBuildDriveStr(virDomainDiskDefPtr disk,
                         int bootable,
-                        int qemuCmdFlags);
+                        unsigned long long qemuCmdFlags);
 
 /* Current, best practice */
 char * qemuBuildDriveDevStr(virConnectPtr conn,
@@ -244,7 +244,7 @@ char * qemuBuildUSBHostdevDevStr(virDomainHostdevDefPtr dev);
 int         qemudNetworkIfaceConnect    (virConnectPtr conn,
                                          struct qemud_driver *driver,
                                          virDomainNetDefPtr net,
-                                         int qemuCmdFlags);
+                                         unsigned long long qemuCmdFlags);
 
 int         qemudProbeMachineTypes      (const char *binary,
                                          virCapsGuestMachinePtr **machines,
@@ -283,7 +283,7 @@ int  qemuAssignDevicePCISlots(virDomainDefPtr def, qemuDomainPCIAddressSetPtr ad
 
 int qemuDomainNetVLAN(virDomainNetDefPtr def);
 int qemuAssignDeviceNetAlias(virDomainDefPtr def, virDomainNetDefPtr net, int idx);
-int qemuAssignDeviceDiskAlias(virDomainDiskDefPtr def, int qemuCmdFlags);
+int qemuAssignDeviceDiskAlias(virDomainDiskDefPtr def, unsigned long long qemuCmdFlags);
 int qemuAssignDeviceHostdevAlias(virDomainDefPtr def, virDomainHostdevDefPtr net, int idx);
 int qemuAssignDeviceControllerAlias(virDomainControllerDefPtr controller);
 
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 4374291..54d33cd 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -2520,7 +2520,7 @@ static int qemudStartVMDaemon(virConnectPtr conn,
     struct stat sb;
     int *tapfds = NULL;
     int ntapfds = 0;
-    unsigned int qemuCmdFlags;
+    unsigned long long qemuCmdFlags;
     fd_set keepfd;
     const char *emulator;
     pid_t child;
@@ -4707,7 +4707,7 @@ static char *qemuDomainXMLToNative(virConnectPtr conn,
     virDomainDefPtr def = NULL;
     virDomainChrDef monConfig;
     const char *emulator;
-    unsigned int qemuCmdFlags;
+    unsigned long long qemuCmdFlags;
     struct stat sb;
     const char **retargv = NULL;
     const char **retenv = NULL;
@@ -5586,7 +5586,7 @@ static int qemudDomainAttachNetDevice(virConnectPtr conn,
                                       struct qemud_driver *driver,
                                       virDomainObjPtr vm,
                                       virDomainNetDefPtr net,
-                                      unsigned int qemuCmdFlags)
+                                      unsigned long long qemuCmdFlags)
 {
     qemuDomainObjPrivatePtr priv = vm->privateData;
     char *tapfd_name = NULL;
@@ -5901,7 +5901,7 @@ static int qemudDomainAttachDevice(virDomainPtr dom,
     struct qemud_driver *driver = dom->conn->privateData;
     virDomainObjPtr vm;
     virDomainDeviceDefPtr dev = NULL;
-    unsigned int qemuCmdFlags;
+    unsigned long long qemuCmdFlags;
     virCgroupPtr cgroup = NULL;
     int ret = -1;
 
@@ -7437,7 +7437,7 @@ qemudDomainMigratePrepareTunnel(virConnectPtr dconn,
     int ret = -1;
     int internalret;
     char *unixfile = NULL;
-    unsigned int qemuCmdFlags;
+    unsigned long long qemuCmdFlags;
     struct qemuStreamMigFile *qemust = NULL;
 
     qemuDriverLock(driver);
@@ -7884,7 +7884,7 @@ static int doTunnelMigrate(virDomainPtr dom,
     virStreamPtr st = NULL;
     char *unixfile = NULL;
     int internalret;
-    unsigned int qemuCmdFlags;
+    unsigned long long qemuCmdFlags;
     int status;
     unsigned long long transferred, remaining, total;
 
diff --git a/tests/qemuargv2xmltest.c b/tests/qemuargv2xmltest.c
index 1f1914b..c125a34 100644
--- a/tests/qemuargv2xmltest.c
+++ b/tests/qemuargv2xmltest.c
@@ -75,7 +75,7 @@ static int testCompareXMLToArgvFiles(const char *xml,
 
 struct testInfo {
     const char *name;
-    int extraFlags;
+    unsigned long long extraFlags;
     const char *migrateFrom;
 };
 
diff --git a/tests/qemuhelptest.c b/tests/qemuhelptest.c
index 34a6048..0f2b509 100644
--- a/tests/qemuhelptest.c
+++ b/tests/qemuhelptest.c
@@ -12,10 +12,10 @@
 
 struct testInfo {
     const char *name;
-    unsigned flags;
-    unsigned version;
-    unsigned is_kvm;
-    unsigned kvm_version;
+    unsigned long long flags;
+    unsigned int version;
+    unsigned int is_kvm;
+    unsigned int kvm_version;
 };
 
 static char *progname;
@@ -41,7 +41,8 @@ static int testHelpStrParsing(const void *data)
     char path[PATH_MAX];
     char helpStr[MAX_HELP_OUTPUT_SIZE];
     char *help = &(helpStr[0]);
-    unsigned flags, version, is_kvm, kvm_version;
+    unsigned int version, is_kvm, kvm_version;
+    unsigned long long flags;
 
     snprintf(path, PATH_MAX, "%s/qemuhelpdata/%s", abs_srcdir, info->name);
 
@@ -52,7 +53,7 @@ static int testHelpStrParsing(const void *data)
         return -1;
 
     if (flags != info->flags) {
-        fprintf(stderr, "Computed flags do not match: got 0x%x, expected 0x%x\n",
+        fprintf(stderr, "Computed flags do not match: got 0x%llx, expected 0x%llx\n",
                 flags, info->flags);
 
         if (getenv("VIR_TEST_DEBUG"))
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 67dc47e..f4908b8 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -24,7 +24,7 @@ static struct qemud_driver driver;
 
 static int testCompareXMLToArgvFiles(const char *xml,
                                      const char *cmd,
-                                     int extraFlags,
+                                     unsigned long long extraFlags,
                                      const char *migrateFrom) {
     char argvData[MAX_FILE];
     char *expectargv = &(argvData[0]);
@@ -32,7 +32,8 @@ static int testCompareXMLToArgvFiles(const char *xml,
     const char **argv = NULL;
     const char **qenv = NULL;
     const char **tmp = NULL;
-    int ret = -1, len, flags;
+    int ret = -1, len;
+    unsigned long long flags;
     virDomainDefPtr vmdef = NULL;
     virDomainChrDef monitor_chr;
 
@@ -142,7 +143,7 @@ static int testCompareXMLToArgvFiles(const char *xml,
 
 struct testInfo {
     const char *name;
-    int extraFlags;
+    unsigned long long extraFlags;
     const char *migrateFrom;
 };
 
-- 
1.6.6




More information about the libvir-list mailing list