From 910b019f9371ceaab504f4e3d7f7a125eba75535 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Tue, 9 Feb 2010 13:06:56 +0000 Subject: [PATCH] Convert qemu command line flags to 64-bit int 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 0276f39603..fb06cd0028 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; @@ -2188,7 +2188,7 @@ qemuSafeSerialParamValue(const char *value) char * qemuBuildDriveStr(virDomainDiskDefPtr disk, int bootable, - int qemuCmdFlags) + unsigned long long qemuCmdFlags) { virBuffer opt = VIR_BUFFER_INITIALIZER; const char *bus = virDomainDiskQEMUBusTypeToString(disk->bus); @@ -3012,7 +3012,7 @@ no_memory: static char * qemuBuildSmpArgStr(const virDomainDefPtr def, - int qemuCmdFlags) + unsigned long long qemuCmdFlags) { virBuffer buf = VIR_BUFFER_INITIALIZER; @@ -3055,7 +3055,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 ef384d54e9..5c41a1aafd 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, @@ -203,12 +203,12 @@ char * qemuBuildNicStr(virDomainNetDefPtr net, /* 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(virDomainDiskDefPtr disk); @@ -241,7 +241,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, @@ -278,7 +278,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 c5253f4cf9..4cc66be555 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2508,7 +2508,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; @@ -4691,7 +4691,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; @@ -5563,7 +5563,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; @@ -5877,7 +5877,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; @@ -7408,7 +7408,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); @@ -7851,7 +7851,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 f07311b1c9..50c4453593 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 34a6048601..0f2b509b48 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 9af345fe64..8bdab49336 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; }; -- 2.39.5