[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v6 03/10] public: xen.h: add definitions for UUID handling



>>> On 03.10.17 at 14:15, <julien.grall@xxxxxxx> wrote:
> On 21/09/17 20:59, Volodymyr Babchuk wrote:
>> --- a/xen/include/public/xen.h
>> +++ b/xen/include/public/xen.h
>> @@ -930,6 +930,33 @@ __DEFINE_XEN_GUEST_HANDLE(uint16, uint16_t);
>>   __DEFINE_XEN_GUEST_HANDLE(uint32, uint32_t);
>>   __DEFINE_XEN_GUEST_HANDLE(uint64, uint64_t);
>>   
>> +typedef struct
>> +{
>> +    uint8_t a[16];
>> +} xen_uuid_t;
>> +
>> +#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
>> +
>> +#define XEN_DEFINE_UUID(a, b, c, d, e1, e2, e3, e4, e5, e6)             \
>> +    (xen_uuid_t){{((a) >> 24) & 0xFF, ((a) >> 16) & 0xFF,               \
>> +                  ((a) >>  8) & 0xFF, ((a) >>  0) & 0xFF,               \
>> +                  ((b) >>  8) & 0xFF, ((b) >>  0) & 0xFF,               \
>> +                  ((c) >>  8) & 0xFF, ((c) >>  0) & 0xFF,               \
>> +                  ((d) >>  8) & 0xFF, ((d) >>  0) & 0xFF,               \
>> +                           e1, e2, e3, e4, e5, e6}}
>> +
>> +#else
>> +
>> +#define XEN_DEFINE_UUID(a, b, c, d, e1, e2, e3, e4, e5, e6)             \
>> +    {{((a) >> 24) & 0xFF, ((a) >> 16) & 0xFF,                           \
>> +      ((a) >>  8) & 0xFF, ((a) >>  0) & 0xFF,                           \
>> +      ((b) >>  8) & 0xFF, ((b) >>  0) & 0xFF,                           \
>> +      ((c) >>  8) & 0xFF, ((c) >>  0) & 0xFF,                           \
>> +      ((d) >>  8) & 0xFF, ((d) >>  0) & 0xFF,                           \
>> +                e1, e2, e3, e4, e5, e6}}
> 
> The only difference between the two macros is the former is having the 
> cast whilst the latter not.
> 
> How about factorizing the code, i.e:
> 
> #define __XEN_DEFINE_UUID(a, b, c, d, e1, e2, e3, e4, e5, e6)
>       {{ ... }}
> 
> #if defined(....)
> 
> #define XEN_DEFINE_UUID(a, b, c, d, e1, e2, e3, e4, e5, e6) \
>     (xen_uuid_t)__XEN_DEFINE_UUID(a, b, c, d, ...)
> 
> #else
> 
> #define XEN_DEFINE_UUID(....) __XEN_DEFINE_UUID(...)
> 
> Any opinons?

I think this would render things more readable. But the helper
macro must not use a reserved name (i.e. neither two leading
underscores nor a single one followed by an upper case X is
acceptable). I'd recommend a trailing underscore here.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.