[dpdk-dev] [dpdk-dev, 07/10] lib: fix missing include dependencies
Adrien Mazarguil
adrien.mazarguil at 6wind.com
Wed Apr 6 10:54:14 CEST 2016
Hi Jan,
Replying below as well.
On Tue, Apr 05, 2016 at 10:23:04PM +0200, Jan Viktorin wrote:
> Hello Adrien,
>
> just quickly skimming through the ARM fixes...
>
> On Tue, 5 Apr 2016 16:08:07 +0200
> Adrien Mazarguil <adrien.mazarguil at 6wind.com> wrote:
>
> > Exported header files for use by applications should be self sufficient and
> > allow out of order inclusion. Moreover, they must include all the system
> > headers they need for types and macros.
> >
> > This commit prevents the following errors:
> >
> > error: `RTE_MAX_LCORE' undeclared here (not in a function)
> > error: `RTE_LPM_VALID_EXT_ENTRY_BITMASK' undeclared (first use in this function)
> > error: #error "Unsupported cache line size"
> > error: `asm' undeclared (first use in this function)
> > error: implicit declaration of function `[...]'
> > error: unknown type name `[...]'
> > error: field `mac_addr' has incomplete type
> > error: `CHAR_BIT' undeclared here (not in a function)
> > error: `struct timespec' declared inside parameter list
> >
> > Signed-off-by: Adrien Mazarguil <adrien.mazarguil at 6wind.com>
> >
> > ---
> [...]
> > +
> > #ifdef __cplusplus
> > extern "C" {
> > #endif
> > diff --git a/lib/librte_eal/common/include/arch/arm/rte_byteorder.h b/lib/librte_eal/common/include/arch/arm/rte_byteorder.h
> > index 3f2dd1f..c2078e7 100644
> > --- a/lib/librte_eal/common/include/arch/arm/rte_byteorder.h
> > +++ b/lib/librte_eal/common/include/arch/arm/rte_byteorder.h
> > @@ -37,6 +37,9 @@
> > # error Platform must be built with CONFIG_RTE_FORCE_INTRINSICS
> > #endif
> >
> > +#include <stdint.h>
> > +#include <rte_common.h>
>
> Why not to place it into the extern "C" { block? There is already:
>
> #include "generic/rte_byteorder.h"
Right, I did not do it because headers may eventually contain C++
compatibility code someday, so I think we should avoid #includes inside
extern "C" blocks. C++ compliant headers should provide their own blocks,
also I'm not sure how well it mixes with system includes having their own
compatibility layer.
I agree we need consistency, so what about a commit to move all #includes
outside of such blocks instead?
> > +#include <rte_common.h>
>
> I don't see any reason for this. The header does not use anything
> special. Just "asm", but that should be a keyword...
Unfortunately it's a nonstandard keyword which is defined as __asm__ in
rte_common.h, itself an extension keyword compilers will swallow without
complaining thanks to these "__".
> > #ifdef __cplusplus
> > extern "C" {
> > #endif
> > diff --git a/lib/librte_eal/common/include/arch/arm/rte_prefetch_64.h b/lib/librte_eal/common/include/arch/arm/rte_prefetch_64.h
> > index 3ed46a4..600c6f0 100644
> > --- a/lib/librte_eal/common/include/arch/arm/rte_prefetch_64.h
> > +++ b/lib/librte_eal/common/include/arch/arm/rte_prefetch_64.h
> > @@ -33,6 +33,8 @@
> > #ifndef _RTE_PREFETCH_ARM_64_H_
> > #define _RTE_PREFETCH_ARM_64_H_
> >
> > +#include <rte_common.h>
>
> Same here.
Same reason here.
--
Adrien Mazarguil
6WIND
More information about the dev
mailing list