From: Jeff Cody <jcody@redhat.com>
To: Fam Zheng <famz@redhat.com>
Cc: qemu-devel@nongnu.org, kwolf@redhat.com, qemu-block@nongnu.org,
sw@weilnetz.de, mdroth@linux.vnet.ibm.com, armbru@redhat.com,
pbonzini@redhat.com, mreitz@redhat.com, berrange@redhat.com
Subject: Re: [Qemu-devel] [PATCH v3 8/9] vl: Switch qemu_uuid to QemuUUID
Date: Tue, 9 Aug 2016 17:45:54 -0400 [thread overview]
Message-ID: <20160809214554.GB5270@localhost.localdomain> (raw)
In-Reply-To: <1470725407-5051-9-git-send-email-famz@redhat.com>
On Tue, Aug 09, 2016 at 02:50:06PM +0800, Fam Zheng wrote:
> Update all qemu_uuid users as well, especially get rid of the duplicated
> low level g_strdup_printf, sscanf and snprintf calls with QEMU UUID API.
>
> Since qemu_uuid_parse is quite tangled with qemu_uuid, it's switching to
> QemuUUID is done here too to keep everything in sync and avoid code
> churn.
>
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
> hw/ipmi/ipmi_bmc_sim.c | 2 +-
> hw/nvram/fw_cfg.c | 2 +-
> hw/ppc/spapr.c | 7 +------
> hw/smbios/smbios.c | 10 +++++-----
> hw/xenpv/xen_domainbuild.c | 6 +-----
> include/qemu/uuid.h | 2 +-
> include/sysemu/sysemu.h | 3 ++-
> qmp.c | 10 ++--------
> util/uuid.c | 11 ++++++-----
> vl.c | 6 +++---
> 10 files changed, 23 insertions(+), 36 deletions(-)
>
> diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c
> index dc9c14c..17c7c0e 100644
> --- a/hw/ipmi/ipmi_bmc_sim.c
> +++ b/hw/ipmi/ipmi_bmc_sim.c
> @@ -1773,7 +1773,7 @@ static void ipmi_sim_realize(DeviceState *dev, Error **errp)
> ibs->acpi_power_state[1] = 0;
>
> if (qemu_uuid_set) {
> - memcpy(&ibs->uuid, qemu_uuid, 16);
> + memcpy(&ibs->uuid, &qemu_uuid, 16);
> } else {
> memset(&ibs->uuid, 0, 16);
> }
> diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c
> index 6a68e59..0118299 100644
> --- a/hw/nvram/fw_cfg.c
> +++ b/hw/nvram/fw_cfg.c
> @@ -883,7 +883,7 @@ static void fw_cfg_init1(DeviceState *dev)
> qdev_init_nofail(dev);
>
> fw_cfg_add_bytes(s, FW_CFG_SIGNATURE, (char *)"QEMU", 4);
> - fw_cfg_add_bytes(s, FW_CFG_UUID, qemu_uuid, 16);
> + fw_cfg_add_bytes(s, FW_CFG_UUID, &qemu_uuid, 16);
> fw_cfg_add_i16(s, FW_CFG_NOGRAPHIC, (uint16_t)!machine->enable_graphics);
> fw_cfg_add_i16(s, FW_CFG_NB_CPUS, (uint16_t)smp_cpus);
> fw_cfg_add_i16(s, FW_CFG_BOOT_MENU, (uint16_t)boot_menu);
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 57564e5..1eef001 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -375,12 +375,7 @@ static void *spapr_create_fdt_skel(hwaddr initrd_base,
> g_free(buf);
> }
>
> - buf = g_strdup_printf(UUID_FMT, qemu_uuid[0], qemu_uuid[1],
> - qemu_uuid[2], qemu_uuid[3], qemu_uuid[4],
> - qemu_uuid[5], qemu_uuid[6], qemu_uuid[7],
> - qemu_uuid[8], qemu_uuid[9], qemu_uuid[10],
> - qemu_uuid[11], qemu_uuid[12], qemu_uuid[13],
> - qemu_uuid[14], qemu_uuid[15]);
> + buf = qemu_uuid_unparse_strdup(&qemu_uuid);
>
> _FDT((fdt_property_string(fdt, "vm,uuid", buf)));
> if (qemu_uuid_set) {
> diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c
> index 0705eb1..595f1f2 100644
> --- a/hw/smbios/smbios.c
> +++ b/hw/smbios/smbios.c
> @@ -409,7 +409,7 @@ static void smbios_build_type_1_fields(void)
> * BIOS.
> */
> smbios_add_field(1, offsetof(struct smbios_type_1, uuid),
> - qemu_uuid, 16);
> + &qemu_uuid, 16);
> }
> }
>
> @@ -484,9 +484,9 @@ static void smbios_build_type_0_table(void)
> /* Encode UUID from the big endian encoding described on RFC4122 to the wire
> * format specified by SMBIOS version 2.6.
> */
> -static void smbios_encode_uuid(struct smbios_uuid *uuid, const uint8_t *buf)
> +static void smbios_encode_uuid(struct smbios_uuid *uuid, QemuUUID *in)
> {
> - memcpy(uuid, buf, 16);
> + memcpy(uuid, &in, 16);
> if (smbios_uuid_encoded) {
> uuid->time_low = bswap32(uuid->time_low);
> uuid->time_mid = bswap16(uuid->time_mid);
> @@ -503,7 +503,7 @@ static void smbios_build_type_1_table(void)
> SMBIOS_TABLE_SET_STR(1, version_str, type1.version);
> SMBIOS_TABLE_SET_STR(1, serial_number_str, type1.serial);
> if (qemu_uuid_set) {
> - smbios_encode_uuid(&t->uuid, qemu_uuid);
> + smbios_encode_uuid(&t->uuid, &qemu_uuid);
> } else {
> memset(&t->uuid, 0, 16);
> }
> @@ -1002,7 +1002,7 @@ void smbios_entry_add(QemuOpts *opts)
>
> val = qemu_opt_get(opts, "uuid");
> if (val) {
> - if (qemu_uuid_parse(val, qemu_uuid) != 0) {
> + if (qemu_uuid_parse(&qemu_uuid, val) != 0) {
> error_report("Invalid UUID");
> exit(1);
> }
> diff --git a/hw/xenpv/xen_domainbuild.c b/hw/xenpv/xen_domainbuild.c
> index 5a9f5ac..deacc5b 100644
> --- a/hw/xenpv/xen_domainbuild.c
> +++ b/hw/xenpv/xen_domainbuild.c
> @@ -53,11 +53,7 @@ int xenstore_domain_init1(const char *kernel, const char *ramdisk,
> char *dom, uuid_string[42], vm[256], path[256];
> int i;
>
> - snprintf(uuid_string, sizeof(uuid_string), UUID_FMT,
> - qemu_uuid[0], qemu_uuid[1], qemu_uuid[2], qemu_uuid[3],
> - qemu_uuid[4], qemu_uuid[5], qemu_uuid[6], qemu_uuid[7],
> - qemu_uuid[8], qemu_uuid[9], qemu_uuid[10], qemu_uuid[11],
> - qemu_uuid[12], qemu_uuid[13], qemu_uuid[14], qemu_uuid[15]);
> + qemu_uuid_unparse(uuid_string, &qemu_uuid);
> dom = xs_get_domain_path(xenstore, xen_domid);
> snprintf(vm, sizeof(vm), "/vm/%s", uuid_string);
>
> diff --git a/include/qemu/uuid.h b/include/qemu/uuid.h
> index 80a75c2..3f51bb8 100644
> --- a/include/qemu/uuid.h
> +++ b/include/qemu/uuid.h
> @@ -41,7 +41,7 @@ void qemu_uuid_unparse(char *out, const QemuUUID *uuid);
>
> char *qemu_uuid_unparse_strdup(const QemuUUID *uuid);
>
> -int qemu_uuid_parse(const char *str, uint8_t *uuid);
> +int qemu_uuid_parse(QemuUUID *uuid, const char *str);
>
> void qemu_uuid_convert(QemuUUID *uuid);
>
> diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
> index 6111950..ef2c50b 100644
> --- a/include/sysemu/sysemu.h
> +++ b/include/sysemu/sysemu.h
> @@ -9,6 +9,7 @@
> #include "qemu/notify.h"
> #include "qemu/main-loop.h"
> #include "qemu/bitmap.h"
> +#include "qemu/uuid.h"
> #include "qom/object.h"
>
> /* vl.c */
> @@ -16,7 +17,7 @@
> extern const char *bios_name;
>
> extern const char *qemu_name;
> -extern uint8_t qemu_uuid[];
> +extern QemuUUID qemu_uuid;
> extern bool qemu_uuid_set;
>
> bool runstate_check(RunState state);
> diff --git a/qmp.c b/qmp.c
> index 0b65ba3..c579a7f 100644
> --- a/qmp.c
> +++ b/qmp.c
> @@ -36,6 +36,7 @@
> #include "qom/object_interfaces.h"
> #include "hw/mem/pc-dimm.h"
> #include "hw/acpi/acpi_dev_interface.h"
> +#include "qemu/uuid.h"
>
> NameInfo *qmp_query_name(Error **errp)
> {
> @@ -85,15 +86,8 @@ KvmInfo *qmp_query_kvm(Error **errp)
> UuidInfo *qmp_query_uuid(Error **errp)
> {
> UuidInfo *info = g_malloc0(sizeof(*info));
> - char uuid[64];
>
> - snprintf(uuid, sizeof(uuid), UUID_FMT, qemu_uuid[0], qemu_uuid[1],
> - qemu_uuid[2], qemu_uuid[3], qemu_uuid[4], qemu_uuid[5],
> - qemu_uuid[6], qemu_uuid[7], qemu_uuid[8], qemu_uuid[9],
> - qemu_uuid[10], qemu_uuid[11], qemu_uuid[12], qemu_uuid[13],
> - qemu_uuid[14], qemu_uuid[15]);
> -
> - info->UUID = g_strdup(uuid);
> + info->UUID = qemu_uuid_unparse_strdup(&qemu_uuid);
> return info;
> }
>
> diff --git a/util/uuid.c b/util/uuid.c
> index 80c89f0..5d8bc88 100644
> --- a/util/uuid.c
> +++ b/util/uuid.c
> @@ -61,18 +61,19 @@ char *qemu_uuid_unparse_strdup(const QemuUUID *uuid)
> uu[13], uu[14], uu[15]);
> }
>
> -int qemu_uuid_parse(const char *str, uint8_t *uuid)
> +int qemu_uuid_parse(QemuUUID *uuid, const char *str)
Wait, what's going on here? Why switch the argument order away from the
libuuid order?
> {
> + unsigned char *uu = &uuid->data[0];
> int ret;
>
> if (strlen(str) != 36) {
> return -1;
> }
>
> - ret = sscanf(str, UUID_FMT, &uuid[0], &uuid[1], &uuid[2], &uuid[3],
> - &uuid[4], &uuid[5], &uuid[6], &uuid[7], &uuid[8], &uuid[9],
> - &uuid[10], &uuid[11], &uuid[12], &uuid[13], &uuid[14],
> - &uuid[15]);
> + ret = sscanf(str, UUID_FMT, &uu[0], &uu[1], &uu[2], &uu[3],
> + &uu[4], &uu[5], &uu[6], &uu[7], &uu[8], &uu[9],
> + &uu[10], &uu[11], &uu[12], &uu[13], &uu[14],
> + &uu[15]);
>
> if (ret != 16) {
> return -1;
> diff --git a/vl.c b/vl.c
> index 3d96684..9108482 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -182,10 +182,10 @@ uint8_t qemu_extra_params_fw[2];
>
> int icount_align_option;
>
> -/* The bytes in qemu_uuid[] are in the order specified by RFC4122, _not_ in the
> +/* The bytes in qemu_uuid are in the order specified by RFC4122, _not_ in the
> * little-endian "wire format" described in the SMBIOS 2.6 specification.
> */
> -uint8_t qemu_uuid[16];
> +QemuUUID qemu_uuid;
> bool qemu_uuid_set;
>
> static NotifierList exit_notifiers =
> @@ -3724,7 +3724,7 @@ int main(int argc, char **argv, char **envp)
> cursor_hide = 0;
> break;
> case QEMU_OPTION_uuid:
> - if(qemu_uuid_parse(optarg, qemu_uuid) < 0) {
> + if (qemu_uuid_parse(&qemu_uuid, optarg) < 0) {
> error_report("failed to parse UUID string: wrong format");
> exit(1);
> }
> --
> 2.7.4
>
next prev parent reply other threads:[~2016-08-09 21:46 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-09 6:49 [Qemu-devel] [PATCH v3 0/9] UUID clean ups for 2.8 Fam Zheng
2016-08-09 6:49 ` [Qemu-devel] [PATCH v3 1/9] util: Add UUID API Fam Zheng
2016-08-09 19:46 ` Jeff Cody
2016-08-10 1:25 ` Fam Zheng
2016-08-09 21:45 ` Jeff Cody
2016-08-10 10:55 ` Richard Henderson
2016-08-11 4:33 ` Fam Zheng
2016-08-09 6:50 ` [Qemu-devel] [PATCH v3 2/9] vhdx: Use QEMU " Fam Zheng
2016-08-09 6:50 ` [Qemu-devel] [PATCH v3 3/9] vdi: " Fam Zheng
2016-08-09 6:50 ` [Qemu-devel] [PATCH v3 4/9] vpc: " Fam Zheng
2016-08-09 6:50 ` [Qemu-devel] [PATCH v3 5/9] crypto: Switch to " Fam Zheng
2016-08-09 6:50 ` [Qemu-devel] [PATCH v3 6/9] tests: No longer dependent on CONFIG_UUID Fam Zheng
2016-08-09 6:50 ` [Qemu-devel] [PATCH v3 7/9] configure: Remove detection code for UUID Fam Zheng
2016-08-09 6:50 ` [Qemu-devel] [PATCH v3 8/9] vl: Switch qemu_uuid to QemuUUID Fam Zheng
2016-08-09 21:45 ` Jeff Cody [this message]
2016-08-10 1:28 ` Fam Zheng
2016-08-10 3:13 ` Jeff Cody
2016-08-09 6:50 ` [Qemu-devel] [PATCH v3 9/9] tests: Add uuid tests Fam Zheng
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=20160809214554.GB5270@localhost.localdomain \
--to=jcody@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=famz@redhat.com \
--cc=kwolf@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=mreitz@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=sw@weilnetz.de \
/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).