All of lore.kernel.org
 help / color / mirror / Atom feed
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
> 

  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.