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[];
};

struct membanks {
    struct membanks_hdr {
        unsigned int nr_banks;
        unsigned int max_banks;
    ) common;
    struct membank bank[];
};

not do? (Perhaps the latter, seeing that you need the field name in ...

>  struct meminfo {
> -    struct membanks common;
> +    struct membanks_hdr common;
>      struct membank bank[NR_MEM_BANKS];
>  };
>  
>  struct shared_meminfo {
> -    struct membanks common;
> +    struct membanks_hdr common;
>      struct membank bank[NR_SHMEM_BANKS];
>      struct shmem_membank_extra extra[NR_SHMEM_BANKS];
>  };
> @@ -166,25 +168,25 @@ extern domid_t max_init_domid;
>  
>  static inline struct membanks *bootinfo_get_mem(void)
>  {
> -    return &bootinfo.mem.common;
> +    return container_of(&bootinfo.mem.common, struct membanks, common);
>  }

... container_of() uses.)

Jan

Reply via email to