The idea is that each implementation defines their own odp_typedefs.h which contain the typedefs for that platform. So you can reuse the linux-generic API files without having to modify them since they just reference the typedefs but don't define them. Every implementation will have to have their own version of odp_typedefs.h to specify what an odp_buffer_t, etc. is for that implementation.
This also eliminates the circular dependency in typdef definitions we currently have in the buffer/packet/pktio family. In the latest patch I posted it's impossible to order the #includes to get a compilable system without factoring these out into a common header. Bill On Wed, Nov 12, 2014 at 5:16 PM, Maxim Uvarov <[email protected]> wrote: > I think it will be hard to follow. If I you reuse for example pool from > linux-generic and not reuse pktio. Then you most probably will > have reference to linux-generic file. And you will not want to have this > typedefs redefined. I prefer to have these typedefs in > corresponding header as it is now. > > Maxim. > > > On 11/12/2014 08:32 PM, Bill Fischofer wrote: > >> Signed-off-by: Bill Fischofer <[email protected]> >> --- >> platform/linux-generic/Makefile.am | 1 + >> platform/linux-generic/include/api/odp_buffer.h | 9 +--- >> .../linux-generic/include/api/odp_buffer_pool.h | 5 +- >> platform/linux-generic/include/api/odp_packet.h | 30 ----------- >> platform/linux-generic/include/api/odp_packet_io.h | 12 +---- >> platform/linux-generic/include/api/odp_typedefs.h | 63 >> ++++++++++++++++++++++ >> 6 files changed, 67 insertions(+), 53 deletions(-) >> create mode 100644 platform/linux-generic/include/api/odp_typedefs.h >> >> diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/ >> Makefile.am >> index 0153a22..cb3cfc4 100644 >> --- a/platform/linux-generic/Makefile.am >> +++ b/platform/linux-generic/Makefile.am >> @@ -36,6 +36,7 @@ include_HEADERS = \ >> >> $(top_srcdir)/platform/linux-generic/include/api/odp_ticketlock.h >> \ >> $(top_srcdir)/platform/linux-generic/include/api/odp_time.h >> \ >> $(top_srcdir)/platform/linux- >> generic/include/api/odp_timer.h \ >> + >> $(top_srcdir)/platform/linux-generic/include/api/odp_typedefs.h >> \ >> $(top_srcdir)/platform/linux-generic/include/api/odp_ >> version.h >> subdirheadersdir = $(includedir) >> diff --git a/platform/linux-generic/include/api/odp_buffer.h >> b/platform/linux-generic/include/api/odp_buffer.h >> index 289e0eb..7e7c95e 100644 >> --- a/platform/linux-generic/include/api/odp_buffer.h >> +++ b/platform/linux-generic/include/api/odp_buffer.h >> @@ -20,20 +20,13 @@ extern "C" { >> #include <odp_std_types.h> >> - >> +#include <odp_typedefs.h> >> /** @defgroup odp_buffer ODP BUFFER >> * Operations on a buffer. >> * @{ >> */ >> -/** >> - * ODP buffer >> - */ >> -typedef uint32_t odp_buffer_t; >> - >> -#define ODP_BUFFER_INVALID (0xffffffff) /**< Invalid buffer */ >> - >> /** >> * Buffer start address >> diff --git a/platform/linux-generic/include/api/odp_buffer_pool.h >> b/platform/linux-generic/include/api/odp_buffer_pool.h >> index d04abf0..170cd32 100644 >> --- a/platform/linux-generic/include/api/odp_buffer_pool.h >> +++ b/platform/linux-generic/include/api/odp_buffer_pool.h >> @@ -21,6 +21,7 @@ extern "C" { >> #include <odp_std_types.h> >> +#include <odp_typedefs.h> >> #include <odp_buffer.h> >> /** @addtogroup odp_buffer >> @@ -34,10 +35,6 @@ extern "C" { >> /** Invalid buffer pool */ >> #define ODP_BUFFER_POOL_INVALID 0 >> -/** ODP buffer pool */ >> -typedef uint32_t odp_buffer_pool_t; >> - >> - >> /** >> * Create a buffer pool >> * >> diff --git a/platform/linux-generic/include/api/odp_packet.h >> b/platform/linux-generic/include/api/odp_packet.h >> index 688e047..5298fa0 100644 >> --- a/platform/linux-generic/include/api/odp_packet.h >> +++ b/platform/linux-generic/include/api/odp_packet.h >> @@ -25,36 +25,6 @@ extern "C" { >> * @{ >> */ >> -/** >> - * ODP packet descriptor >> - */ >> -typedef odp_buffer_t odp_packet_t; >> - >> -/** Invalid packet */ >> -#define ODP_PACKET_INVALID ODP_BUFFER_INVALID >> - >> -/** Invalid offset */ >> -#define ODP_PACKET_OFFSET_INVALID ((uint32_t)-1) >> - >> - >> -/** >> - * ODP packet segment handle >> - */ >> -typedef int odp_packet_seg_t; >> - >> -/** Invalid packet segment */ >> -#define ODP_PACKET_SEG_INVALID -1 >> - >> -/** >> - * ODP packet segment info >> - */ >> -typedef struct odp_packet_seg_info_t { >> - void *addr; /**< Segment start address */ >> - size_t size; /**< Segment maximum data size */ >> - void *data; /**< Segment data address */ >> - size_t data_len; /**< Segment data length */ >> -} odp_packet_seg_info_t; >> - >> /** >> * Initialize the packet >> diff --git a/platform/linux-generic/include/api/odp_packet_io.h >> b/platform/linux-generic/include/api/odp_packet_io.h >> index 360636d..4d4e636 100644 >> --- a/platform/linux-generic/include/api/odp_packet_io.h >> +++ b/platform/linux-generic/include/api/odp_packet_io.h >> @@ -19,6 +19,7 @@ extern "C" { >> #endif >> #include <odp_std_types.h> >> +#include <odp_typedefs.h> >> #include <odp_buffer_pool.h> >> #include <odp_packet.h> >> #include <odp_queue.h> >> @@ -28,17 +29,6 @@ extern "C" { >> * @{ >> */ >> -/** ODP packet IO handle */ >> -typedef uint32_t odp_pktio_t; >> - >> -/** Invalid packet IO handle */ >> -#define ODP_PKTIO_INVALID 0 >> - >> -/** >> - * odp_pktio_t value to indicate any port >> - */ >> -#define ODP_PKTIO_ANY ((odp_pktio_t)~0) >> - >> /** >> * Open an ODP packet IO instance >> * >> diff --git a/platform/linux-generic/include/api/odp_typedefs.h >> b/platform/linux-generic/include/api/odp_typedefs.h >> new file mode 100644 >> index 0000000..af74980 >> --- /dev/null >> +++ b/platform/linux-generic/include/api/odp_typedefs.h >> @@ -0,0 +1,63 @@ >> +/* Copyright (c) 2014, Linaro Limited >> + * All rights reserved. >> + * >> + * SPDX-License-Identifier: BSD-3-Clause >> + */ >> + >> + >> +/** >> + * @file >> + * >> + * @par ODP implementation typedefs >> + * This file contains all of the implementation-defined typedefs for >> + * ODP abstract types. Having this in one file means that other ODP >> + * API files are implementation-independent and avoids circular >> + * dependencies for files that refer to types managed by other >> + * components. >> + */ >> + >> +#ifndef ODP_TYPEDEFS_H_ >> +#define ODP_TYPEDEFS_H_ >> + >> +/** ODP Buffer pool */ >> +typedef uint32_t odp_buffer_pool_t; >> + >> +/** ODP buffer */ >> +typedef uint32_t odp_buffer_t; >> + >> +/** Invalid buffer */ >> +#define ODP_BUFFER_INVALID (0xffffffff) /**< Invalid buffer */ >> + >> +/** ODP packet */ >> +typedef odp_buffer_t odp_packet_t; >> + >> +/** Invalid packet */ >> +#define ODP_PACKET_INVALID ODP_BUFFER_INVALID >> + >> +/** Invalid offset */ >> +#define ODP_PACKET_OFFSET_INVALID ((uint32_t)-1) >> + >> +/** ODP packet segment */ >> +typedef int odp_packet_seg_t; >> + >> +/** Invalid packet segment */ >> +#define ODP_PACKET_SEG_INVALID -1 >> + >> +/** ODP packet segment info */ >> +typedef struct odp_packet_seg_info_t { >> + void *addr; /**< Segment start address */ >> + size_t size; /**< Segment maximum data size */ >> + void *data; /**< Segment data address */ >> + size_t data_len; /**< Segment data length */ >> +} odp_packet_seg_info_t; >> + >> +/** ODP packet IO handle */ >> +typedef uint32_t odp_pktio_t; >> + >> +/** Invalid packet IO handle */ >> +#define ODP_PKTIO_INVALID 0 >> + >> +/** odp_pktio_t value to indicate any port */ >> +#define ODP_PKTIO_ANY ((odp_pktio_t)~0) >> + >> +#endif >> > > > _______________________________________________ > lng-odp mailing list > [email protected] > http://lists.linaro.org/mailman/listinfo/lng-odp >
_______________________________________________ lng-odp mailing list [email protected] http://lists.linaro.org/mailman/listinfo/lng-odp
