This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "".
The branch, master has been updated via 42a8b2f0dbaee653953170cbd0a7fa659bc32b38 (commit) via f4f4dcee96e534c0badc28258ad09ef50b35ec76 (commit) via d6e4b3df266ee1c847763ba50fa802d9e9e62b5e (commit) via bdc44eae6bac8aed26170d21cf05fe99ba9d84d6 (commit) via 170e93051d25ac491811f1ed66cd5552a0b26ec8 (commit) from 744d466a0fe5530bb6c036664413d799a3aeb871 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 42a8b2f0dbaee653953170cbd0a7fa659bc32b38 Author: Petri Savolainen petri.savolainen@linaro.org Date: Fri May 25 11:25:15 2018 +0300
linux-gen: cpu: inline cpu_cycles_diff
Moved the last function from .c file to inline header and removed .c file.
Signed-off-by: Petri Savolainen petri.savolainen@linaro.org Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am index 218138f9..e995479a 100644 --- a/platform/linux-generic/Makefile.am +++ b/platform/linux-generic/Makefile.am @@ -149,7 +149,6 @@ __LIB__libodp_linux_la_SOURCES = \ odp_buffer.c \ odp_chksum.c \ odp_classification.c \ - odp_cpu.c \ odp_cpumask.c \ odp_cpumask_task.c \ odp_crypto.c \ diff --git a/platform/linux-generic/include/odp/api/plat/cpu_inlines.h b/platform/linux-generic/include/odp/api/plat/cpu_inlines.h index 29b6ca7a..054801e8 100644 --- a/platform/linux-generic/include/odp/api/plat/cpu_inlines.h +++ b/platform/linux-generic/include/odp/api/plat/cpu_inlines.h @@ -7,6 +7,8 @@ #ifndef ODP_PLAT_CPU_INLINES_H_ #define ODP_PLAT_CPU_INLINES_H_
+#include <odp/api/hints.h> + /** @cond _ODP_HIDE_FROM_DOXYGEN_ */
#ifndef _ODP_NO_INLINE @@ -16,12 +18,21 @@ #define odp_cpu_cycles __odp_cpu_cycles #define odp_cpu_cycles_max __odp_cpu_cycles_max #define odp_cpu_cycles_resolution __odp_cpu_cycles_resolution + #define odp_cpu_cycles_diff __odp_cpu_cycles_diff #else #define _ODP_INLINE #endif
#include <odp/api/abi/cpu_inlines.h>
+_ODP_INLINE uint64_t odp_cpu_cycles_diff(uint64_t c2, uint64_t c1) +{ + if (odp_likely(c2 >= c1)) + return c2 - c1; + + return c2 + (odp_cpu_cycles_max() - c1) + 1; +} + /** @endcond */
#endif diff --git a/platform/linux-generic/include/odp_ring_internal.h b/platform/linux-generic/include/odp_ring_internal.h index 8a01d461..03c0817e 100644 --- a/platform/linux-generic/include/odp_ring_internal.h +++ b/platform/linux-generic/include/odp_ring_internal.h @@ -12,6 +12,7 @@ extern "C" { #endif
#include <odp/api/atomic.h> +#include <odp/api/cpu.h> #include <odp/api/hints.h> #include <odp_align_internal.h> #include <odp/api/plat/atomic_inlines.h> diff --git a/platform/linux-generic/odp_cpu.c b/platform/linux-generic/odp_cpu.c deleted file mode 100644 index cfdb1cfd..00000000 --- a/platform/linux-generic/odp_cpu.c +++ /dev/null @@ -1,18 +0,0 @@ -/* Copyright (c) 2015-2018, Linaro Limited - * All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include "config.h" - -#include <odp/api/cpu.h> -#include <odp/api/hints.h> - -uint64_t odp_cpu_cycles_diff(uint64_t c2, uint64_t c1) -{ - if (odp_likely(c2 >= c1)) - return c2 - c1; - - return c2 + (odp_cpu_cycles_max() - c1) + 1; -} diff --git a/platform/linux-generic/odp_schedule_scalable_ordered.c b/platform/linux-generic/odp_schedule_scalable_ordered.c index f68a559d..e01120f1 100644 --- a/platform/linux-generic/odp_schedule_scalable_ordered.c +++ b/platform/linux-generic/odp_schedule_scalable_ordered.c @@ -8,6 +8,7 @@ #include <config.h>
#include <odp/api/shared_memory.h> +#include <odp/api/cpu.h> #include <odp/api/plat/cpu_inlines.h> #include <odp_queue_scalable_internal.h> #include <odp_schedule_if.h>
commit f4f4dcee96e534c0badc28258ad09ef50b35ec76 Author: Petri Savolainen petri.savolainen@linaro.org Date: Thu May 24 16:54:46 2018 +0300
linux-gen: cpu: inline cpu cycle functions on x86
Moved cpu cycle and pause functions into arch/x86/odp_arch_cpu_inlines.h.
Uncommented pause function in spec file and removed it from ABI file. It's safer for ABI compat mode to not have code included into ABI spec files.
Other architectures use the default odp_arch_cpu_inlines.h, which does not change the current implementation.
Signed-off-by: Petri Savolainen petri.savolainen@linaro.org Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/Makefile.inc b/Makefile.inc index c887b2ee..f9c4cae4 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -9,6 +9,7 @@ else ODP_INCLUDES += \ -I$(top_srcdir)/platform/@with_platform@/include \ -I$(top_srcdir)/platform/@with_platform@/arch/@ARCH_DIR@ \ + -I$(top_srcdir)/platform/@with_platform@/arch/default \ -I$(top_srcdir)/platform/@with_platform@/include-abi endif
diff --git a/include/odp/api/spec/cpu.h b/include/odp/api/spec/cpu.h index d107f283..f6a7e656 100644 --- a/include/odp/api/spec/cpu.h +++ b/include/odp/api/spec/cpu.h @@ -161,14 +161,13 @@ uint64_t odp_cpu_cycles_max(void); uint64_t odp_cpu_cycles_resolution(void);
/** - * @def odp_cpu_pause * Pause CPU execution for a short while * * This call is intended for tight loops which poll a shared resource. A short * pause within the loop may save energy and improve system performance as * CPU polling frequency is reduced. */ -/* void odp_cpu_pause(void); */ +void odp_cpu_pause(void);
/** * @} diff --git a/include/odp/arch/x86_32-linux/odp/api/abi/cpu.h b/include/odp/arch/x86_32-linux/odp/api/abi/cpu.h index 523fa99e..d7485c09 100644 --- a/include/odp/arch/x86_32-linux/odp/api/abi/cpu.h +++ b/include/odp/arch/x86_32-linux/odp/api/abi/cpu.h @@ -13,15 +13,6 @@ extern "C" {
#define ODP_CACHE_LINE_SIZE 64
-static inline void odp_cpu_pause(void) -{ -#ifdef __SSE2__ - __asm__ __volatile__ ("pause"); -#else - __asm__ __volatile__ ("rep; nop"); -#endif -} - #ifdef __cplusplus } #endif diff --git a/include/odp/arch/x86_64-linux/odp/api/abi/cpu.h b/include/odp/arch/x86_64-linux/odp/api/abi/cpu.h index d4fcf892..69b82eb0 100644 --- a/include/odp/arch/x86_64-linux/odp/api/abi/cpu.h +++ b/include/odp/arch/x86_64-linux/odp/api/abi/cpu.h @@ -13,11 +13,6 @@ extern "C" {
#define ODP_CACHE_LINE_SIZE 64
-static inline void odp_cpu_pause(void) -{ - __asm__ __volatile__ ("pause"); -} - #ifdef __cplusplus } #endif diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am index 6269e578..218138f9 100644 --- a/platform/linux-generic/Makefile.am +++ b/platform/linux-generic/Makefile.am @@ -20,12 +20,16 @@ DISTCLEANFILES = include/odp_libconfig_config.h include/odp_libconfig_config.h: $(top_srcdir)/config/odp-$(with_platform).conf $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+odpapiabiarchincludedir = $(archincludedir)/odp/api/abi +odpapiabiarchinclude_HEADERS = + if !ODP_ABI_COMPAT odpapiplatincludedir= $(includedir)/odp/api/plat odpapiplatinclude_HEADERS = \ include/odp/api/plat/atomic_inlines.h \ include/odp/api/plat/buffer_inline_types.h \ include/odp/api/plat/byteorder_inlines.h \ + include/odp/api/plat/cpu_inlines.h \ include/odp/api/plat/event_inlines.h \ include/odp/api/plat/packet_flag_inlines.h \ include/odp/api/plat/packet_inline_types.h \ @@ -38,8 +42,7 @@ odpapiplatinclude_HEADERS = \ include/odp/api/plat/thread_inlines.h \ include/odp/api/plat/ticketlock_inlines.h
-odpapiabiarchincludedir = $(archincludedir)/odp/api/abi -odpapiabiarchinclude_HEADERS = \ +odpapiabiarchinclude_HEADERS += \ include-abi/odp/api/abi/align.h \ include-abi/odp/api/abi/atomic.h \ include-abi/odp/api/abi/barrier.h \ @@ -214,6 +217,7 @@ if ODP_ABI_COMPAT __LIB__libodp_linux_la_SOURCES += \ odp_atomic_api.c \ odp_byteorder_api.c \ + odp_cpu_api.c \ odp_event_api.c \ odp_packet_api.c \ odp_packet_flags_api.c \ @@ -228,32 +232,33 @@ if ARCH_IS_ARM __LIB__libodp_linux_la_SOURCES += arch/default/odp_cpu_cycles.c \ arch/default/odp_global_time.c \ arch/default/odp_sysinfo_parse.c +odpapiabiarchinclude_HEADERS += arch/default/odp/api/abi/cpu_inlines.h if !ODP_ABI_COMPAT odpapiabiarchinclude_HEADERS += arch/arm/odp/api/abi/cpu.h endif noinst_HEADERS += arch/arm/odp_atomic.h \ arch/arm/odp_cpu.h \ arch/arm/odp_cpu_idling.h \ - arch/default/odp_cpu_idling.h \ arch/arm/odp_llsc.h endif if ARCH_IS_AARCH64 __LIB__libodp_linux_la_SOURCES += arch/default/odp_cpu_cycles.c \ arch/aarch64/odp_global_time.c \ arch/default/odp_sysinfo_parse.c +odpapiabiarchinclude_HEADERS += arch/default/odp/api/abi/cpu_inlines.h if !ODP_ABI_COMPAT odpapiabiarchinclude_HEADERS += arch/aarch64/odp/api/abi/cpu.h endif noinst_HEADERS += arch/aarch64/odp_atomic.h \ arch/aarch64/odp_cpu.h \ arch/aarch64/odp_cpu_idling.h \ - arch/default/odp_cpu_idling.h \ arch/aarch64/odp_llsc.h endif if ARCH_IS_DEFAULT __LIB__libodp_linux_la_SOURCES += arch/default/odp_cpu_cycles.c \ arch/default/odp_global_time.c \ arch/default/odp_sysinfo_parse.c +odpapiabiarchinclude_HEADERS += arch/default/odp/api/abi/cpu_inlines.h if !ODP_ABI_COMPAT odpapiabiarchinclude_HEADERS += arch/default/odp/api/abi/cpu.h endif @@ -264,6 +269,7 @@ if ARCH_IS_MIPS64 __LIB__libodp_linux_la_SOURCES += arch/mips64/odp_cpu_cycles.c \ arch/default/odp_global_time.c \ arch/mips64/odp_sysinfo_parse.c +odpapiabiarchinclude_HEADERS += arch/default/odp/api/abi/cpu_inlines.h if !ODP_ABI_COMPAT odpapiabiarchinclude_HEADERS += arch/mips64/odp/api/abi/cpu.h endif @@ -274,6 +280,7 @@ if ARCH_IS_POWERPC __LIB__libodp_linux_la_SOURCES += arch/default/odp_cpu_cycles.c \ arch/default/odp_global_time.c \ arch/powerpc/odp_sysinfo_parse.c +odpapiabiarchinclude_HEADERS += arch/default/odp/api/abi/cpu_inlines.h if !ODP_ABI_COMPAT odpapiabiarchinclude_HEADERS += arch/powerpc/odp/api/abi/cpu.h endif @@ -285,11 +292,12 @@ __LIB__libodp_linux_la_SOURCES += arch/x86/cpu_flags.c \ arch/x86/odp_cpu_cycles.c \ arch/x86/odp_global_time.c \ arch/x86/odp_sysinfo_parse.c +odpapiabiarchinclude_HEADERS += arch/x86/odp/api/abi/cpu_inlines.h if !ODP_ABI_COMPAT odpapiabiarchinclude_HEADERS += arch/x86/odp/api/abi/cpu.h endif -noinst_HEADERS += arch/x86/cpu_flags.h -noinst_HEADERS += arch/default/odp_cpu.h \ +noinst_HEADERS += arch/x86/cpu_flags.h \ + arch/default/odp_cpu.h \ arch/default/odp_cpu_idling.h endif
diff --git a/platform/linux-generic/arch/default/odp/api/abi/cpu_inlines.h b/platform/linux-generic/arch/default/odp/api/abi/cpu_inlines.h new file mode 100644 index 00000000..f9c2bae9 --- /dev/null +++ b/platform/linux-generic/arch/default/odp/api/abi/cpu_inlines.h @@ -0,0 +1,15 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef ODP_ARCH_CPU_INLINES_H_ +#define ODP_ARCH_CPU_INLINES_H_ + +#undef odp_cpu_pause +#undef odp_cpu_cycles +#undef odp_cpu_cycles_max +#undef odp_cpu_cycles_resolution + +#endif diff --git a/platform/linux-generic/arch/x86/odp/api/abi/cpu.h b/platform/linux-generic/arch/x86/odp/api/abi/cpu.h index 523fa99e..9224af9a 100644 --- a/platform/linux-generic/arch/x86/odp/api/abi/cpu.h +++ b/platform/linux-generic/arch/x86/odp/api/abi/cpu.h @@ -13,14 +13,8 @@ extern "C" {
#define ODP_CACHE_LINE_SIZE 64
-static inline void odp_cpu_pause(void) -{ -#ifdef __SSE2__ - __asm__ __volatile__ ("pause"); -#else - __asm__ __volatile__ ("rep; nop"); -#endif -} +/* Inlined functions for non-ABI compat mode */ +#include <odp/api/plat/cpu_inlines.h>
#ifdef __cplusplus } diff --git a/platform/linux-generic/arch/x86/odp/api/abi/cpu_inlines.h b/platform/linux-generic/arch/x86/odp/api/abi/cpu_inlines.h new file mode 100644 index 00000000..63be3da6 --- /dev/null +++ b/platform/linux-generic/arch/x86/odp/api/abi/cpu_inlines.h @@ -0,0 +1,48 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef ODP_ARCH_CPU_INLINES_H_ +#define ODP_ARCH_CPU_INLINES_H_ + +#include <stdint.h> + +_ODP_INLINE void odp_cpu_pause(void) +{ +#ifdef __SSE2__ + __asm__ __volatile__ ("pause"); +#else + __asm__ __volatile__ ("rep; nop"); +#endif +} + +_ODP_INLINE uint64_t odp_cpu_cycles(void) +{ + union { + uint64_t tsc_64; + struct { + uint32_t lo_32; + uint32_t hi_32; + }; + } tsc; + + __asm__ __volatile__ ("rdtsc" : + "=a" (tsc.lo_32), + "=d" (tsc.hi_32) : : "memory"); + + return tsc.tsc_64; +} + +_ODP_INLINE uint64_t odp_cpu_cycles_max(void) +{ + return UINT64_MAX; +} + +_ODP_INLINE uint64_t odp_cpu_cycles_resolution(void) +{ + return 1; +} + +#endif diff --git a/platform/linux-generic/arch/x86/odp_cpu_cycles.c b/platform/linux-generic/arch/x86/odp_cpu_cycles.c index 4e50b6da..c7d97a76 100644 --- a/platform/linux-generic/arch/x86/odp_cpu_cycles.c +++ b/platform/linux-generic/arch/x86/odp_cpu_cycles.c @@ -10,33 +10,6 @@ #include <odp_init_internal.h> #include <odp_debug_internal.h>
-uint64_t odp_cpu_cycles(void) -{ - union { - uint64_t tsc_64; - struct { - uint32_t lo_32; - uint32_t hi_32; - }; - } tsc; - - __asm__ __volatile__ ("rdtsc" : - "=a" (tsc.lo_32), - "=d" (tsc.hi_32) : : "memory"); - - return tsc.tsc_64; -} - -uint64_t odp_cpu_cycles_max(void) -{ - return UINT64_MAX; -} - -uint64_t odp_cpu_cycles_resolution(void) -{ - return 1; -} - int _odp_cpu_cycles_init_global(void) { if (cpu_flags_has_rdtsc() == 0) { diff --git a/platform/linux-generic/arch/x86/odp_global_time.c b/platform/linux-generic/arch/x86/odp_global_time.c index 70a1a1a7..da22d45a 100644 --- a/platform/linux-generic/arch/x86/odp_global_time.c +++ b/platform/linux-generic/arch/x86/odp_global_time.c @@ -15,6 +15,9 @@ #include <odp_debug_internal.h> #include <odp_arch_time_internal.h>
+/* Inlined API functions */ +#include <odp/api/plat/cpu_inlines.h> + uint64_t cpu_global_time(void) { return odp_cpu_cycles(); diff --git a/platform/linux-generic/include/odp/api/plat/cpu_inlines.h b/platform/linux-generic/include/odp/api/plat/cpu_inlines.h new file mode 100644 index 00000000..29b6ca7a --- /dev/null +++ b/platform/linux-generic/include/odp/api/plat/cpu_inlines.h @@ -0,0 +1,27 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef ODP_PLAT_CPU_INLINES_H_ +#define ODP_PLAT_CPU_INLINES_H_ + +/** @cond _ODP_HIDE_FROM_DOXYGEN_ */ + +#ifndef _ODP_NO_INLINE + /* Inline functions by default */ + #define _ODP_INLINE static inline + #define odp_cpu_pause __odp_cpu_pause + #define odp_cpu_cycles __odp_cpu_cycles + #define odp_cpu_cycles_max __odp_cpu_cycles_max + #define odp_cpu_cycles_resolution __odp_cpu_cycles_resolution +#else + #define _ODP_INLINE +#endif + +#include <odp/api/abi/cpu_inlines.h> + +/** @endcond */ + +#endif diff --git a/platform/linux-generic/include/odp/api/plat/ticketlock_inlines.h b/platform/linux-generic/include/odp/api/plat/ticketlock_inlines.h index e84ed88e..1d944bc1 100644 --- a/platform/linux-generic/include/odp/api/plat/ticketlock_inlines.h +++ b/platform/linux-generic/include/odp/api/plat/ticketlock_inlines.h @@ -8,6 +8,7 @@ #define _ODP_PLAT_TICKETLOCK_INLINES_H_
#include <odp/api/atomic.h> +#include <odp/api/cpu.h>
/** @cond _ODP_HIDE_FROM_DOXYGEN_ */
@@ -21,6 +22,7 @@ #define odp_ticketlock_is_locked __odp_ticketlock_is_locked /* Inline atomic functions */ #include <odp/api/plat/atomic_inlines.h> + #include <odp/api/plat/cpu_inlines.h> #else #undef _ODP_INLINE #define _ODP_INLINE diff --git a/platform/linux-generic/include/odp_ring_internal.h b/platform/linux-generic/include/odp_ring_internal.h index b47c41e5..8a01d461 100644 --- a/platform/linux-generic/include/odp_ring_internal.h +++ b/platform/linux-generic/include/odp_ring_internal.h @@ -15,6 +15,7 @@ extern "C" { #include <odp/api/hints.h> #include <odp_align_internal.h> #include <odp/api/plat/atomic_inlines.h> +#include <odp/api/plat/cpu_inlines.h>
/* Ring empty, not a valid data value. */ #define RING_EMPTY ((uint32_t)-1) diff --git a/platform/linux-generic/odp_barrier.c b/platform/linux-generic/odp_barrier.c index ec35d0ff..132ba370 100644 --- a/platform/linux-generic/odp_barrier.c +++ b/platform/linux-generic/odp_barrier.c @@ -12,6 +12,7 @@ #include <odp/api/atomic.h> #include <odp/api/plat/atomic_inlines.h> #include <odp/api/plat/sync_inlines.h> +#include <odp/api/plat/cpu_inlines.h>
void odp_barrier_init(odp_barrier_t *barrier, int count) { diff --git a/platform/linux-generic/odp_cpu_api.c b/platform/linux-generic/odp_cpu_api.c new file mode 100644 index 00000000..2e856ec2 --- /dev/null +++ b/platform/linux-generic/odp_cpu_api.c @@ -0,0 +1,13 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "config.h" + +#include <odp/api/cpu.h> + +/* Non-inlined functions for ABI compat mode */ +#define _ODP_NO_INLINE +#include <odp/api/plat/cpu_inlines.h> diff --git a/platform/linux-generic/odp_ipsec_sad.c b/platform/linux-generic/odp_ipsec_sad.c index 061b45f3..3b1686b8 100644 --- a/platform/linux-generic/odp_ipsec_sad.c +++ b/platform/linux-generic/odp_ipsec_sad.c @@ -7,7 +7,6 @@ #include "config.h"
#include <odp/api/atomic.h> -#include <odp/api/plat/atomic_inlines.h> #include <odp/api/ipsec.h> #include <odp/api/random.h> #include <odp/api/shared_memory.h> @@ -16,6 +15,9 @@ #include <odp_debug_internal.h> #include <odp_ipsec_internal.h>
+#include <odp/api/plat/atomic_inlines.h> +#include <odp/api/plat/cpu_inlines.h> + #include <string.h>
#define IPSEC_SA_STATE_DISABLE 0x40000000 diff --git a/platform/linux-generic/odp_rwlock.c b/platform/linux-generic/odp_rwlock.c index 3a1086d2..e027a23b 100644 --- a/platform/linux-generic/odp_rwlock.c +++ b/platform/linux-generic/odp_rwlock.c @@ -8,10 +8,12 @@
#include <stdbool.h> #include <odp/api/atomic.h> -#include <odp/api/plat/atomic_inlines.h> #include <odp/api/rwlock.h> #include <odp/api/cpu.h>
+#include <odp/api/plat/atomic_inlines.h> +#include <odp/api/plat/cpu_inlines.h> + void odp_rwlock_init(odp_rwlock_t *rwlock) { odp_atomic_init_u32(&rwlock->cnt, 0); diff --git a/platform/linux-generic/odp_schedule_scalable.c b/platform/linux-generic/odp_schedule_scalable.c index 9a0dea47..ff24815c 100644 --- a/platform/linux-generic/odp_schedule_scalable.c +++ b/platform/linux-generic/odp_schedule_scalable.c @@ -25,6 +25,7 @@ #include <odp_ishmpool_internal.h>
#include <odp_align_internal.h> +#include <odp/api/plat/cpu_inlines.h> #include <odp_llqueue.h> #include <odp_queue_scalable_internal.h> #include <odp_schedule_if.h> diff --git a/platform/linux-generic/odp_schedule_scalable_ordered.c b/platform/linux-generic/odp_schedule_scalable_ordered.c index 2b3feaa1..f68a559d 100644 --- a/platform/linux-generic/odp_schedule_scalable_ordered.c +++ b/platform/linux-generic/odp_schedule_scalable_ordered.c @@ -8,6 +8,7 @@ #include <config.h>
#include <odp/api/shared_memory.h> +#include <odp/api/plat/cpu_inlines.h> #include <odp_queue_scalable_internal.h> #include <odp_schedule_if.h> #include <odp_bitset.h> diff --git a/platform/linux-generic/odp_spinlock.c b/platform/linux-generic/odp_spinlock.c index 2e51aabc..54b7c713 100644 --- a/platform/linux-generic/odp_spinlock.c +++ b/platform/linux-generic/odp_spinlock.c @@ -10,6 +10,8 @@ #include <odp/api/cpu.h> #include <odp_atomic_internal.h>
+#include <odp/api/plat/cpu_inlines.h> + void odp_spinlock_init(odp_spinlock_t *spinlock) { _odp_atomic_flag_init(&spinlock->lock, 0); diff --git a/platform/linux-generic/pktio/ring.c b/platform/linux-generic/pktio/ring.c index 778c2fac..518d940e 100644 --- a/platform/linux-generic/pktio/ring.c +++ b/platform/linux-generic/pktio/ring.c @@ -80,6 +80,8 @@ #include <odp_packet_io_ring_internal.h> #include <odp_errno_define.h>
+#include <odp/api/plat/cpu_inlines.h> + static TAILQ_HEAD(, _ring) odp_ring_list;
#define RING_VAL_IS_POWER_2(x) ((((x) - 1) & (x)) == 0)
commit d6e4b3df266ee1c847763ba50fa802d9e9e62b5e Author: Petri Savolainen petri.savolainen@linaro.org Date: Thu May 24 14:43:38 2018 +0300
linux-gen: cpu: add cpu cycles init global
Add global init function to check e.g. if CPU cycle counter instruction is available on x86.
Signed-off-by: Petri Savolainen petri.savolainen@linaro.org Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/platform/linux-generic/arch/default/odp_cpu_cycles.c b/platform/linux-generic/arch/default/odp_cpu_cycles.c index 3e3df087..88e70b2e 100644 --- a/platform/linux-generic/arch/default/odp_cpu_cycles.c +++ b/platform/linux-generic/arch/default/odp_cpu_cycles.c @@ -13,6 +13,7 @@
#include <odp/api/cpu.h> #include <odp_debug_internal.h> +#include <odp_init_internal.h>
#define GIGA 1000000000
@@ -46,3 +47,8 @@ uint64_t odp_cpu_cycles_resolution(void) { return 1; } + +int _odp_cpu_cycles_init_global(void) +{ + return 0; +} diff --git a/platform/linux-generic/arch/mips64/odp_cpu_cycles.c b/platform/linux-generic/arch/mips64/odp_cpu_cycles.c index 26b92878..72a0e5b0 100644 --- a/platform/linux-generic/arch/mips64/odp_cpu_cycles.c +++ b/platform/linux-generic/arch/mips64/odp_cpu_cycles.c @@ -9,6 +9,7 @@ #include <odp/api/cpu.h> #include <odp/api/hints.h> #include <odp/api/system_info.h> +#include <odp_init_internal.h>
uint64_t odp_cpu_cycles(void) { @@ -31,3 +32,8 @@ uint64_t odp_cpu_cycles_resolution(void) { return 1; } + +int _odp_cpu_cycles_init_global(void) +{ + return 0; +} diff --git a/platform/linux-generic/arch/x86/cpu_flags.c b/platform/linux-generic/arch/x86/cpu_flags.c index 0fcaa477..f5a744fd 100644 --- a/platform/linux-generic/arch/x86/cpu_flags.c +++ b/platform/linux-generic/arch/x86/cpu_flags.c @@ -368,3 +368,11 @@ int cpu_has_global_time(void)
return 0; } + +int cpu_flags_has_rdtsc(void) +{ + if (cpu_get_flag_enabled(RTE_CPUFLAG_TSC) > 0) + return 1; + + return 0; +} diff --git a/platform/linux-generic/arch/x86/cpu_flags.h b/platform/linux-generic/arch/x86/cpu_flags.h index b0d26888..879c9aad 100644 --- a/platform/linux-generic/arch/x86/cpu_flags.h +++ b/platform/linux-generic/arch/x86/cpu_flags.h @@ -12,6 +12,7 @@ extern "C" { #endif
void cpu_flags_print_all(void); +int cpu_flags_has_rdtsc(void);
#ifdef __cplusplus } diff --git a/platform/linux-generic/arch/x86/odp_cpu_cycles.c b/platform/linux-generic/arch/x86/odp_cpu_cycles.c index 12af1c17..4e50b6da 100644 --- a/platform/linux-generic/arch/x86/odp_cpu_cycles.c +++ b/platform/linux-generic/arch/x86/odp_cpu_cycles.c @@ -6,6 +6,10 @@
#include <odp/api/cpu.h>
+#include "cpu_flags.h" +#include <odp_init_internal.h> +#include <odp_debug_internal.h> + uint64_t odp_cpu_cycles(void) { union { @@ -32,3 +36,13 @@ uint64_t odp_cpu_cycles_resolution(void) { return 1; } + +int _odp_cpu_cycles_init_global(void) +{ + if (cpu_flags_has_rdtsc() == 0) { + ODP_ERR("RDTSC instruction not supported\n"); + return -1; + } + + return 0; +} diff --git a/platform/linux-generic/include/odp_init_internal.h b/platform/linux-generic/include/odp_init_internal.h index 86438938..3619d777 100644 --- a/platform/linux-generic/include/odp_init_internal.h +++ b/platform/linux-generic/include/odp_init_internal.h @@ -81,6 +81,8 @@ int _odp_ipsec_sad_term_global(void); int _odp_ipsec_events_init_global(void); int _odp_ipsec_events_term_global(void);
+int _odp_cpu_cycles_init_global(void); + #ifdef __cplusplus } #endif diff --git a/platform/linux-generic/odp_init.c b/platform/linux-generic/odp_init.c index 7de3d689..b2b75f12 100644 --- a/platform/linux-generic/odp_init.c +++ b/platform/linux-generic/odp_init.c @@ -21,6 +21,7 @@ enum init_stage { NO_INIT = 0, /* No init stages completed */ LIBCONFIG_INIT, CPUMASK_INIT, + CPU_CYCLES_INIT, TIME_INIT, SYSINFO_INIT, ISHM_INIT, @@ -173,6 +174,8 @@ static int term_global(enum init_stage stage) } /* Fall through */
+ case CPU_CYCLES_INIT: + /* Fall through */ case CPUMASK_INIT: if (odp_cpumask_term_global()) { ODP_ERR("ODP cpumask term failed.\n"); @@ -224,6 +227,12 @@ int odp_init_global(odp_instance_t *instance, } stage = CPUMASK_INIT;
+ if (_odp_cpu_cycles_init_global()) { + ODP_ERR("ODP cpu cycle init failed.\n"); + goto init_failed; + } + stage = CPU_CYCLES_INIT; + if (odp_time_init_global()) { ODP_ERR("ODP time init failed.\n"); goto init_failed;
commit bdc44eae6bac8aed26170d21cf05fe99ba9d84d6 Author: Petri Savolainen petri.savolainen@linaro.org Date: Thu May 24 11:41:30 2018 +0300
linux-gen: init: split odp_internal.h
odp_internal.h contained code for three different purposes. Split file into three different headers, so that it's no more a place for random type/function prototype additions.
New files are: * odp_init_internal.h which holds global/local init function prototypes * odp_global_data.h which defines global data structure * odp_sysinfo_internal.h which contains system info internal function prototypes
Signed-off-by: Petri Savolainen petri.savolainen@linaro.org Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am index fb212950..6269e578 100644 --- a/platform/linux-generic/Makefile.am +++ b/platform/linux-generic/Makefile.am @@ -91,7 +91,8 @@ noinst_HEADERS = \ include/odp_errno_define.h \ include/odp_fdserver_internal.h \ include/odp_forward_typedefs_internal.h \ - include/odp_internal.h \ + include/odp_global_data.h \ + include/odp_init_internal.h \ include/odp_ipsec_internal.h \ include/odp_ishm_internal.h \ include/odp_ishmphy_internal.h \ @@ -125,6 +126,7 @@ noinst_HEADERS = \ include/odp_schedule_scalable_ordered.h \ include/odp_shm_internal.h \ include/odp_sorted_list_internal.h \ + include/odp_sysinfo_internal.h \ include/odp_timer_internal.h \ include/odp_timer_wheel_internal.h \ include/odp_traffic_mngr_internal.h \ diff --git a/platform/linux-generic/arch/default/odp_sysinfo_parse.c b/platform/linux-generic/arch/default/odp_sysinfo_parse.c index f1bad96c..49e94029 100644 --- a/platform/linux-generic/arch/default/odp_sysinfo_parse.c +++ b/platform/linux-generic/arch/default/odp_sysinfo_parse.c @@ -6,7 +6,7 @@
#include "config.h"
-#include <odp_internal.h> +#include <odp_sysinfo_internal.h> #include <odp_debug_internal.h> #include <string.h>
diff --git a/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c b/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c index fe600c55..339c6749 100644 --- a/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c +++ b/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c @@ -6,7 +6,7 @@
#include "config.h"
-#include <odp_internal.h> +#include <odp_sysinfo_internal.h> #include <string.h>
int cpuinfo_parser(FILE *file, system_info_t *sysinfo) diff --git a/platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c b/platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c index fd265920..810f3758 100644 --- a/platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c +++ b/platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c @@ -6,7 +6,7 @@
#include "config.h"
-#include <odp_internal.h> +#include <odp_sysinfo_internal.h> #include <string.h>
int cpuinfo_parser(FILE *file, system_info_t *sysinfo) diff --git a/platform/linux-generic/arch/x86/odp_sysinfo_parse.c b/platform/linux-generic/arch/x86/odp_sysinfo_parse.c index b334a276..d9f3a82d 100644 --- a/platform/linux-generic/arch/x86/odp_sysinfo_parse.c +++ b/platform/linux-generic/arch/x86/odp_sysinfo_parse.c @@ -6,7 +6,7 @@
#include "config.h"
-#include <odp_internal.h> +#include <odp_sysinfo_internal.h> #include "cpu_flags.h" #include <string.h>
diff --git a/platform/linux-generic/include/odp_debug_internal.h b/platform/linux-generic/include/odp_debug_internal.h index 58054e9e..2e92dd74 100644 --- a/platform/linux-generic/include/odp_debug_internal.h +++ b/platform/linux-generic/include/odp_debug_internal.h @@ -19,7 +19,7 @@ #include <stdio.h> #include <stdlib.h> #include <odp/api/debug.h> -#include <odp_internal.h> +#include <odp_global_data.h> #ifdef __cplusplus extern "C" { #endif diff --git a/platform/linux-generic/include/odp_global_data.h b/platform/linux-generic/include/odp_global_data.h new file mode 100644 index 00000000..a5c2abd1 --- /dev/null +++ b/platform/linux-generic/include/odp_global_data.h @@ -0,0 +1,68 @@ +/* Copyright (c) 2013-2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef ODP_GLOBAL_DATA_H_ +#define ODP_GLOBAL_DATA_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <odp/api/init.h> +#include <odp/api/cpumask.h> +#include <sys/types.h> +#include <pthread.h> +#include <stdint.h> +#include <libconfig.h> + +#define MAX_CPU_NUMBER 128 +#define UID_MAXLEN 30 + +typedef struct { + uint64_t cpu_hz_max[MAX_CPU_NUMBER]; + uint64_t page_size; + int cache_line_size; + int cpu_count; + char cpu_arch_str[128]; + char model_str[MAX_CPU_NUMBER][128]; +} system_info_t; + +typedef struct { + uint64_t default_huge_page_size; + char *default_huge_page_dir; +} hugepage_info_t; + +struct odp_global_data_s { + /* directory for odp mmaped files */ + char *shm_dir; + /* overload default with env */ + int shm_dir_from_env; + uint64_t shm_max_memory; + uint64_t shm_max_size; + pid_t main_pid; + char uid[UID_MAXLEN]; + odp_log_func_t log_fn; + odp_abort_func_t abort_fn; + system_info_t system_info; + hugepage_info_t hugepage_info; + odp_cpumask_t control_cpus; + odp_cpumask_t worker_cpus; + int num_cpus_installed; + config_t libconfig_default; + config_t libconfig_runtime; + int inotify_pcapng_fd; + int inotify_watch_fd; + pthread_t inotify_thread; + int inotify_pcapng_is_running; +}; + +extern struct odp_global_data_s odp_global_data; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/platform/linux-generic/include/odp_internal.h b/platform/linux-generic/include/odp_init_internal.h similarity index 57% rename from platform/linux-generic/include/odp_internal.h rename to platform/linux-generic/include/odp_init_internal.h index 9695e77e..86438938 100644 --- a/platform/linux-generic/include/odp_internal.h +++ b/platform/linux-generic/include/odp_init_internal.h @@ -4,68 +4,15 @@ * SPDX-License-Identifier: BSD-3-Clause */
-/** - * @file - * - * ODP HW system information - */ - -#ifndef ODP_INTERNAL_H_ -#define ODP_INTERNAL_H_ +#ifndef ODP_INIT_INTERNAL_H_ +#define ODP_INIT_INTERNAL_H_
#ifdef __cplusplus extern "C" { #endif
#include <odp/api/init.h> -#include <odp/api/cpumask.h> #include <odp/api/thread.h> -#include <odp_errno_define.h> -#include <stdio.h> -#include <sys/types.h> -#include <libconfig.h> -#include <pthread.h> - -#define MAX_CPU_NUMBER 128 -#define UID_MAXLEN 30 - -typedef struct { - uint64_t cpu_hz_max[MAX_CPU_NUMBER]; - uint64_t page_size; - int cache_line_size; - int cpu_count; - char cpu_arch_str[128]; - char model_str[MAX_CPU_NUMBER][128]; -} system_info_t; - -typedef struct { - uint64_t default_huge_page_size; - char *default_huge_page_dir; -} hugepage_info_t; - -struct odp_global_data_s { - char *shm_dir; /*< directory for odp mmaped files */ - int shm_dir_from_env; /*< overload default with env */ - uint64_t shm_max_memory; - uint64_t shm_max_size; - pid_t main_pid; - char uid[UID_MAXLEN]; - odp_log_func_t log_fn; - odp_abort_func_t abort_fn; - system_info_t system_info; - hugepage_info_t hugepage_info; - odp_cpumask_t control_cpus; - odp_cpumask_t worker_cpus; - int num_cpus_installed; - config_t libconfig_default; - config_t libconfig_runtime; - int inotify_pcapng_fd; - int inotify_watch_fd; - pthread_t inotify_thread; - int inotify_pcapng_is_running; -}; - -extern struct odp_global_data_s odp_global_data;
int odp_cpumask_init_global(const odp_init_t *params); int odp_cpumask_term_global(void); @@ -134,12 +81,6 @@ int _odp_ipsec_sad_term_global(void); int _odp_ipsec_events_init_global(void); int _odp_ipsec_events_term_global(void);
-int cpuinfo_parser(FILE *file, system_info_t *sysinfo); -uint64_t odp_cpufreq_id(const char *filename, int id); -uint64_t odp_cpu_hz_current(int id); -uint64_t odp_cpu_arch_hz_current(int id); -void sys_info_print_arch(void); - #ifdef __cplusplus } #endif diff --git a/platform/linux-generic/include/odp_packet_io_ipc_internal.h b/platform/linux-generic/include/odp_packet_io_ipc_internal.h index 2af9bb34..01410dab 100644 --- a/platform/linux-generic/include/odp_packet_io_ipc_internal.h +++ b/platform/linux-generic/include/odp_packet_io_ipc_internal.h @@ -8,7 +8,6 @@ #include <odp_packet_io_internal.h> #include <odp/api/packet.h> #include <odp_packet_internal.h> -#include <odp_internal.h> #include <odp/api/shared_memory.h>
#include <string.h> diff --git a/platform/linux-generic/include/odp_schedule_scalable_ordered.h b/platform/linux-generic/include/odp_schedule_scalable_ordered.h index 17d4f7ea..7e1984f6 100644 --- a/platform/linux-generic/include/odp_schedule_scalable_ordered.h +++ b/platform/linux-generic/include/odp_schedule_scalable_ordered.h @@ -11,7 +11,6 @@
#include <odp/api/shared_memory.h>
-#include <odp_internal.h> #include <odp_align_internal.h> #include <odp_bitset.h> #include <odp_ishmpool_internal.h> diff --git a/platform/linux-generic/include/odp_sysinfo_internal.h b/platform/linux-generic/include/odp_sysinfo_internal.h new file mode 100644 index 00000000..d34087e2 --- /dev/null +++ b/platform/linux-generic/include/odp_sysinfo_internal.h @@ -0,0 +1,26 @@ +/* Copyright (c) 2013-2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef ODP_SYSINFO_INTERNAL_H_ +#define ODP_SYSINFO_INTERNAL_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <odp_global_data.h> + +int cpuinfo_parser(FILE *file, system_info_t *sysinfo); +uint64_t odp_cpufreq_id(const char *filename, int id); +uint64_t odp_cpu_hz_current(int id); +uint64_t odp_cpu_arch_hz_current(int id); +void sys_info_print_arch(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/platform/linux-generic/include/odp_traffic_mngr_internal.h b/platform/linux-generic/include/odp_traffic_mngr_internal.h index e4a7dc29..aab6b911 100644 --- a/platform/linux-generic/include/odp_traffic_mngr_internal.h +++ b/platform/linux-generic/include/odp_traffic_mngr_internal.h @@ -26,7 +26,6 @@ extern "C" { #include <odp_timer_wheel_internal.h> #include <odp_pkt_queue_internal.h> #include <odp_sorted_list_internal.h> -#include <odp_internal.h> #include <odp_debug_internal.h> #include <odp_buffer_internal.h> #include <odp_queue_if.h> diff --git a/platform/linux-generic/odp_classification.c b/platform/linux-generic/odp_classification.c index 8b25cf4c..6e493bcd 100644 --- a/platform/linux-generic/odp_classification.c +++ b/platform/linux-generic/odp_classification.c @@ -10,7 +10,7 @@ #include <odp/api/align.h> #include <odp/api/queue.h> #include <odp/api/debug.h> -#include <odp_internal.h> +#include <odp_init_internal.h> #include <odp_debug_internal.h> #include <odp_packet_internal.h> #include <odp/api/packet_io.h> diff --git a/platform/linux-generic/odp_cpumask.c b/platform/linux-generic/odp_cpumask.c index 71f7d071..1b384d4e 100644 --- a/platform/linux-generic/odp_cpumask.c +++ b/platform/linux-generic/odp_cpumask.c @@ -14,6 +14,8 @@ #include <odp/api/cpumask.h> #include <odp/api/init.h> #include <odp_debug_internal.h> +#include <odp_global_data.h> +#include <odp_init_internal.h>
#include <stdlib.h> #include <string.h> diff --git a/platform/linux-generic/odp_crypto.c b/platform/linux-generic/odp_crypto.c index 967b0bfd..8473bf5a 100644 --- a/platform/linux-generic/odp_crypto.c +++ b/platform/linux-generic/odp_crypto.c @@ -8,7 +8,7 @@
#include <odp_posix_extensions.h> #include <odp/api/crypto.h> -#include <odp_internal.h> +#include <odp_init_internal.h> #include <odp/api/spinlock.h> #include <odp/api/sync.h> #include <odp/api/debug.h> diff --git a/platform/linux-generic/odp_errno.c b/platform/linux-generic/odp_errno.c index d3b76654..071ca606 100644 --- a/platform/linux-generic/odp_errno.c +++ b/platform/linux-generic/odp_errno.c @@ -7,7 +7,6 @@ #include "config.h"
#include <odp/api/errno.h> -#include <odp_internal.h> #include <string.h> #include <stdio.h> #include <odp_debug_internal.h> diff --git a/platform/linux-generic/odp_fdserver.c b/platform/linux-generic/odp_fdserver.c index 4b6fd088..0c9cc50e 100644 --- a/platform/linux-generic/odp_fdserver.c +++ b/platform/linux-generic/odp_fdserver.c @@ -39,7 +39,8 @@ */
#include <odp_posix_extensions.h> -#include <odp_internal.h> +#include <odp_global_data.h> +#include <odp_init_internal.h> #include <odp_debug_internal.h> #include <odp_fdserver_internal.h> #include <sys/prctl.h> diff --git a/platform/linux-generic/odp_init.c b/platform/linux-generic/odp_init.c index 60908f09..7de3d689 100644 --- a/platform/linux-generic/odp_init.c +++ b/platform/linux-generic/odp_init.c @@ -6,23 +6,16 @@
#include "config.h"
+#include <odp_posix_extensions.h> + #include <odp/api/init.h> #include <odp_debug_internal.h> -#include <odp/api/debug.h> -#include <unistd.h> -#include <odp_internal.h> +#include <odp_init_internal.h> #include <odp_schedule_if.h> #include <odp_libconfig_internal.h> #include <string.h> #include <stdio.h> -#include <linux/limits.h> -#include <dirent.h> #include <unistd.h> -#include <string.h> -#include <stdlib.h> -#include <errno.h> -#include <sys/types.h> -#include <pwd.h>
enum init_stage { NO_INIT = 0, /* No init stages completed */ diff --git a/platform/linux-generic/odp_ipsec.c b/platform/linux-generic/odp_ipsec.c index a72dee33..71258fe9 100644 --- a/platform/linux-generic/odp_ipsec.c +++ b/platform/linux-generic/odp_ipsec.c @@ -13,6 +13,7 @@ #include <odp/api/byteorder.h> #include <odp/api/plat/byteorder_inlines.h>
+#include <odp_init_internal.h> #include <odp_debug_internal.h> #include <odp_packet_internal.h> #include <odp_ipsec_internal.h> diff --git a/platform/linux-generic/odp_ipsec_events.c b/platform/linux-generic/odp_ipsec_events.c index 247e9f8b..e3977649 100644 --- a/platform/linux-generic/odp_ipsec_events.c +++ b/platform/linux-generic/odp_ipsec_events.c @@ -9,6 +9,7 @@ #include <odp/api/ipsec.h> #include <odp/api/shared_memory.h>
+#include <odp_init_internal.h> #include <odp_buffer_internal.h> #include <odp_debug_internal.h> #include <odp_ipsec_internal.h> diff --git a/platform/linux-generic/odp_ipsec_sad.c b/platform/linux-generic/odp_ipsec_sad.c index eea4ceb2..061b45f3 100644 --- a/platform/linux-generic/odp_ipsec_sad.c +++ b/platform/linux-generic/odp_ipsec_sad.c @@ -12,6 +12,7 @@ #include <odp/api/random.h> #include <odp/api/shared_memory.h>
+#include <odp_init_internal.h> #include <odp_debug_internal.h> #include <odp_ipsec_internal.h>
diff --git a/platform/linux-generic/odp_ishm.c b/platform/linux-generic/odp_ishm.c index cf4ec9cf..fc2f948c 100644 --- a/platform/linux-generic/odp_ishm.c +++ b/platform/linux-generic/odp_ishm.c @@ -49,11 +49,13 @@ */ #include <odp_posix_extensions.h> #include <odp_config_internal.h> -#include <odp_internal.h> +#include <odp_global_data.h> #include <odp/api/spinlock.h> #include <odp/api/align.h> #include <odp/api/system_info.h> #include <odp/api/debug.h> +#include <odp_init_internal.h> +#include <odp_errno_define.h> #include <odp_shm_internal.h> #include <odp_debug_internal.h> #include <odp_align_internal.h> diff --git a/platform/linux-generic/odp_ishmphy.c b/platform/linux-generic/odp_ishmphy.c index 6207ce75..cc547a1c 100644 --- a/platform/linux-generic/odp_ishmphy.c +++ b/platform/linux-generic/odp_ishmphy.c @@ -12,7 +12,6 @@ */ #include <odp_posix_extensions.h> #include <odp_config_internal.h> -#include <odp_internal.h> #include <odp/api/align.h> #include <odp/api/system_info.h> #include <odp/api/debug.h> diff --git a/platform/linux-generic/odp_ishmpool.c b/platform/linux-generic/odp_ishmpool.c index 04a0e535..46865371 100644 --- a/platform/linux-generic/odp_ishmpool.c +++ b/platform/linux-generic/odp_ishmpool.c @@ -44,7 +44,6 @@ #include "config.h"
#include <odp_posix_extensions.h> -#include <odp_internal.h> #include <odp/api/spinlock.h> #include <odp/api/align.h> #include <odp/api/debug.h> diff --git a/platform/linux-generic/odp_libconfig.c b/platform/linux-generic/odp_libconfig.c index 316ed067..e0e99550 100644 --- a/platform/linux-generic/odp_libconfig.c +++ b/platform/linux-generic/odp_libconfig.c @@ -11,13 +11,11 @@ #include <libconfig.h>
#include <odp/api/version.h> -#include <odp_internal.h> +#include <odp_global_data.h> #include <odp_debug_internal.h> #include <odp_libconfig_internal.h> #include <odp_libconfig_config.h>
-extern struct odp_global_data_s odp_global_data; - int _odp_libconfig_init_global(void) { const char *filename; diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c index e3204f88..11f8bd43 100644 --- a/platform/linux-generic/odp_packet.c +++ b/platform/linux-generic/odp_packet.c @@ -10,6 +10,7 @@ #include <odp/api/plat/packet_inlines.h> #include <odp_packet_internal.h> #include <odp_debug_internal.h> +#include <odp_errno_define.h> #include <odp/api/hints.h> #include <odp/api/byteorder.h> #include <odp/api/plat/byteorder_inlines.h> diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c index 8a5da105..81262a17 100644 --- a/platform/linux-generic/odp_packet_io.c +++ b/platform/linux-generic/odp_packet_io.c @@ -14,7 +14,8 @@ #include <odp/api/packet.h> #include <odp/api/plat/packet_inlines.h> #include <odp_packet_internal.h> -#include <odp_internal.h> +#include <odp_init_internal.h> +#include <odp_errno_define.h> #include <odp/api/spinlock.h> #include <odp/api/ticketlock.h> #include <odp/api/shared_memory.h> diff --git a/platform/linux-generic/odp_pool.c b/platform/linux-generic/odp_pool.c index 32c41427..01ee9234 100644 --- a/platform/linux-generic/odp_pool.c +++ b/platform/linux-generic/odp_pool.c @@ -14,7 +14,7 @@ #include <odp/api/plat/thread_inlines.h>
#include <odp_pool_internal.h> -#include <odp_internal.h> +#include <odp_init_internal.h> #include <odp_packet_internal.h> #include <odp_config_internal.h> #include <odp_debug_internal.h> diff --git a/platform/linux-generic/odp_queue_basic.c b/platform/linux-generic/odp_queue_basic.c index 4b4434c2..572441d0 100644 --- a/platform/linux-generic/odp_queue_basic.c +++ b/platform/linux-generic/odp_queue_basic.c @@ -14,7 +14,7 @@ #include <odp/api/buffer.h> #include <odp_buffer_internal.h> #include <odp_pool_internal.h> -#include <odp_internal.h> +#include <odp_init_internal.h> #include <odp/api/shared_memory.h> #include <odp/api/schedule.h> #include <odp_schedule_if.h> diff --git a/platform/linux-generic/odp_queue_if.c b/platform/linux-generic/odp_queue_if.c index 08076ab3..912251b7 100644 --- a/platform/linux-generic/odp_queue_if.c +++ b/platform/linux-generic/odp_queue_if.c @@ -7,7 +7,7 @@ #include "config.h"
#include <odp_queue_if.h> -#include <odp_internal.h> +#include <odp_init_internal.h> #include <odp_debug_internal.h>
#include <stdlib.h> diff --git a/platform/linux-generic/odp_queue_scalable.c b/platform/linux-generic/odp_queue_scalable.c index 56ea98bc..578e6d22 100644 --- a/platform/linux-generic/odp_queue_scalable.c +++ b/platform/linux-generic/odp_queue_scalable.c @@ -17,7 +17,6 @@ #include <odp/api/plat/sync_inlines.h> #include <odp/api/traffic_mngr.h>
-#include <odp_internal.h> #include <odp_config_internal.h> #include <odp_debug_internal.h>
diff --git a/platform/linux-generic/odp_random.c b/platform/linux-generic/odp_random.c index 22894c47..424243c2 100644 --- a/platform/linux-generic/odp_random.c +++ b/platform/linux-generic/odp_random.c @@ -7,7 +7,7 @@ #include "config.h"
#include <odp_posix_extensions.h> -#include <odp_internal.h> +#include <stdint.h> #include <odp/api/random.h>
#include <openssl/rand.h> diff --git a/platform/linux-generic/odp_schedule_basic.c b/platform/linux-generic/odp_schedule_basic.c index f35c7b02..ca291d15 100644 --- a/platform/linux-generic/odp_schedule_basic.c +++ b/platform/linux-generic/odp_schedule_basic.c @@ -11,7 +11,6 @@ #include <odp_schedule_if.h> #include <odp/api/align.h> #include <odp/api/shared_memory.h> -#include <odp_internal.h> #include <odp_debug_internal.h> #include <odp/api/thread.h> #include <odp/api/plat/thread_inlines.h> diff --git a/platform/linux-generic/odp_schedule_if.c b/platform/linux-generic/odp_schedule_if.c index 08520852..df1ee2c2 100644 --- a/platform/linux-generic/odp_schedule_if.c +++ b/platform/linux-generic/odp_schedule_if.c @@ -7,7 +7,7 @@ #include "config.h"
#include <odp_schedule_if.h> -#include <odp_internal.h> +#include <odp_init_internal.h> #include <odp_debug_internal.h>
#include <stdlib.h> diff --git a/platform/linux-generic/odp_schedule_iquery.c b/platform/linux-generic/odp_schedule_iquery.c index a019157e..b8d7e3b5 100644 --- a/platform/linux-generic/odp_schedule_iquery.c +++ b/platform/linux-generic/odp_schedule_iquery.c @@ -11,7 +11,6 @@ #include <odp/api/align.h> #include <odp/api/queue.h> #include <odp/api/shared_memory.h> -#include <odp_internal.h> #include <odp_debug_internal.h> #include <odp_ring_internal.h> #include <odp_buffer_internal.h> diff --git a/platform/linux-generic/odp_schedule_scalable.c b/platform/linux-generic/odp_schedule_scalable.c index 1dbcb529..9a0dea47 100644 --- a/platform/linux-generic/odp_schedule_scalable.c +++ b/platform/linux-generic/odp_schedule_scalable.c @@ -19,7 +19,6 @@ #include <odp/api/thrmask.h> #include <odp/api/time.h>
-#include <odp_internal.h> #include <odp_config_internal.h> #include <odp_debug_internal.h> #include <odp_ishm_internal.h> diff --git a/platform/linux-generic/odp_shared_memory.c b/platform/linux-generic/odp_shared_memory.c index edf261af..7bd323c9 100644 --- a/platform/linux-generic/odp_shared_memory.c +++ b/platform/linux-generic/odp_shared_memory.c @@ -12,7 +12,8 @@ #include <odp/api/shared_memory.h> #include <odp/api/plat/strong_types.h> #include <odp_ishm_internal.h> -#include <odp_internal.h> +#include <odp_init_internal.h> +#include <odp_global_data.h> #include <string.h>
ODP_STATIC_ASSERT(ODP_CONFIG_SHM_BLOCKS >= ODP_CONFIG_POOLS, diff --git a/platform/linux-generic/odp_system_info.c b/platform/linux-generic/odp_system_info.c index d1cda1ea..8b2bfc5c 100644 --- a/platform/linux-generic/odp_system_info.c +++ b/platform/linux-generic/odp_system_info.c @@ -17,7 +17,9 @@
#include <odp/api/system_info.h> #include <odp/api/version.h> -#include <odp_internal.h> +#include <odp_global_data.h> +#include <odp_sysinfo_internal.h> +#include <odp_init_internal.h> #include <odp_debug_internal.h> #include <odp/api/align.h> #include <odp/api/cpu.h> diff --git a/platform/linux-generic/odp_thread.c b/platform/linux-generic/odp_thread.c index 998bad7c..a5f62ec7 100644 --- a/platform/linux-generic/odp_thread.c +++ b/platform/linux-generic/odp_thread.c @@ -11,8 +11,8 @@ #include <sched.h> #include <odp/api/thread.h> #include <odp/api/thrmask.h> -#include <odp_internal.h> #include <odp/api/spinlock.h> +#include <odp_init_internal.h> #include <odp_config_internal.h> #include <odp_debug_internal.h> #include <odp/api/shared_memory.h> diff --git a/platform/linux-generic/odp_time.c b/platform/linux-generic/odp_time.c index cfb4ac4a..96308edc 100644 --- a/platform/linux-generic/odp_time.c +++ b/platform/linux-generic/odp_time.c @@ -12,6 +12,7 @@ #include <odp/api/time.h> #include <odp/api/hints.h> #include <odp_debug_internal.h> +#include <odp_init_internal.h> #include <odp_arch_time_internal.h> #include <string.h> #include <inttypes.h> diff --git a/platform/linux-generic/odp_timer.c b/platform/linux-generic/odp_timer.c index 9085f1bb..f46aa6e8 100644 --- a/platform/linux-generic/odp_timer.c +++ b/platform/linux-generic/odp_timer.c @@ -45,7 +45,8 @@ #include <odp_debug_internal.h> #include <odp/api/event.h> #include <odp/api/hints.h> -#include <odp_internal.h> +#include <odp_init_internal.h> +#include <odp_errno_define.h> #include <odp/api/queue.h> #include <odp/api/shared_memory.h> #include <odp/api/spinlock.h> diff --git a/platform/linux-generic/odp_traffic_mngr.c b/platform/linux-generic/odp_traffic_mngr.c index f851a7b0..eeb1ea96 100644 --- a/platform/linux-generic/odp_traffic_mngr.c +++ b/platform/linux-generic/odp_traffic_mngr.c @@ -29,6 +29,8 @@ #include <odp/api/plat/packet_inlines.h> #include <odp/api/plat/byteorder_inlines.h> #include <odp_macros_internal.h> +#include <odp_init_internal.h> +#include <odp_errno_define.h>
/* Local vars */ static const diff --git a/platform/linux-generic/odp_weak.c b/platform/linux-generic/odp_weak.c index 6977ef10..6632707f 100644 --- a/platform/linux-generic/odp_weak.c +++ b/platform/linux-generic/odp_weak.c @@ -6,7 +6,6 @@
#include "config.h"
-#include <odp_internal.h> #include <odp/api/debug.h> #include <odp_debug_internal.h> #include <odp/api/hints.h> diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c index 1ecd7d58..803c514f 100644 --- a/platform/linux-generic/pktio/dpdk.c +++ b/platform/linux-generic/pktio/dpdk.c @@ -25,6 +25,7 @@ #include <odp_packet_dpdk.h> #include <odp_debug_internal.h> #include <odp_libconfig_internal.h> +#include <odp_errno_define.h>
#include <protocols/eth.h> #include <protocols/udp.h> diff --git a/platform/linux-generic/pktio/ethtool.c b/platform/linux-generic/pktio/ethtool.c index 71651abf..784e8c3c 100644 --- a/platform/linux-generic/pktio/ethtool.c +++ b/platform/linux-generic/pktio/ethtool.c @@ -19,6 +19,7 @@ #include <odp_api.h> #include <odp_packet_socket.h> #include <odp_debug_internal.h> +#include <odp_errno_define.h>
static struct ethtool_gstrings *get_stringset(int fd, struct ifreq *ifr) { diff --git a/platform/linux-generic/pktio/loop.c b/platform/linux-generic/pktio/loop.c index 5e30447f..18fecf88 100644 --- a/platform/linux-generic/pktio/loop.c +++ b/platform/linux-generic/pktio/loop.c @@ -13,6 +13,7 @@ #include <odp_classification_internal.h> #include <odp_ipsec_internal.h> #include <odp_debug_internal.h> +#include <odp_errno_define.h> #include <odp/api/plat/packet_flag_inlines.h> #include <odp/api/hints.h> #include <odp/api/plat/byteorder_inlines.h> diff --git a/platform/linux-generic/pktio/netmap.c b/platform/linux-generic/pktio/netmap.c index 45f717d5..6cabf0ea 100644 --- a/platform/linux-generic/pktio/netmap.c +++ b/platform/linux-generic/pktio/netmap.c @@ -17,6 +17,7 @@ #include <odp_packet_netmap.h> #include <odp_packet_socket.h> #include <odp_debug_internal.h> +#include <odp_errno_define.h> #include <protocols/eth.h>
#include <sys/ioctl.h> diff --git a/platform/linux-generic/pktio/ring.c b/platform/linux-generic/pktio/ring.c index db6eb226..778c2fac 100644 --- a/platform/linux-generic/pktio/ring.c +++ b/platform/linux-generic/pktio/ring.c @@ -78,7 +78,7 @@ #include <stdbool.h> #include <inttypes.h> #include <odp_packet_io_ring_internal.h> -#include <odp_internal.h> +#include <odp_errno_define.h>
static TAILQ_HEAD(, _ring) odp_ring_list;
diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux-generic/pktio/socket.c index d7753850..5be240ec 100644 --- a/platform/linux-generic/pktio/socket.c +++ b/platform/linux-generic/pktio/socket.c @@ -40,6 +40,7 @@ #include <odp_packet_io_internal.h> #include <odp_align_internal.h> #include <odp_debug_internal.h> +#include <odp_errno_define.h> #include <odp_classification_datamodel.h> #include <odp_classification_inlines.h> #include <odp_classification_internal.h> diff --git a/platform/linux-generic/pktio/socket_mmap.c b/platform/linux-generic/pktio/socket_mmap.c index 55fb20f4..eff22a7b 100644 --- a/platform/linux-generic/pktio/socket_mmap.c +++ b/platform/linux-generic/pktio/socket_mmap.c @@ -31,6 +31,7 @@ #include <odp_packet_internal.h> #include <odp_packet_io_internal.h> #include <odp_debug_internal.h> +#include <odp_errno_define.h> #include <odp_classification_datamodel.h> #include <odp_classification_inlines.h> #include <odp_classification_internal.h> diff --git a/platform/linux-generic/pktio/sysfs.c b/platform/linux-generic/pktio/sysfs.c index ec2bb949..c85a88e5 100644 --- a/platform/linux-generic/pktio/sysfs.c +++ b/platform/linux-generic/pktio/sysfs.c @@ -8,6 +8,7 @@
#include <odp_api.h> #include <odp_packet_io_internal.h> +#include <odp_errno_define.h> #include <errno.h> #include <string.h> #include <inttypes.h> diff --git a/platform/linux-generic/pktio/tap.c b/platform/linux-generic/pktio/tap.c index 032a8ecf..a3587f10 100644 --- a/platform/linux-generic/pktio/tap.c +++ b/platform/linux-generic/pktio/tap.c @@ -47,6 +47,7 @@ #include <odp_packet_internal.h> #include <odp_packet_io_internal.h> #include <odp_classification_internal.h> +#include <odp_errno_define.h>
#define BUF_SIZE 65536
diff --git a/platform/linux-generic/test/ring/ring_basic.c b/platform/linux-generic/test/ring/ring_basic.c index 553e82b5..87fb18c3 100644 --- a/platform/linux-generic/test/ring/ring_basic.c +++ b/platform/linux-generic/test/ring/ring_basic.c @@ -19,6 +19,7 @@ #include <test_debug.h> #include <odp_cunit_common.h> #include <odp_packet_io_ring_internal.h> +#include <odp_errno_define.h>
#include "ring_suites.h"
commit 170e93051d25ac491811f1ed66cd5552a0b26ec8 Author: Petri Savolainen petri.savolainen@linaro.org Date: Thu May 24 10:13:42 2018 +0300
linux-gen: init: remove init.c internal types from header
Moved types from header into c file. Changed internal functions to static and changed order of functions (prototypes not needed).
Signed-off-by: Petri Savolainen petri.savolainen@linaro.org Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/platform/linux-generic/include/odp_internal.h b/platform/linux-generic/include/odp_internal.h index f39b6152..9695e77e 100644 --- a/platform/linux-generic/include/odp_internal.h +++ b/platform/linux-generic/include/odp_internal.h @@ -65,35 +65,8 @@ struct odp_global_data_s { int inotify_pcapng_is_running; };
-enum init_stage { - NO_INIT = 0, /* No init stages completed */ - LIBCONFIG_INIT, - CPUMASK_INIT, - TIME_INIT, - SYSINFO_INIT, - ISHM_INIT, - FDSERVER_INIT, - THREAD_INIT, - POOL_INIT, - QUEUE_INIT, - SCHED_INIT, - PKTIO_INIT, - TIMER_INIT, - CRYPTO_INIT, - CLASSIFICATION_INIT, - TRAFFIC_MNGR_INIT, - NAME_TABLE_INIT, - IPSEC_EVENTS_INIT, - IPSEC_SAD_INIT, - IPSEC_INIT, - ALL_INIT /* All init stages completed */ -}; - extern struct odp_global_data_s odp_global_data;
-int _odp_term_global(enum init_stage stage); -int _odp_term_local(enum init_stage stage); - int odp_cpumask_init_global(const odp_init_t *params); int odp_cpumask_term_global(void);
diff --git a/platform/linux-generic/odp_init.c b/platform/linux-generic/odp_init.c index 0cd66ca3..60908f09 100644 --- a/platform/linux-generic/odp_init.c +++ b/platform/linux-generic/odp_init.c @@ -24,6 +24,30 @@ #include <sys/types.h> #include <pwd.h>
+enum init_stage { + NO_INIT = 0, /* No init stages completed */ + LIBCONFIG_INIT, + CPUMASK_INIT, + TIME_INIT, + SYSINFO_INIT, + ISHM_INIT, + FDSERVER_INIT, + THREAD_INIT, + POOL_INIT, + QUEUE_INIT, + SCHED_INIT, + PKTIO_INIT, + TIMER_INIT, + CRYPTO_INIT, + CLASSIFICATION_INIT, + TRAFFIC_MNGR_INIT, + NAME_TABLE_INIT, + IPSEC_EVENTS_INIT, + IPSEC_SAD_INIT, + IPSEC_INIT, + ALL_INIT /* All init stages completed */ +}; + struct odp_global_data_s odp_global_data;
void odp_init_param_init(odp_init_t *param) @@ -31,6 +55,152 @@ void odp_init_param_init(odp_init_t *param) memset(param, 0, sizeof(odp_init_t)); }
+static int term_global(enum init_stage stage) +{ + int rc = 0; + + switch (stage) { + case ALL_INIT: + case IPSEC_INIT: + if (_odp_ipsec_term_global()) { + ODP_ERR("ODP IPsec term failed.\n"); + rc = -1; + } + /* Fall through */ + + case IPSEC_SAD_INIT: + if (_odp_ipsec_sad_term_global()) { + ODP_ERR("ODP IPsec SAD term failed.\n"); + rc = -1; + } + /* Fall through */ + + case IPSEC_EVENTS_INIT: + if (_odp_ipsec_events_term_global()) { + ODP_ERR("ODP IPsec events term failed.\n"); + rc = -1; + } + /* Fall through */ + + case NAME_TABLE_INIT: + if (_odp_int_name_tbl_term_global()) { + ODP_ERR("Name table term failed.\n"); + rc = -1; + } + /* Fall through */ + + case TRAFFIC_MNGR_INIT: + if (odp_tm_term_global()) { + ODP_ERR("TM term failed.\n"); + rc = -1; + } + /* Fall through */ + + case CLASSIFICATION_INIT: + if (odp_classification_term_global()) { + ODP_ERR("ODP classification term failed.\n"); + rc = -1; + } + /* Fall through */ + + case CRYPTO_INIT: + if (odp_crypto_term_global()) { + ODP_ERR("ODP crypto term failed.\n"); + rc = -1; + } + /* Fall through */ + + case TIMER_INIT: + if (odp_timer_term_global()) { + ODP_ERR("ODP timer term failed.\n"); + rc = -1; + } + /* Fall through */ + + case PKTIO_INIT: + if (odp_pktio_term_global()) { + ODP_ERR("ODP pktio term failed.\n"); + rc = -1; + } + /* Fall through */ + + case SCHED_INIT: + if (_odp_schedule_term_global()) { + ODP_ERR("ODP schedule term failed.\n"); + rc = -1; + } + /* Fall through */ + + case QUEUE_INIT: + if (_odp_queue_term_global()) { + ODP_ERR("ODP queue term failed.\n"); + rc = -1; + } + /* Fall through */ + + case POOL_INIT: + if (odp_pool_term_global()) { + ODP_ERR("ODP buffer pool term failed.\n"); + rc = -1; + } + /* Fall through */ + + case THREAD_INIT: + if (odp_thread_term_global()) { + ODP_ERR("ODP thread term failed.\n"); + rc = -1; + } + /* Fall through */ + + case FDSERVER_INIT: + if (_odp_fdserver_term_global()) { + ODP_ERR("ODP fdserver term failed.\n"); + rc = -1; + } + /* Fall through */ + + case ISHM_INIT: + if (_odp_ishm_term_global()) { + ODP_ERR("ODP ishm term failed.\n"); + rc = -1; + } + /* Fall through */ + + case SYSINFO_INIT: + if (odp_system_info_term()) { + ODP_ERR("ODP system info term failed.\n"); + rc = -1; + } + /* Fall through */ + + case TIME_INIT: + if (odp_time_term_global()) { + ODP_ERR("ODP time term failed.\n"); + rc = -1; + } + /* Fall through */ + + case CPUMASK_INIT: + if (odp_cpumask_term_global()) { + ODP_ERR("ODP cpumask term failed.\n"); + rc = -1; + } + /* Fall through */ + + case LIBCONFIG_INIT: + if (_odp_libconfig_term_global()) { + ODP_ERR("ODP runtime config term failed.\n"); + rc = -1; + } + /* Fall through */ + + case NO_INIT: + ; + } + + return rc; +} + int odp_init_global(odp_instance_t *instance, const odp_init_t *params, const odp_platform_init_t *platform_params ODP_UNUSED) @@ -168,7 +338,7 @@ int odp_init_global(odp_instance_t *instance, return 0;
init_failed: - _odp_term_global(stage); + term_global(stage); return -1; }
@@ -178,150 +348,65 @@ int odp_term_global(odp_instance_t instance) ODP_ERR("Bad instance.\n"); return -1; } - return _odp_term_global(ALL_INIT); + return term_global(ALL_INIT); }
-int _odp_term_global(enum init_stage stage) +static int term_local(enum init_stage stage) { int rc = 0; + int rc_thd = 0;
switch (stage) { case ALL_INIT: - case IPSEC_INIT: - if (_odp_ipsec_term_global()) { - ODP_ERR("ODP IPsec term failed.\n"); - rc = -1; - } - /* Fall through */ - - case IPSEC_SAD_INIT: - if (_odp_ipsec_sad_term_global()) { - ODP_ERR("ODP IPsec SAD term failed.\n"); - rc = -1; - } - /* Fall through */ - - case IPSEC_EVENTS_INIT: - if (_odp_ipsec_events_term_global()) { - ODP_ERR("ODP IPsec events term failed.\n"); - rc = -1; - } - /* Fall through */
- case NAME_TABLE_INIT: - if (_odp_int_name_tbl_term_global()) { - ODP_ERR("Name table term failed.\n"); - rc = -1; - } - /* Fall through */ - - case TRAFFIC_MNGR_INIT: - if (odp_tm_term_global()) { - ODP_ERR("TM term failed.\n"); + case SCHED_INIT: + if (sched_fn->term_local()) { + ODP_ERR("ODP schedule local term failed.\n"); rc = -1; } /* Fall through */
- case CLASSIFICATION_INIT: - if (odp_classification_term_global()) { - ODP_ERR("ODP classification term failed.\n"); + case QUEUE_INIT: + if (queue_fn->term_local()) { + ODP_ERR("ODP queue local term failed.\n"); rc = -1; } /* Fall through */
case CRYPTO_INIT: - if (odp_crypto_term_global()) { - ODP_ERR("ODP crypto term failed.\n"); - rc = -1; - } - /* Fall through */ - - case TIMER_INIT: - if (odp_timer_term_global()) { - ODP_ERR("ODP timer term failed.\n"); - rc = -1; - } - /* Fall through */ - - case PKTIO_INIT: - if (odp_pktio_term_global()) { - ODP_ERR("ODP pktio term failed.\n"); - rc = -1; - } - /* Fall through */ - - case SCHED_INIT: - if (_odp_schedule_term_global()) { - ODP_ERR("ODP schedule term failed.\n"); - rc = -1; - } - /* Fall through */ - - case QUEUE_INIT: - if (_odp_queue_term_global()) { - ODP_ERR("ODP queue term failed.\n"); + if (_odp_crypto_term_local()) { + ODP_ERR("ODP crypto local term failed.\n"); rc = -1; } /* Fall through */
case POOL_INIT: - if (odp_pool_term_global()) { - ODP_ERR("ODP buffer pool term failed.\n"); + if (odp_pool_term_local()) { + ODP_ERR("ODP buffer pool local term failed.\n"); rc = -1; } /* Fall through */
case THREAD_INIT: - if (odp_thread_term_global()) { - ODP_ERR("ODP thread term failed.\n"); - rc = -1; - } - /* Fall through */ - - case FDSERVER_INIT: - if (_odp_fdserver_term_global()) { - ODP_ERR("ODP fdserver term failed.\n"); + rc_thd = odp_thread_term_local(); + if (rc_thd < 0) { + ODP_ERR("ODP thread local term failed.\n"); rc = -1; + } else { + if (!rc) + rc = rc_thd; } /* Fall through */
case ISHM_INIT: - if (_odp_ishm_term_global()) { - ODP_ERR("ODP ishm term failed.\n"); - rc = -1; - } - /* Fall through */ - - case SYSINFO_INIT: - if (odp_system_info_term()) { - ODP_ERR("ODP system info term failed.\n"); - rc = -1; - } - /* Fall through */ - - case TIME_INIT: - if (odp_time_term_global()) { - ODP_ERR("ODP time term failed.\n"); - rc = -1; - } - /* Fall through */ - - case CPUMASK_INIT: - if (odp_cpumask_term_global()) { - ODP_ERR("ODP cpumask term failed.\n"); - rc = -1; - } - /* Fall through */ - - case LIBCONFIG_INIT: - if (_odp_libconfig_term_global()) { - ODP_ERR("ODP runtime config term failed.\n"); + if (_odp_ishm_term_local()) { + ODP_ERR("ODP ishm local term failed.\n"); rc = -1; } /* Fall through */
- case NO_INIT: - ; + default: + break; }
return rc; @@ -381,72 +466,11 @@ int odp_init_local(odp_instance_t instance, odp_thread_type_t thr_type) return 0;
init_fail: - _odp_term_local(stage); + term_local(stage); return -1; }
int odp_term_local(void) { - return _odp_term_local(ALL_INIT); -} - -int _odp_term_local(enum init_stage stage) -{ - int rc = 0; - int rc_thd = 0; - - switch (stage) { - case ALL_INIT: - - case SCHED_INIT: - if (sched_fn->term_local()) { - ODP_ERR("ODP schedule local term failed.\n"); - rc = -1; - } - /* Fall through */ - - case QUEUE_INIT: - if (queue_fn->term_local()) { - ODP_ERR("ODP queue local term failed.\n"); - rc = -1; - } - /* Fall through */ - - case CRYPTO_INIT: - if (_odp_crypto_term_local()) { - ODP_ERR("ODP crypto local term failed.\n"); - rc = -1; - } - /* Fall through */ - - case POOL_INIT: - if (odp_pool_term_local()) { - ODP_ERR("ODP buffer pool local term failed.\n"); - rc = -1; - } - /* Fall through */ - - case THREAD_INIT: - rc_thd = odp_thread_term_local(); - if (rc_thd < 0) { - ODP_ERR("ODP thread local term failed.\n"); - rc = -1; - } else { - if (!rc) - rc = rc_thd; - } - /* Fall through */ - - case ISHM_INIT: - if (_odp_ishm_term_local()) { - ODP_ERR("ODP ishm local term failed.\n"); - rc = -1; - } - /* Fall through */ - - default: - break; - } - - return rc; + return term_local(ALL_INIT); }
-----------------------------------------------------------------------
Summary of changes: Makefile.inc | 1 + include/odp/api/spec/cpu.h | 3 +- include/odp/arch/x86_32-linux/odp/api/abi/cpu.h | 9 - include/odp/arch/x86_64-linux/odp/api/abi/cpu.h | 5 - platform/linux-generic/Makefile.am | 25 +- .../arch/default/odp/api/abi/cpu_inlines.h | 15 + .../linux-generic/arch/default/odp_cpu_cycles.c | 6 + .../linux-generic/arch/default/odp_sysinfo_parse.c | 2 +- .../linux-generic/arch/mips64/odp_cpu_cycles.c | 6 + .../linux-generic/arch/mips64/odp_sysinfo_parse.c | 2 +- .../linux-generic/arch/powerpc/odp_sysinfo_parse.c | 2 +- platform/linux-generic/arch/x86/cpu_flags.c | 8 + platform/linux-generic/arch/x86/cpu_flags.h | 1 + platform/linux-generic/arch/x86/odp/api/abi/cpu.h | 10 +- .../arch/x86/odp/api/abi/cpu_inlines.h | 48 +++ platform/linux-generic/arch/x86/odp_cpu_cycles.c | 31 +- platform/linux-generic/arch/x86/odp_global_time.c | 3 + .../linux-generic/arch/x86/odp_sysinfo_parse.c | 2 +- .../include/odp/api/plat/cpu_inlines.h | 38 ++ .../include/odp/api/plat/ticketlock_inlines.h | 2 + .../linux-generic/include/odp_debug_internal.h | 2 +- platform/linux-generic/include/odp_global_data.h | 68 ++++ .../{odp_internal.h => odp_init_internal.h} | 90 +---- .../include/odp_packet_io_ipc_internal.h | 1 - platform/linux-generic/include/odp_ring_internal.h | 2 + .../include/odp_schedule_scalable_ordered.h | 1 - .../linux-generic/include/odp_sysinfo_internal.h | 26 ++ .../include/odp_traffic_mngr_internal.h | 1 - platform/linux-generic/odp_barrier.c | 1 + platform/linux-generic/odp_classification.c | 2 +- platform/linux-generic/odp_cpu.c | 18 - .../{odp_event_api.c => odp_cpu_api.c} | 4 +- platform/linux-generic/odp_cpumask.c | 2 + platform/linux-generic/odp_crypto.c | 2 +- platform/linux-generic/odp_errno.c | 1 - platform/linux-generic/odp_fdserver.c | 3 +- platform/linux-generic/odp_init.c | 390 +++++++++++---------- platform/linux-generic/odp_ipsec.c | 1 + platform/linux-generic/odp_ipsec_events.c | 1 + platform/linux-generic/odp_ipsec_sad.c | 5 +- platform/linux-generic/odp_ishm.c | 4 +- platform/linux-generic/odp_ishmphy.c | 1 - platform/linux-generic/odp_ishmpool.c | 1 - platform/linux-generic/odp_libconfig.c | 4 +- platform/linux-generic/odp_packet.c | 1 + platform/linux-generic/odp_packet_io.c | 3 +- platform/linux-generic/odp_pool.c | 2 +- platform/linux-generic/odp_queue_basic.c | 2 +- platform/linux-generic/odp_queue_if.c | 2 +- platform/linux-generic/odp_queue_scalable.c | 1 - platform/linux-generic/odp_random.c | 2 +- platform/linux-generic/odp_rwlock.c | 4 +- platform/linux-generic/odp_schedule_basic.c | 1 - platform/linux-generic/odp_schedule_if.c | 2 +- platform/linux-generic/odp_schedule_iquery.c | 1 - platform/linux-generic/odp_schedule_scalable.c | 2 +- .../linux-generic/odp_schedule_scalable_ordered.c | 2 + platform/linux-generic/odp_shared_memory.c | 3 +- platform/linux-generic/odp_spinlock.c | 2 + platform/linux-generic/odp_system_info.c | 4 +- platform/linux-generic/odp_thread.c | 2 +- platform/linux-generic/odp_time.c | 1 + platform/linux-generic/odp_timer.c | 3 +- platform/linux-generic/odp_traffic_mngr.c | 2 + platform/linux-generic/odp_weak.c | 1 - platform/linux-generic/pktio/dpdk.c | 1 + platform/linux-generic/pktio/ethtool.c | 1 + platform/linux-generic/pktio/loop.c | 1 + platform/linux-generic/pktio/netmap.c | 1 + platform/linux-generic/pktio/ring.c | 4 +- platform/linux-generic/pktio/socket.c | 1 + platform/linux-generic/pktio/socket_mmap.c | 1 + platform/linux-generic/pktio/sysfs.c | 1 + platform/linux-generic/pktio/tap.c | 1 + platform/linux-generic/test/ring/ring_basic.c | 1 + 75 files changed, 527 insertions(+), 379 deletions(-) create mode 100644 platform/linux-generic/arch/default/odp/api/abi/cpu_inlines.h create mode 100644 platform/linux-generic/arch/x86/odp/api/abi/cpu_inlines.h create mode 100644 platform/linux-generic/include/odp/api/plat/cpu_inlines.h create mode 100644 platform/linux-generic/include/odp_global_data.h rename platform/linux-generic/include/{odp_internal.h => odp_init_internal.h} (50%) create mode 100644 platform/linux-generic/include/odp_sysinfo_internal.h delete mode 100644 platform/linux-generic/odp_cpu.c copy platform/linux-generic/{odp_event_api.c => odp_cpu_api.c} (75%)
hooks/post-receive