> -----Original Message-----
> From: [email protected] [mailto:lng-odp-
> [email protected]] On Behalf Of ext Mike Holmes
> Sent: Tuesday, September 02, 2014 9:06 PM
> To: [email protected]
> Subject: [lng-odp] [PATCH v5] Add-global_init-paramiters
>
> Signed-off-by: Mike Holmes <[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.
>
> v5:
> rename typedef struct names
>
> This touches all platforms to get crypto working with generic init, DPDK
> should
> be using generic crypto but obviously KS2 will replace this.
> A platform may replace global init entirely but this patch starts out
> assuming
> that the sub module inits can be called from a central global_init as a
> starting
> point.
>
> 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 | 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 +-
> 16 files changed, 73 insertions(+), 149 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..48fc9d7 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 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.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..8cdce46 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_t {
> +} odp_global_init_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_t {
> +} odp_global_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_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.
> * 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 -> remove ODP_UNUSED
...OR actually you can remove odp_init_platform() since it's doing nothing. For
the same reason,
there are no calls to e.g. odp_barrier_init(), odp_coremask_init(),
odp_spinlock_init() either - those do not need global initialization (in
linux-generic implementation). Also if some linux-generic platform init data
would be added to odp_global_platform_init_t, it would be consumed by
individual init functions e.g. odp_schedule_init_global(platform_params), etc.
This is the platform specific init ... there's not need for odp_init_platform().
-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;
> +}
> http://lists.linaro.org/mailman/listinfo/lng-odp
_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp