On 04/24 07:21:09, Savolainen, Petri (Nokia - FI/Espoo) wrote:
> 
> 
> > -----Original Message-----
> > From: Brian Brooks [mailto:brian.bro...@arm.com]
> > Sent: Friday, April 21, 2017 7:51 PM
> > To: Petri Savolainen <petri.savolai...@linaro.org>
> > Cc: lng-odp@lists.linaro.org
> > Subject: Re: [lng-odp] [API-NEXT PATCH 2/8] linux-gen: cpu_flags: added
> > x86 cpu flag read functions
> > 
> > On 04/21 16:11:28, Petri Savolainen wrote:
> > > When building on x86 CPU flags can be used to determine which
> > > CPU features are supported. CPU flag definitions and the code
> > > to read the flags is from DPDK.
> > >
> > > Signed-off-by: Petri Savolainen <petri.savolai...@linaro.org>
> > > ---
> > >  configure.ac                                |   1 +
> > >  platform/linux-generic/Makefile.am          |   4 +
> > >  platform/linux-generic/arch/x86/cpu_flags.c | 349
> > ++++++++++++++++++++++++++++
> > >  platform/linux-generic/arch/x86/cpu_flags.h |  20 ++
> > >  4 files changed, 374 insertions(+)
> > >  create mode 100644 platform/linux-generic/arch/x86/cpu_flags.c
> > >  create mode 100644 platform/linux-generic/arch/x86/cpu_flags.h
> > >
> > > diff --git a/configure.ac b/configure.ac
> > > index e86e2dca..38129030 100644
> > > --- a/configure.ac
> > > +++ b/configure.ac
> > > @@ -224,6 +224,7 @@ AM_CONDITIONAL([HAVE_DOXYGEN], [test "x${DOXYGEN}" =
> > "xdoxygen"])
> > >  AM_CONDITIONAL([user_guide], [test "x${user_guides}" = "xyes" ])
> > >  AM_CONDITIONAL([HAVE_MSCGEN], [test "x${MSCGEN}" = "xmscgen"])
> > >  AM_CONDITIONAL([helper_linux], [test x$helper_linux = xyes ])
> > > +AM_CONDITIONAL([ARCH_IS_X86], [test "x${ARCH_DIR}" = "xx86"])
> > >
> > >
> > ##########################################################################
> > >  # Setup doxygen documentation
> > > diff --git a/platform/linux-generic/Makefile.am b/platform/linux-
> > generic/Makefile.am
> > > index 81a19011..60b7f849 100644
> > > --- a/platform/linux-generic/Makefile.am
> > > +++ b/platform/linux-generic/Makefile.am
> > > @@ -252,6 +252,10 @@ __LIB__libodp_linux_la_SOURCES = \
> > >                      arch/@ARCH_DIR@/odp_cpu_arch.c \
> > >                      arch/@ARCH_DIR@/odp_sysinfo_parse.c
> > >
> > > +if ARCH_IS_X86
> > > +__LIB__libodp_linux_la_SOURCES += arch/@ARCH_DIR@/cpu_flags.c
> > > +endif
> > 
> > The pre-existing condition is that all source files are compiled and
> > this method of conditional compilation is rejected, as is the case
> > for schedulers. How do we want to proceed?
> 
> This file (arch/x86/cpu_flags.c) contains x86 assembly and is built only for 
> x86. As you can see from the lines above this line, arch/@ARCH_DIR@/ is used 
> to select the arch files.
> 
> This is how I have instructed you to split out ARM assembly from your 
> scheduler code. Place ASM code into a new file (e.g. arch/arm/ll_sc.c or 
> whatever) and select that file when building for ARM. No ifdefs in C files.
> 
> Current makefile ...
> 
> arch/@ARCH_DIR@/odp_cpu_arch.c \
> arch/@ARCH_DIR@/odp_sysinfo_parse.c
> 
> ... expects that all archs have those files implemented. That part should be 
> actually changed to use arch specific files only for those arch that do not 
> use the default implementation (x86/mips today). But that's not a job of this 
> patch - it just adds cpu_flags for x86.

This same argument can be applied to the scheduler i.e. it conditionally
compiles code as needed, and anything else is not a job of that patch.

Here, you would need to actually add those files for other archs and find
suitible arch-agnostic names for identifiers.

Which way do you want to go?

> -Petri
> 

Reply via email to