Reviewed-by: Petri Savolainen <[email protected]>


... after rebase since keystone implementation has changed. There's now 
implantation specific init functions since ODP_ERR was replaced with odp_pr_err 
(which is keystone specific).


-Petri



> -----Original Message-----
> From: [email protected] [mailto:lng-odp-
> [email protected]] On Behalf Of ext Mike Holmes
> Sent: Friday, September 05, 2014 12:07 AM
> To: [email protected]
> Subject: [lng-odp] [PATCH v7] Add-global_init-parameters
> 
> Signed-off-by: Mike Holmes <[email protected]>
> ---
> 
> v7:
> Fix netmap build
> 
>  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/packet_netmap/odp_pktio_netmap.c           |  2 +-
>  example/timer/odp_timer_test.c                     |  2 +-
>  platform/linux-dpdk/Makefile.am                    |  4 +-
>  platform/linux-dpdk/{odp_init.c => odp_platform.c} | 66 +----------------
> --
>  platform/linux-generic/Makefile.am                 |  1 +
>  platform/linux-generic/include/api/odp.h           |  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               |  4 +-
>  .../linux-keystone2/{odp_init.c => odp_platform.c} | 74 ++---------------
> -----
>  test/api_test/odp_common.c                         |  2 +-
>  17 files changed, 73 insertions(+), 151 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 65c2034..af3b819 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 6a38c1b..df87a9e 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 40d237b..0aa08f7 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 88ce575..a349054 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/packet_netmap/odp_pktio_netmap.c
> b/example/packet_netmap/odp_pktio_netmap.c
> index 88af2e5..2d6344c 100644
> --- a/example/packet_netmap/odp_pktio_netmap.c
> +++ b/example/packet_netmap/odp_pktio_netmap.c
> @@ -227,7 +227,7 @@ int main(int argc, char *argv[])
>       int i;
> 
>       /* 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 1061190..7e1c7a0 100644
> --- a/example/timer/odp_timer_test.c
> +++ b/example/timer/odp_timer_test.c
> @@ -256,7 +256,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 a59435f..98d4ab4 100644
> --- a/platform/linux-dpdk/Makefile.am
> +++ b/platform/linux-dpdk/Makefile.am
> @@ -67,13 +67,15 @@ __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 \
> +                        ../linux-generic/odp_crypto.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..3162c05 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];
> @@ -49,65 +49,3 @@ int odp_init_dpdk(void)
> 
>       return 0;
>  }
> -
> -int odp_init_global(void)
> -{
> -     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 25c82ea..1b4fd13 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.h b/platform/linux-
> generic/include/api/odp.h
> index 0ee3faf..99e2ae0 100644
> --- a/platform/linux-generic/include/api/odp.h
> +++ b/platform/linux-generic/include/api/odp.h
> @@ -48,6 +48,7 @@ extern "C" {
>  #include <odp_packet.h>
>  #include <odp_packet_flags.h>
>  #include <odp_packet_io.h>
> +#include <odp_crypto.h>
> 
>  #ifdef __cplusplus
>  }
> diff --git a/platform/linux-generic/include/api/odp_init.h
> b/platform/linux-generic/include/api/odp_init.h
> index 490324a..f89b7d4 100644
> --- a/platform/linux-generic/include/api/odp_init.h
> +++ b/platform/linux-generic/include/api/odp_init.h
> @@ -22,23 +22,39 @@ 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_init_t {
> +} odp_init_t;
> +
> +/** ODP platform initialization data.
> + * @note ODP API does nothing with this data. It is the underlying
> + * implementation that 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_platform_init_t {
> +} 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
> + * @param[in] platform_params Those parameters that are passed without
> + * interpretation by the ODP API to the implementation.
>   * @return 0 if successful
>   */
> -int odp_init_global(void);
> +int odp_init_global(odp_init_t *params,
> +                 odp_platform_init_t *platform_params);
> 
> 
>  /**
> - * Perform thread local ODP initalisation.
> - *
> + * Perform thread local ODP initialisation.
>   * All threads must call this function before calling
>   * any other ODP API functions.
>   * @param thr_id Thread id
> diff --git a/platform/linux-generic/include/odp_internal.h
> b/platform/linux-generic/include/odp_internal.h
> index aa79493..29fb3b5 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_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..834c3bf 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_init_t *params  ODP_UNUSED,
> +                 odp_platform_init_t *platform_params)
>  {
>       odp_thread_init_global();
> 
>       odp_system_info_init();
> 
> +     if (odp_init_platform(platform_params)) {
> +             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..679913d
> --- /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_platform_init_t *platform_params ODP_UNUSED)
> +{
> +     return 0;
> +}
> diff --git a/platform/linux-keystone2/Makefile.am b/platform/linux-
> keystone2/Makefile.am
> index 027c035..3751be9 100644
> --- a/platform/linux-keystone2/Makefile.am
> +++ b/platform/linux-keystone2/Makefile.am
> @@ -70,13 +70,15 @@ __LIB__libodp_la_SOURCES = \
>                          odp_buffer.c \
>                          odp_buffer_pool.c \
>                          ../linux-generic/odp_coremask.c \
> -                        odp_init.c \
> +                        ../linux-generic/odp_init.c \
>                          ../linux-generic/odp_linux.c \
>                          odp_packet.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_crypto.c \
>                          ../linux-generic/odp_ring.c \
>                          ../linux-generic/odp_rwlock.c \
>                          ../linux-generic/odp_schedule.c \
> diff --git a/platform/linux-keystone2/odp_init.c b/platform/linux-
> keystone2/odp_platform.c
> similarity index 72%
> rename from platform/linux-keystone2/odp_init.c
> rename to platform/linux-keystone2/odp_platform.c
> index f832551..e966627 100644
> --- a/platform/linux-keystone2/odp_init.c
> +++ b/platform/linux-keystone2/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
> @@ -15,17 +15,19 @@
>  #include <odp_packet_internal.h>
> 
>  /*
> - * Make region_configs[] global, because hw_config is saved in
> - * ti_em_rh_init_global() and it references region_configs[].
> - */
> + *  * Make region_configs[] global, because hw_config is saved in
> + *   * ti_em_rh_init_global() and it references region_configs[].
> + *    */
>  static ti_em_osal_hw_region_config_t region_configs[TI_ODP_REGION_NUM];
> 
> -static int ti_init_hw_config(void)
> +int odp_init_platform(odp_platform_init_t *platform_params ODP_UNUSED)
>  {
>       ti_em_rh_hw_config_t           hw_config;
>       ti_em_osal_hw_region_config_t *reg_config;
>       memset(&hw_config, 0, sizeof(ti_em_rh_hw_config_t));
> 
> +     ti_em_osal_core_init_global();
> +
>       /* Set ODP initialization parameters */
>       hw_config.private_free_queue_idx = MY_EM_PRIVATE_FREE_QUEUE_IDX;
>       hw_config.hw_queue_base_idx      = MY_EM_SCHED_QUEUE_IDX;
> @@ -89,65 +91,3 @@ static int ti_init_hw_config(void)
>       return 0;
>  }
> 
> -
> -int odp_init_global(void)
> -{
> -     odp_thread_init_global();
> -
> -     odp_system_info_init();
> -
> -     ti_em_osal_core_init_global();
> -     ti_init_hw_config();
> -
> -     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);
> -
> -     ti_em_rh_init_local();
> -
> -     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/test/api_test/odp_common.c b/test/api_test/odp_common.c
> index b0a6fbc..ed1fc97 100644
> --- a/test/api_test/odp_common.c
> +++ b/test/api_test/odp_common.c
> @@ -56,7 +56,7 @@ int odp_test_global_init(void)
>  {
>       memset(thread_tbl, 0, sizeof(thread_tbl));
> 
> -     if (odp_init_global()) {
> +     if (odp_init_global(NULL, NULL)) {
>               ODP_ERR("ODP global init failed.\n");
>               return -1;
>       }
> --
> 1.9.1
> 
> 
> _______________________________________________
> 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

Reply via email to