diff mbox series

[RFC,2/6] qemu/uuid: Add UUID static initializer

Message ID 20221010222944.3923556-3-ira.weiny@intel.com (mailing list archive)
State New, archived
Headers show
Series QEMU CXL Provide mock CXL events and irq support | expand

Commit Message

Ira Weiny Oct. 10, 2022, 10:29 p.m. UTC
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(+)

Comments

Jonathan Cameron Oct. 11, 2022, 9:13 a.m. UTC | #1
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-" \
Ira Weiny Oct. 13, 2022, 11:11 p.m. UTC | #2
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-" \
>
diff mbox series

Patch

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-" \