The common set is option 1, which is what we have in may places, I dont
like that we make it possible to reference the struct without the typedef,
but unless we have further dissent we have a winner.I think.

Mike




On 29 August 2014 13:28, William Mills <[email protected]> wrote:

> OK, Yes I never say anything on this list but ...
>
>
> On 08/29/2014 01:19 PM, Mike Holmes wrote:
>
>> Ok, I need a better feel for consensus here or it will flip flop :), as
>> this impacts all structs we really need a final answer
>>
>> typedef struct odp_<name>_t {...} odp_<name>_t;
>> OR
>> typedef struct odp_<name>_s {...} odp_<name>_t;
>> OR
>> typedef struct {...} odp_<name>_t;
>>
>> I prefer the latter, why even name it unless you need to reference the
>> name inside the struct being typedefed ?
>>
>>
> I wrote/collected our internal coding conventions and we insisted on a
> name.  The reason (at least at that time) was some debuggers showed the
> structure name but not the typedef name.
>
> We used struct odp_<name>_tag {...} to emphasize that it should not be
> used in the code.  In retrospect I don't like that but either the _s or
> _t above are OK.
>
>
>>
>>
>> On 29 August 2014 13:10, Bill Fischofer <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>>     We've been using odp_<name>_t for typedef stuff, taking advantage
>>     that of the fact that struct tags occupy a different namespace.  So
>>
>>     typedef struct odp_<name>_t {...} odp_<name>_t;
>>
>>     is perfectly valid and unambiguous C and avoids additional namespace
>>     clutter.
>>
>>     odp_<name>_e has been suggested for ODP enums.
>>
>>     Bill
>>
>>
>>     On Fri, Aug 29, 2014 at 12:05 PM, Mike Holmes
>>     <[email protected] <mailto:[email protected]>> wrote:
>>
>>
>>
>>
>>         On 29 August 2014 03:59, Savolainen, Petri (NSN - FI/Espoo)
>>         <[email protected] <mailto:[email protected]>>
>> wrote:
>>
>>
>>
>>              > -----Original Message-----
>>              > From: [email protected]
>>             <mailto:[email protected]> [mailto:lng-odp-
>>             <mailto:lng-odp->
>>              > [email protected]
>>             <mailto:[email protected]>] On Behalf Of ext Mike
>> Holmes
>>              > Sent: Thursday, August 28, 2014 9:26 PM
>>              > To: [email protected]
>>             <mailto:[email protected]>
>>              > Subject: [lng-odp] [PATCH v4] Add-global_init-paramiters
>>              >
>>              > Signed-off-by: Mike Holmes <[email protected]
>>             <mailto:[email protected]>>
>>
>>              > ---
>>              >
>>              > v2:
>>              > Factor out odp_platform_init so that odp_global_init is
>>             only defined
>>              > for linux_generic and resued.
>>              >
>>              > v3:
>>              > Use -M to simplify the diff
>>              > Fix missing doxygen comments
>>              >
>>              > v4:
>>              > Improve the documentation.
>>              >
>>              >  example/generator/odp_generator.c                  |  2
>> +-
>>              >  example/l2fwd/odp_l2fwd.c                          |  2 +-
>>              >  example/odp_example/odp_example.c                  |  2
>> +-
>>              >  example/packet/odp_pktio.c                         |  2 +-
>>              >  example/timer/odp_timer_test.c                     |  2 +-
>>              >  platform/linux-dpdk/Makefile.am                    |  3
>> +-
>>              >  platform/linux-dpdk/{odp_init.c => odp_platform.c} | 63
>>             +----------------
>>              > --
>>              >  platform/linux-generic/Makefile.am                 |  1 +
>>              >  platform/linux-generic/include/api/odp_init.h      | 34
>>             +++++++---
>>              >  platform/linux-generic/include/odp_internal.h      |  3 +
>>              >  platform/linux-generic/odp_init.c                  |  9
>> ++-
>>              >  platform/linux-generic/odp_platform.c              | 14
>>             +++++
>>              >  platform/linux-keystone2/Makefile.am               |  3
>> +-
>>              >  .../linux-keystone2/{odp_init.c => odp_platform.c} | 72
>>             +++--------------
>>              > -----
>>              >  test/api_test/odp_common.c                         |  2 +-
>>              >  15 files changed, 72 insertions(+), 142 deletions(-)
>>              >  rename platform/linux-dpdk/{odp_init.c =>
>>             odp_platform.c} (50%)
>>              >  create mode 100644 platform/linux-generic/odp_platform.c
>>              >  rename platform/linux-keystone2/{odp_init.c =>
>>             odp_platform.c} (72%)
>>              >
>>              > diff --git a/example/generator/odp_generator.c
>>              > b/example/generator/odp_generator.c
>>              > index 9fa9b37..ba7aa68 100644
>>              > --- a/example/generator/odp_generator.c
>>              > +++ b/example/generator/odp_generator.c
>>              > @@ -525,7 +525,7 @@ int main(int argc, char *argv[])
>>              >       int core_count;
>>              >
>>              >       /* Init ODP before calling anything else */
>>              > -     if (odp_init_global()) {
>>              > +     if (odp_init_global(NULL, NULL)) {
>>              >               ODP_ERR("Error: ODP global init failed.\n");
>>              >               exit(EXIT_FAILURE);
>>              >       }
>>              > diff --git a/example/l2fwd/odp_l2fwd.c
>>             b/example/l2fwd/odp_l2fwd.c
>>              > index d74449a..f8d6729 100644
>>              > --- a/example/l2fwd/odp_l2fwd.c
>>              > +++ b/example/l2fwd/odp_l2fwd.c
>>              > @@ -323,7 +323,7 @@ int main(int argc, char *argv[])
>>              >       odp_pktio_t pktio;
>>              >
>>              >       /* Init ODP before calling anything else */
>>              > -     if (odp_init_global()) {
>>              > +     if (odp_init_global(NULL, NULL)) {
>>              >               ODP_ERR("Error: ODP global init failed.\n");
>>              >               exit(EXIT_FAILURE);
>>              >       }
>>              > diff --git a/example/odp_example/odp_example.c
>>              > b/example/odp_example/odp_example.c
>>              > index f0bdf29..3d38ac7 100644
>>              > --- a/example/odp_example/odp_example.c
>>              > +++ b/example/odp_example/odp_example.c
>>              > @@ -951,7 +951,7 @@ int main(int argc, char *argv[])
>>              >
>>              >       memset(thread_tbl, 0, sizeof(thread_tbl));
>>              >
>>              > -     if (odp_init_global()) {
>>              > +     if (odp_init_global(NULL, NULL)) {
>>              >               printf("ODP global init failed.\n");
>>              >               return -1;
>>              >       }
>>              > diff --git a/example/packet/odp_pktio.c
>>             b/example/packet/odp_pktio.c
>>              > index f247bd0..f3543a0 100644
>>              > --- a/example/packet/odp_pktio.c
>>              > +++ b/example/packet/odp_pktio.c
>>              > @@ -311,7 +311,7 @@ int main(int argc, char *argv[])
>>              >       int core_count;
>>              >
>>              >       /* Init ODP before calling anything else */
>>              > -     if (odp_init_global()) {
>>              > +     if (odp_init_global(NULL, NULL)) {
>>              >               ODP_ERR("Error: ODP global init failed.\n");
>>              >               exit(EXIT_FAILURE);
>>              >       }
>>              > diff --git a/example/timer/odp_timer_test.c
>>              > b/example/timer/odp_timer_test.c
>>              > index bf1d7df..abf90aa 100644
>>              > --- a/example/timer/odp_timer_test.c
>>              > +++ b/example/timer/odp_timer_test.c
>>              > @@ -260,7 +260,7 @@ int main(int argc, char *argv[])
>>              >
>>              >       memset(thread_tbl, 0, sizeof(thread_tbl));
>>              >
>>              > -     if (odp_init_global()) {
>>              > +     if (odp_init_global(NULL, NULL)) {
>>              >               printf("ODP global init failed.\n");
>>              >               return -1;
>>              >       }
>>              > diff --git a/platform/linux-dpdk/Makefile.am
>>             b/platform/linux-
>>              > dpdk/Makefile.am
>>              > index ff49b7d..70fa549 100644
>>              > --- a/platform/linux-dpdk/Makefile.am
>>              > +++ b/platform/linux-dpdk/Makefile.am
>>              > @@ -67,13 +67,14 @@ __LIB__libodp_la_SOURCES = \
>>              >                          odp_buffer.c \
>>              >                          odp_buffer_pool.c \
>>              >                          ../linux-generic/odp_coremask.c \
>>              > -                        odp_init.c \
>>              > +                        ../linux-generic/odp_init.c \
>>              >                          odp_linux.c \
>>              >                          odp_packet.c \
>>              >                          odp_packet_dpdk.c \
>>              >
>>             ../linux-generic/odp_packet_flags.c \
>>              >                          odp_packet_io.c \
>>              >
>>             ../linux-generic/odp_packet_socket.c \
>>              > +                        odp_platform.c \
>>              >                          odp_queue.c \
>>              >                          ../linux-generic/odp_ring.c \
>>              >                          ../linux-generic/odp_rwlock.c \
>>              > diff --git a/platform/linux-dpdk/odp_init.c
>> b/platform/linux-
>>              > dpdk/odp_platform.c
>>              > similarity index 50%
>>              > rename from platform/linux-dpdk/odp_init.c
>>              > rename to platform/linux-dpdk/odp_platform.c
>>              > index ecc2066..5a054fd 100644
>>              > --- a/platform/linux-dpdk/odp_init.c
>>              > +++ b/platform/linux-dpdk/odp_platform.c
>>              > @@ -1,4 +1,4 @@
>>              > -/* Copyright (c) 2013, Linaro Limited
>>              > +/* Copyright (c) 2014, Linaro Limited
>>              >   * All rights reserved.
>>              >   *
>>              >   * SPDX-License-Identifier:     BSD-3-Clause
>>              > @@ -9,7 +9,7 @@
>>              >  #include <odp_debug.h>
>>              >  #include <odp_packet_dpdk.h>
>>              >
>>              > -int odp_init_dpdk(void)
>>              > +int odp_init_platform(odp_global_platform_init_t
>>             *platform_params
>>              > ODP_UNUSED)
>>              >  {
>>              >       int test_argc = 5;
>>              >       char *test_argv[6];
>>              > @@ -50,64 +50,7 @@ int odp_init_dpdk(void)
>>              >       return 0;
>>              >  }
>>              >
>>              > -int odp_init_global(void)
>>              > +int odp_crypto_init_global(void)
>>
>>             Is crypto init now in odp_platform.c? It should be in
>>             odp_crypto.c or similar...
>>
>>         no problem
>>         I can make a dummy   odp_crypto.c for ks2 and point DPDK at the
>>         linux generic. I was trying to avoid
>>         connecting internals.
>>
>>
>>              >  {
>>              > -     odp_thread_init_global();
>>              > -
>>              > -     odp_system_info_init();
>>              > -
>>              > -     if (odp_init_dpdk()) {
>>              > -             ODP_ERR("ODP dpdk init failed.\n");
>>              > -             return -1;
>>              > -     }
>>              > -
>>              > -     if (odp_shm_init_global()) {
>>              > -             ODP_ERR("ODP shm init failed.\n");
>>              > -             return -1;
>>              > -     }
>>              > -
>>              > -     if (odp_buffer_pool_init_global()) {
>>              > -             ODP_ERR("ODP buffer pool init failed.\n");
>>              > -             return -1;
>>              > -     }
>>              > -
>>              > -     if (odp_queue_init_global()) {
>>              > -             ODP_ERR("ODP queue init failed.\n");
>>              > -             return -1;
>>              > -     }
>>              > -
>>              > -     if (odp_schedule_init_global()) {
>>              > -             ODP_ERR("ODP schedule init failed.\n");
>>              > -             return -1;
>>              > -     }
>>              > -
>>              > -     if (odp_pktio_init_global()) {
>>              > -             ODP_ERR("ODP packet io init failed.\n");
>>              > -             return -1;
>>              > -     }
>>              > -
>>              > -     if (odp_timer_init_global()) {
>>              > -             ODP_ERR("ODP timer init failed.\n");
>>              > -             return -1;
>>              > -     }
>>              > -
>>              > -     return 0;
>>              > -}
>>              > -
>>              > -
>>              > -int odp_init_local(int thr_id)
>>              > -{
>>              > -     odp_thread_init_local(thr_id);
>>              > -
>>              > -     if (odp_pktio_init_local()) {
>>              > -             ODP_ERR("ODP packet io local init
>> failed.\n");
>>              > -             return -1;
>>              > -     }
>>              > -
>>              > -     if (odp_schedule_init_local()) {
>>              > -             ODP_ERR("ODP schedule local init failed.\n");
>>              > -             return -1;
>>              > -     }
>>              > -
>>              >       return 0;
>>              >  }
>>              > diff --git a/platform/linux-generic/Makefile.am
>>             b/platform/linux-
>>              > generic/Makefile.am
>>              > index f4dfdc1..c4aae9d 100644
>>              > --- a/platform/linux-generic/Makefile.am
>>              > +++ b/platform/linux-generic/Makefile.am
>>              > @@ -62,6 +62,7 @@ __LIB__libodp_la_SOURCES = \
>>              >                          odp_packet_flags.c \
>>              >                          odp_packet_io.c \
>>              >                          odp_packet_socket.c \
>>              > +                        odp_platform.c \
>>              >                          odp_queue.c \
>>              >                          odp_ring.c \
>>              >                          odp_rwlock.c \
>>              > diff --git a/platform/linux-generic/include/api/odp_init.h
>>              > b/platform/linux-generic/include/api/odp_init.h
>>              > index 490324a..ece4547 100644
>>              > --- a/platform/linux-generic/include/api/odp_init.h
>>              > +++ b/platform/linux-generic/include/api/odp_init.h
>>              > @@ -22,24 +22,42 @@ extern "C" {
>>              >
>>              >  #include <odp_std_types.h>
>>              >
>>              > -
>>              > -
>>              > +/** ODP  initialisation data.
>>              > + * Data  that is required to initialize the ODP API with
>> the
>>              > + * application specific data such as specifying a
>>             logging callback, the
>>              > log
>>              > + * level etc.
>>              > + */
>>              > +typedef struct odp_global_init {
>>
>>             The struct name should be "struct odp_global_init_t",
>>             "struct odp_global_init_s" or "struct odp_global_init_".
>>
>>             The name without postfix (odp_global_init) should be
>>             reserved for variable names.
>>             no probelm
>>
>>         I will go with odp_init_s
>>
>>              > +} odp_global_init_t;
>>
>>             In short, this could be named odp_init_t. It's the main init
>>             struct there will be.
>>             If there will be a local init struct it could be then
>>             odp_init_local_t...
>>
>>              > +
>>              > +/** ODP platform initialization data.
>>              > + * @note ODP API does nothing with this data. It is the
>>             underlying
>>              > + * implementation requires it and any data passed here
>>             is not portable.
>>              > + * It is required that the application takes care of
>>             identifying and
>>              > + * passing any required platform specific data.
>>              > + */
>>              > +typedef struct odp_global_platform_init {
>>
>>             Same thing, rename struct.
>>
>>         no problem
>>         odp_init_platform_s
>>
>>
>>              > +} odp_platform_init_t;
>>
>>
>>             Same thing, odp_platform_init_t ??
>>
>>
>>              >
>>              >  /**
>>              > - * Perform global ODP initalisation.
>>              > - *
>>              > - * This function must be called once before calling
>>              > - * any other ODP API functions.
>>              > + * Perform global ODP initialisation.
>>              >   *
>>              > + * This function must be called once before calling any
>>             other ODP API
>>              > + * functions.
>>              > + * @param[in] params Those parameters that are
>>             interpreted by the ODP API
>>
>>             "Those parameters that are common to all ODP
>>             implementations. Specified in this API"
>>
>>             API does not interpret, implementation does...
>>
>>
>>         Ok, I am struggling with names
>>
>>         how about "platform SDK" for the underlying code such as DPDK,
>>         so that the platform has an API
>>         implementation -  which is actually implemented in terms of a
>>         platform SDK
>>
>>         We need to distinguish that implementations should not use the
>>         platform parameters unless the underlying
>>         framework requires it, not that any implementation is free to
>>         just add local stuff - or thats how it feels to me at least.
>>
>>
>>              > + * @param[in] platform_params Those parameters that are
>>             passed without
>>              > + * interpretation by the ODP API to the implementation.
>>
>>             " ... implementation specific parameter. Specified outside
>>             of ODP API"
>>
>>              >   * @return 0 if successful
>>              >   */
>>              > -int odp_init_global(void);
>>              > +int odp_init_global(odp_global_init_t *params,
>>              > +                 odp_global_platform_init_t
>>             *platform_params);
>>              >
>>              >
>>              >  /**
>>              > - * Perform thread local ODP initalisation.
>>              > + * Perform thread local ODP initialisation.
>>              >   *
>>              >   * All threads must call this function before calling
>>              > + *
>>
>>             Extra line feed?
>>
>>         Will fix
>>
>>
>>              >   * any other ODP API functions.
>>              >   * @param thr_id Thread id
>>              >   * @return 0 if successful
>>              > diff --git a/platform/linux-generic/include/odp_internal.h
>>              > b/platform/linux-generic/include/odp_internal.h
>>              > index aa79493..6c71fc9 100644
>>              > --- a/platform/linux-generic/include/odp_internal.h
>>              > +++ b/platform/linux-generic/include/odp_internal.h
>>              > @@ -4,6 +4,7 @@
>>              >   * SPDX-License-Identifier:     BSD-3-Clause
>>              >   */
>>              >
>>              > +#include <odp_init.h>
>>              >
>>              >  /**
>>              >   * @file
>>              > @@ -42,6 +43,8 @@ int odp_schedule_init_local(void);
>>              >  int odp_timer_init_global(void);
>>              >  int odp_timer_disarm_all(void);
>>              >
>>              > +int odp_init_platform(odp_global_platform_init_t
>>             *platform_params);
>>              > +
>>              >  #ifdef __cplusplus
>>              >  }
>>              >  #endif
>>              > diff --git a/platform/linux-generic/odp_init.c
>>             b/platform/linux-
>>              > generic/odp_init.c
>>              > index 5b7e192..f595def 100644
>>              > --- a/platform/linux-generic/odp_init.c
>>              > +++ b/platform/linux-generic/odp_init.c
>>              > @@ -8,13 +8,18 @@
>>              >  #include <odp_internal.h>
>>              >  #include <odp_debug.h>
>>              >
>>              > -
>>              > -int odp_init_global(void)
>>              > +int odp_init_global(odp_global_init_t *params
>> ODP_UNUSED,
>>              > +                 odp_global_platform_init_t
>>             *platform_params ODP_UNUSED)
>>              >  {
>>              >       odp_thread_init_global();
>>              >
>>              >       odp_system_info_init();
>>              >
>>              > +     if (odp_init_platform(platform_params)) {
>>
>>             platform_params is used here, so remove ODP_UNUSED from
>>             argument list.
>>
>>             On the other hand, it would be better to remove
>>             odp_init_platform()
>>             altogether since does not do anything. It's better to add it
>>             when actually used.
>>             The order of init calls is very important, e.g. now you
>>             could not allocate shared
>>             memory in odp_init_platform() because it's executed before
>>             shm init...
>>
>>           odp_init_platform() does do something for DPDK / KS2 and we
>>         need a place holder because
>>         we want this to be shared between implementations don't we ?
>>         This is the stuff that must happen before any ODP init starts to
>>         satisfy the platform SDK
>>
>>
>>             - Petri
>>
>>              > +             ODP_ERR("ODP platform init failed.\n");
>>              > +             return -1;
>>              > +     }
>>              > +
>>              >       if (odp_shm_init_global()) {
>>              >               ODP_ERR("ODP shm init failed.\n");
>>              >               return -1;
>>              > diff --git a/platform/linux-generic/odp_platform.c
>>             b/platform/linux-
>>              > generic/odp_platform.c
>>              > new file mode 100644
>>              > index 0000000..a9efa7f
>>              > --- /dev/null
>>              > +++ b/platform/linux-generic/odp_platform.c
>>              > @@ -0,0 +1,14 @@
>>              > +/* Copyright (c) 2014, Linaro Limited
>>              > + * All rights reserved.
>>              > + *
>>              > + * SPDX-License-Identifier:     BSD-3-Clause
>>              > + */
>>              > +
>>              > +#include <odp_init.h>
>>              > +#include <odp_internal.h>
>>              > +#include <odp_debug.h>
>>              > +
>>              > +int odp_init_platform(odp_global_platform_init_t
>>             *platform_params
>>              > ODP_UNUSED)
>>              > +{
>>              > +     return 0;
>>              > +}
>>
>>
>>
>>
>>
>>
>>
>>         --
>>         *Mike Holmes*
>>
>>         Linaro Technical Manager / Lead
>>         LNG - ODP
>>
>>         _______________________________________________
>>         lng-odp mailing list
>>         [email protected] <mailto:[email protected]>
>>         http://lists.linaro.org/mailman/listinfo/lng-odp
>>
>>
>>
>>
>>
>> --
>> *Mike Holmes*
>>
>> Linaro Technical Manager / Lead
>> LNG - ODP
>>
>>
>> _______________________________________________
>> lng-odp mailing list
>> [email protected]
>> http://lists.linaro.org/mailman/listinfo/lng-odp
>>
>>
>>
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>>
>>


-- 
*Mike Holmes*
Linaro Technical Manager / Lead
LNG - ODP
_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to