> On 2 May 2024, at 07:14, Jan Beulich <[email protected]> wrote:
> 
> On 01.05.2024 08:57, Luca Fancellu wrote:
>> Hi Jan,
>> 
>>> On 30 Apr 2024, at 12:37, Jan Beulich <[email protected]> wrote:
>>> 
>>> On 30.04.2024 13:09, Luca Fancellu wrote:
>>>> --- a/xen/arch/arm/include/asm/setup.h
>>>> +++ b/xen/arch/arm/include/asm/setup.h
>>>> @@ -64,18 +64,20 @@ struct membank {
>>>> };
>>>> 
>>>> struct membanks {
>>>> -    unsigned int nr_banks;
>>>> -    unsigned int max_banks;
>>>> +    __struct_group(membanks_hdr, common, ,
>>>> +        unsigned int nr_banks;
>>>> +        unsigned int max_banks;
>>>> +    );
>>>>    struct membank bank[];
>>>> };
>>> 
>>> I'm afraid I can't spot why __struct_group() is needed here. Why would just
>>> one of the two more straightforward
>>> 
>>> struct membanks {
>>>   struct membanks_hdr {
>>>       unsigned int nr_banks;
>>>       unsigned int max_banks;
>>>   );
>>>   struct membank bank[];
>>> };
>>> 
>> 
>> At the first sight I thought this solution could have worked, however GCC 
>> brought me back down to earth
>> remembering me that flexible array members can’t be left alone in an empty 
>> structure:
>> 
>> /data_sdc/lucfan01/gitlab_mickledore_xen/xen/xen/arch/arm/include/asm/setup.h:70:6:
>>  error: declaration does not declare anything [-Werror]
>> 70 | };
>> | ^
>> /data_sdc/lucfan01/gitlab_mickledore_xen/xen/xen/arch/arm/include/asm/setup.h:71:20:
>>  error: flexible array member in a struct with no named members
>> 71 | struct membank bank[];
>> | ^~~~
>> [...]
> 
> Since for patch 1 you looked at Linux'es uapi/linux/stddef.h, the solution
> to this lies there, in __DECLARE_FLEX_ARRAY(). Alongside or instead of
> borrowing __struct_group(), we could consider borrowing this as well. Or
> open-code it just here, for the time being (perhaps my preference). Yet
> it's not clear to me that doing so will actually be enough to make things
> work for you.

I looked also into __DECLARE_FLEX_ARRAY(), but then decided __struct_group()
was enough for my purpose, can I ask the technical reasons why it would be your
preference? Is there something in that construct that is a concern for you?


Reply via email to