|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 01/16] xen/mm: Don't use _{g, m}fn for defining INVALID_{G, M}FN
>>> On 20.06.17 at 12:06, <tim@xxxxxxx> wrote:
> At 03:36 -0600 on 20 Jun (1497929778), Jan Beulich wrote:
>> >>> On 20.06.17 at 11:14, <tim@xxxxxxx> wrote:
>> > At 01:32 -0600 on 20 Jun (1497922345), Jan Beulich wrote:
>> >> >>> On 19.06.17 at 18:57, <julien.grall@xxxxxxx> wrote:
>> >> > --- a/xen/include/xen/mm.h
>> >> > +++ b/xen/include/xen/mm.h
>> >> > @@ -56,7 +56,7 @@
>> >> >
>> >> > TYPE_SAFE(unsigned long, mfn);
>> >> > #define PRI_mfn "05lx"
>> >> > -#define INVALID_MFN _mfn(~0UL)
>> >> > +#define INVALID_MFN (mfn_t){ ~0UL }
>> >>
>> >> While I don't expect anyone to wish to use a suffix expression on
>> >> this constant, for maximum compatibility this should still be fully
>> >> parenthesized, I think. Of course this should be easy enough to
>> >> do while committing.
>> >>
>> >> Are you able to assure us that clang supports this gcc extension
>> >> (compound literal for non-compound types)
>> >
>> > AIUI this is a C99 feature, not a GCCism.
>>
>> Most parts of it yes (it is a gcc extension in C89 mode only), but the
>> specific use here isn't afaict: Compound literals outside of functions
>> are static objects, and hence couldn't be used as initializers of other
>> objects.
>
> Ah, I see. So would it be better to use
>
> #define INVALID_MFN ((const mfn_t) { ~0UL })
>
> ?
While I think we should indeed consider adding the const, the above
still is a static object, and hence still not suitable as an initializer as
per C99 or C11. But as long as gcc and clang permit it, we're fine.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |