On 6/6/24 3:36 AM, Edward Liaw wrote: > thuge-gen.c defines SHM_HUGE_* macros that are provided by the uapi > since 4.14. These macros get redefined when compiling with Android's > bionic because its sys/shm.h will import the uapi definitions. > > However if linux/shm.h is included, with glibc, sys/shm.h will clash on > some struct definitions: > > /usr/include/linux/shm.h:26:8: error: redefinition of ‘struct shmid_ds’ > 26 | struct shmid_ds { > | ^~~~~~~~ > In file included from /usr/include/x86_64-linux-gnu/bits/shm.h:45, > from /usr/include/x86_64-linux-gnu/sys/shm.h:30: > /usr/include/x86_64-linux-gnu/bits/types/struct_shmid_ds.h:24:8: note: originally defined here > 24 | struct shmid_ds > | ^~~~~~~~ > > For now, guard the SHM_HUGE_* defines with ifndef to prevent > redefinition warnings on Android bionic. LGTM Reviewed-by: Muhammad Usama Anjum <usama.anjum@xxxxxxxxxxxxx> > > Signed-off-by: Edward Liaw <edliaw@xxxxxxxxxx> > --- > tools/testing/selftests/mm/thuge-gen.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/tools/testing/selftests/mm/thuge-gen.c b/tools/testing/selftests/mm/thuge-gen.c > index 034635317935..d50dc71cac32 100644 > --- a/tools/testing/selftests/mm/thuge-gen.c > +++ b/tools/testing/selftests/mm/thuge-gen.c > @@ -34,10 +34,18 @@ > #endif > > #define SHM_HUGETLB 04000 /* segment will use huge TLB pages */ > +#ifndef SHM_HUGE_SHIFT > #define SHM_HUGE_SHIFT 26 > +#endif > +#ifndef SHM_HUGE_MASK > #define SHM_HUGE_MASK 0x3f > +#endif > +#ifndef SHM_HUGE_2MB > #define SHM_HUGE_2MB (21 << SHM_HUGE_SHIFT) > +#endif > +#ifndef SHM_HUGE_1GB > #define SHM_HUGE_1GB (30 << SHM_HUGE_SHIFT) > +#endif > > #define NUM_PAGESIZES 5 > #define NUM_PAGES 4 -- BR, Muhammad Usama Anjum