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

Re: [Xen-devel] [PATCH v9 04/11] public: xen.h: add definitions for UUID handling



>>> On 11.10.17 at 11:29, <julien.grall@xxxxxxxxxx> wrote:
> Hi Jan,
> 
> On 11/10/17 09:54, Jan Beulich wrote:
>>>>> On 11.10.17 at 01:24, <sstabellini@xxxxxxxxxx> wrote:
>>> On Tue, 10 Oct 2017, Volodymyr Babchuk wrote:
>>>> --- a/xen/include/public/xen.h
>>>> +++ b/xen/include/public/xen.h
>>>> @@ -930,6 +930,39 @@ __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;
>>>> +
>>>> +/*
>>>> + * XEN_DEFINE_UUID(0x00112233, 0x4455, 0x6677, 0x8899,
>>>> + *                 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff)
>>>> + * will construct UUID 00112233-4455-6677-8899-aabbccddeeff presented as
>>>> + * {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
>>>> + * 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff};
>>>> + *
>>>> + * NB: This is compatible with Linux kernel and with libuuid, but it is 
>>>> not
>>>> + * compatible with Microsoft, as they use mixed-endian encoding (some
>>>> + * components are little-endian, some are big-endian).
>>>> + */
>>>> +#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}}
>>>> +
>>>> +/* Compound literals are supported in C99 and later. */
>>>> +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
>>>> +#define XEN_DEFINE_UUID(a, b, c, d, e1, e2, e3, e4, e5, e6)             \
>>>> +    ((xen_uuid_t)XEN_DEFINE_UUID_(a, b, c, d, e1, e2, e3, e4, e5, e6))
>>>> +#else
>>>> +#define XEN_DEFINE_UUID(a, b, c, d, e1, e2, e3, e4, e5, e6)             \
>>>> +    XEN_DEFINE_UUID_(a, b, c, d, e1, e2, e3, e4, e5, e6)
>>>> +
>>>> +#endif /* defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */
>>>> +
>>>>   #endif /* !__ASSEMBLY__ */
>>>>   
>>>>   /* Default definitions for macros used by domctl/sysctl. */
>>>
>>> This looks good to me, but I would like to get Jan's opinion on this.
>>> Ideally we would commit the series tomorrow before the code freeze.
>> 
>> While I can live with it being the way it is now, I've already
>> indicated that I'd prefer __GNUC__ to also be checked for
>> here. As that's a relaxation, it wouldn't be a problem to add
>> later, I think (but I can't exclude I'm overlooking something,
>> so it would feel better if it was done the intended final way
>> from the beginning).
> 
> To be clear, you ask to do:
> 
> #if defined(__GNUC__) || (defined(__STDC_VERSION__) && __STDC_VERSION__ 
>  >= 199901L)
> 
> am I correct?

Assuming this works for the range of gcc versions we support (which
I assume it does), then yes. (Cosmetic remark: I'd put the compiler
specific check last.)

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®.