The changes here are to
platform/linux-generic/include/odp/plat/<type>_types.h.  This is where the
strong typing is actually implemented for each ODP type in linux-generic.
The converter functions are part of that implementation, and are also
inlined for performance, which is why they are here.

All other changes within each patch part are the modifications to other ODP
files needed as a result of switching to strong typing for this type.  They
are not separable since once strong typing is enabled for that type the
code won't compile without these changes.

The doxygen stuff is in the APIs which are in include/odp/api/*.h as you
mention.  The main difference between v4 and v5 was to break out the API
definition changes separately, which is why this has gone from 10 to 19
parts.

So it sounds like this is doing exactly what you suggest, no?

On Tue, Feb 3, 2015 at 3:46 PM, Taras Kondratiuk <
taras.kondrat...@linaro.org> wrote:

> On 02/03/2015 11:25 PM, Anders Roxell wrote:
> > On 2015-02-02 22:44, Bill Fischofer wrote:
> >> Signed-off-by: Bill Fischofer <bill.fischo...@linaro.org>
> >> ---
> >>  .../linux-generic/include/odp/plat/buffer_types.h  | 15 ++++++++---
> >>  .../linux-generic/include/odp_buffer_inlines.h     | 12 ++++-----
> >>  .../linux-generic/include/odp_buffer_internal.h    | 31
> +++++++++++-----------
> >>  platform/linux-generic/odp_packet.c                | 13 ++++-----
> >>  4 files changed, 40 insertions(+), 31 deletions(-)
> >>
> >> diff --git a/platform/linux-generic/include/odp/plat/buffer_types.h
> b/platform/linux-generic/include/odp/plat/buffer_types.h
> >> index 8601e61..3e7070e 100644
> >> --- a/platform/linux-generic/include/odp/plat/buffer_types.h
> >> +++ b/platform/linux-generic/include/odp/plat/buffer_types.h
> >> @@ -18,6 +18,7 @@ extern "C" {
> >>  #endif
> >>
> >>  #include <odp/std_types.h>
> >> +#include <odp/plat/strong_types.h>
> >>
> >>  /** @addtogroup odp_buffer ODP BUFFER
> >>   *  Operations on a buffer.
> >> @@ -25,16 +26,22 @@ extern "C" {
> >>   */
> >>
> >>  /** ODP buffer */
> >> -typedef uint32_t odp_buffer_t;
> >> +typedef odp_handle_t odp_buffer_t;
> >>
> >>  /** Invalid buffer */
> >> -#define ODP_BUFFER_INVALID (0xffffffff)
> >> +#define ODP_BUFFER_INVALID _odp_cast_scalar(odp_buffer_t, 0xffffffff)
> >>
> >>  /** ODP buffer segment */
> >> -typedef odp_buffer_t odp_buffer_seg_t;
> >> +typedef odp_handle_t odp_buffer_seg_t;
> >>
> >>  /** Invalid segment */
> >> -#define ODP_SEGMENT_INVALID ODP_BUFFER_INVALID
> >> +#define ODP_SEGMENT_INVALID ((odp_buffer_seg_t)ODP_BUFFER_INVALID)
> >> +
> >> +/** Get printable format of odp_buffer_t */
> >> +static inline uint64_t odp_buffer_to_u64(odp_buffer_t hdl)
> >> +{
> >> +    return _odp_pri(hdl);
> >> +}
> >
> > The re-org has make it easier for the implementors of ODP.
> > However, its a bit harder to follow the structure now maybe.
> >
> > "static inline functions" should go into:
> > platform/linux-generic/include/odp/*.h
> >
> > and typedefs, defines, enums, and structs that are platform specific
> > should go into:
> > platform/linux-generic/include/odp/plat/*_types.h
> >
> > doxygen clean API stuff should be in:
> > include/odp/api/*.h
> >
> >
> > So the "static inline functions" in this patch set are currently in the
> wrong
> > place.
> >
> > Taras, have I stated this correctly?
>
> Yes, the idea was to have only types definitions and related macros in
> *_types.h. So if another module needs odp_buffer_t handle definition
> but not all buffer API functions it can include odp/plat/buffer_types.h
> and be sure that this won't cause any cross dependencies.
>
> But these specific functions are just type conversion, so IMO placing
> them in *_types.h as an exception is fine.
>
> --
> Taras Kondratiuk
>
_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to