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