From: Ira Weiny <ira.weiny@intel.com>
UUID's are defined as network byte order fields. No static initializer
was available for UUID's in their standard big endian format.
Define a big endian initializer for UUIDs.
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
---
include/qemu/uuid.h | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/include/qemu/uuid.h b/include/qemu/uuid.h
index 9925febfa54d..dc40ee1fc998 100644
--- a/include/qemu/uuid.h
+++ b/include/qemu/uuid.h
@@ -61,6 +61,18 @@ typedef struct {
(clock_seq_hi_and_reserved), (clock_seq_low), (node0), (node1), (node2),\
(node3), (node4), (node5) }
+/* Normal (network byte order) UUID */
+#define UUID(time_low, time_mid, time_hi_and_version, \
+ clock_seq_hi_and_reserved, clock_seq_low, node0, node1, node2, \
+ node3, node4, node5) \
+ { ((time_low) >> 24) & 0xff, ((time_low) >> 16) & 0xff, \
+ ((time_low) >> 8) & 0xff, (time_low) & 0xff, \
+ ((time_mid) >> 8) & 0xff, (time_mid) & 0xff, \
+ ((time_hi_and_version) >> 8) & 0xff, (time_hi_and_version) & 0xff, \
+ (clock_seq_hi_and_reserved), (clock_seq_low), \
+ (node0), (node1), (node2), (node3), (node4), (node5) \
+ }
+
#define UUID_FMT "%02hhx%02hhx%02hhx%02hhx-" \
"%02hhx%02hhx-%02hhx%02hhx-" \
"%02hhx%02hhx-" \
--
2.37.2
On Mon, 10 Oct 2022 15:29:40 -0700
ira.weiny@intel.com wrote:
> From: Ira Weiny <ira.weiny@intel.com>
>
> UUID's are defined as network byte order fields. No static initializer
> was available for UUID's in their standard big endian format.
>
> Define a big endian initializer for UUIDs.
>
> Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Seems sensible. Would allow a cleanup in the existing cel_uuid handling
in the CXL code where we use a static for this and end up filling it
with the same value multiple times which is less than ideal...
A quick grep and for qemu_uuid_parse() suggests there are other cases
where it's passed a constant string.
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> ---
> include/qemu/uuid.h | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/include/qemu/uuid.h b/include/qemu/uuid.h
> index 9925febfa54d..dc40ee1fc998 100644
> --- a/include/qemu/uuid.h
> +++ b/include/qemu/uuid.h
> @@ -61,6 +61,18 @@ typedef struct {
> (clock_seq_hi_and_reserved), (clock_seq_low), (node0), (node1), (node2),\
> (node3), (node4), (node5) }
>
> +/* Normal (network byte order) UUID */
> +#define UUID(time_low, time_mid, time_hi_and_version, \
> + clock_seq_hi_and_reserved, clock_seq_low, node0, node1, node2, \
> + node3, node4, node5) \
> + { ((time_low) >> 24) & 0xff, ((time_low) >> 16) & 0xff, \
> + ((time_low) >> 8) & 0xff, (time_low) & 0xff, \
> + ((time_mid) >> 8) & 0xff, (time_mid) & 0xff, \
> + ((time_hi_and_version) >> 8) & 0xff, (time_hi_and_version) & 0xff, \
> + (clock_seq_hi_and_reserved), (clock_seq_low), \
> + (node0), (node1), (node2), (node3), (node4), (node5) \
> + }
> +
> #define UUID_FMT "%02hhx%02hhx%02hhx%02hhx-" \
> "%02hhx%02hhx-%02hhx%02hhx-" \
> "%02hhx%02hhx-" \
On Tue, Oct 11, 2022 at 10:13:17AM +0100, Jonathan Cameron wrote:
> On Mon, 10 Oct 2022 15:29:40 -0700
> ira.weiny@intel.com wrote:
>
> > From: Ira Weiny <ira.weiny@intel.com>
> >
> > UUID's are defined as network byte order fields. No static initializer
> > was available for UUID's in their standard big endian format.
> >
> > Define a big endian initializer for UUIDs.
> >
> > Signed-off-by: Ira Weiny <ira.weiny@intel.com>
>
> Seems sensible. Would allow a cleanup in the existing cel_uuid handling
> in the CXL code where we use a static for this and end up filling it
> with the same value multiple times which is less than ideal...
> A quick grep and for qemu_uuid_parse() suggests there are other cases
> where it's passed a constant string.
I'll see if I can find time to clean that up.
>
> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Thanks,
Ira
>
> > ---
> > include/qemu/uuid.h | 12 ++++++++++++
> > 1 file changed, 12 insertions(+)
> >
> > diff --git a/include/qemu/uuid.h b/include/qemu/uuid.h
> > index 9925febfa54d..dc40ee1fc998 100644
> > --- a/include/qemu/uuid.h
> > +++ b/include/qemu/uuid.h
> > @@ -61,6 +61,18 @@ typedef struct {
> > (clock_seq_hi_and_reserved), (clock_seq_low), (node0), (node1), (node2),\
> > (node3), (node4), (node5) }
> >
> > +/* Normal (network byte order) UUID */
> > +#define UUID(time_low, time_mid, time_hi_and_version, \
> > + clock_seq_hi_and_reserved, clock_seq_low, node0, node1, node2, \
> > + node3, node4, node5) \
> > + { ((time_low) >> 24) & 0xff, ((time_low) >> 16) & 0xff, \
> > + ((time_low) >> 8) & 0xff, (time_low) & 0xff, \
> > + ((time_mid) >> 8) & 0xff, (time_mid) & 0xff, \
> > + ((time_hi_and_version) >> 8) & 0xff, (time_hi_and_version) & 0xff, \
> > + (clock_seq_hi_and_reserved), (clock_seq_low), \
> > + (node0), (node1), (node2), (node3), (node4), (node5) \
> > + }
> > +
> > #define UUID_FMT "%02hhx%02hhx%02hhx%02hhx-" \
> > "%02hhx%02hhx-%02hhx%02hhx-" \
> > "%02hhx%02hhx-" \
>
© 2016 - 2026 Red Hat, Inc.