aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic
diff options
context:
space:
mode:
authorPetri Savolainen <petri.savolainen@nokia.com>2016-09-30 02:46:08 +0300
committerMaxim Uvarov <maxim.uvarov@linaro.org>2016-10-13 18:36:42 +0300
commitf83b71e6a9c685227615455df1f9e4fefeff19ae (patch)
tree4d9cbecdb18c3c28c6c258ee9b4a30eb37de38da /platform/linux-generic
parenta8e5a8f6853ddc998430d112c22994928ddb4070 (diff)
linux-gen: build: de-couple abi compatibility from shared lib
Building ABI compatible or shared library are two different targets. A shared library may be used also without ABI compatibility. A new --enable-abi-compat configuration option is introduced. By default libraries are not built in ABI compat mode to enable function inlining. There is a noticeable performance difference when e.g. odp_atomic_xxx calls are not inlined. Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com> Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Diffstat (limited to 'platform/linux-generic')
-rw-r--r--platform/linux-generic/.gitignore2
-rw-r--r--platform/linux-generic/Makefile.am2
-rw-r--r--platform/linux-generic/include/odp/api/atomic.h4
-rw-r--r--platform/linux-generic/include/odp/api/byteorder.h4
-rw-r--r--platform/linux-generic/include/odp/api/plat/static_inline.h.in (renamed from platform/linux-generic/include/odp/api/plat/inlines.h.in)19
-rw-r--r--platform/linux-generic/include/odp/api/std_clib.h4
-rw-r--r--platform/linux-generic/include/odp/api/sync.h4
-rw-r--r--platform/linux-generic/m4/configure.m42
-rw-r--r--platform/linux-generic/odp_atomic.c2
-rw-r--r--platform/linux-generic/odp_byteorder.c2
-rw-r--r--platform/linux-generic/odp_std_clib.c2
-rw-r--r--platform/linux-generic/odp_sync.c2
12 files changed, 24 insertions, 25 deletions
diff --git a/platform/linux-generic/.gitignore b/platform/linux-generic/.gitignore
index ec6ca37ed..909756a1f 100644
--- a/platform/linux-generic/.gitignore
+++ b/platform/linux-generic/.gitignore
@@ -1 +1 @@
-include/odp/api/plat/inlines.h
+include/odp/api/plat/static_inline.h
diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am
index 900ac0861..0ec13d402 100644
--- a/platform/linux-generic/Makefile.am
+++ b/platform/linux-generic/Makefile.am
@@ -61,7 +61,7 @@ odpapiinclude_HEADERS = \
odpapiplatincludedir= $(includedir)/odp/api/plat
odpapiplatinclude_HEADERS = \
- $(builddir)/include/odp/api/plat/inlines.h \
+ $(builddir)/include/odp/api/plat/static_inline.h \
$(srcdir)/include/odp/api/plat/atomic_inlines.h \
$(srcdir)/include/odp/api/plat/atomic_types.h \
$(srcdir)/include/odp/api/plat/barrier_types.h \
diff --git a/platform/linux-generic/include/odp/api/atomic.h b/platform/linux-generic/include/odp/api/atomic.h
index c18e68bf4..7886cb4ea 100644
--- a/platform/linux-generic/include/odp/api/atomic.h
+++ b/platform/linux-generic/include/odp/api/atomic.h
@@ -24,8 +24,8 @@ extern "C" {
* @{
*/
-#include <odp/api/plat/inlines.h>
-#ifdef _ODP_INLINES
+#include <odp/api/plat/static_inline.h>
+#if ODP_ABI_COMPAT == 0
#include <odp/api/plat/atomic_inlines.h>
#endif
diff --git a/platform/linux-generic/include/odp/api/byteorder.h b/platform/linux-generic/include/odp/api/byteorder.h
index 84d1173e8..ec3d0eef7 100644
--- a/platform/linux-generic/include/odp/api/byteorder.h
+++ b/platform/linux-generic/include/odp/api/byteorder.h
@@ -25,8 +25,8 @@ extern "C" {
* @{
*/
-#include <odp/api/plat/inlines.h>
-#ifdef _ODP_INLINES
+#include <odp/api/plat/static_inline.h>
+#if ODP_ABI_COMPAT == 0
#include <odp/api/plat/byteorder_inlines.h>
#endif
diff --git a/platform/linux-generic/include/odp/api/plat/inlines.h.in b/platform/linux-generic/include/odp/api/plat/static_inline.h.in
index 5d8c0dc4b..acee5f3c1 100644
--- a/platform/linux-generic/include/odp/api/plat/inlines.h.in
+++ b/platform/linux-generic/include/odp/api/plat/static_inline.h.in
@@ -7,27 +7,26 @@
/**
* @file
*
- * ODP platform inline functions
+ * Macro for static inline functions
*/
-#ifndef ODP_PLAT_INLINES_H_
-#define ODP_PLAT_INLINES_H_
+#ifndef ODP_PLAT_STATIC_INLINE_H_
+#define ODP_PLAT_STATIC_INLINE_H_
#ifdef __cplusplus
extern "C" {
#endif
-#define @_ODP_INLINES@
-
-#ifdef _ODP_INLINES
-#define _STATIC static inline
-#else
+#if @ODP_ABI_COMPAT@
+#define ODP_ABI_COMPAT 1
#define _STATIC
+#else
+#define ODP_ABI_COMPAT 0
+#define _STATIC static inline
#endif
#ifdef __cplusplus
}
#endif
-
-#endif /* ODP_PLAT_INLINES_H_ */
+#endif
diff --git a/platform/linux-generic/include/odp/api/std_clib.h b/platform/linux-generic/include/odp/api/std_clib.h
index c498f68f5..fea472543 100644
--- a/platform/linux-generic/include/odp/api/std_clib.h
+++ b/platform/linux-generic/include/odp/api/std_clib.h
@@ -14,8 +14,8 @@ extern "C" {
#include <odp/api/spec/std_types.h>
#include <string.h>
-#include <odp/api/plat/inlines.h>
-#ifdef _ODP_INLINES
+#include <odp/api/plat/static_inline.h>
+#if ODP_ABI_COMPAT == 0
#include <odp/api/plat/std_clib_inlines.h>
#endif
diff --git a/platform/linux-generic/include/odp/api/sync.h b/platform/linux-generic/include/odp/api/sync.h
index d2becb942..e1afcc722 100644
--- a/platform/linux-generic/include/odp/api/sync.h
+++ b/platform/linux-generic/include/odp/api/sync.h
@@ -21,8 +21,8 @@ extern "C" {
* @{
*/
-#include <odp/api/plat/inlines.h>
-#ifdef _ODP_INLINES
+#include <odp/api/plat/static_inline.h>
+#if ODP_ABI_COMPAT == 0
#include <odp/api/plat/sync_inlines.h>
#endif
diff --git a/platform/linux-generic/m4/configure.m4 b/platform/linux-generic/m4/configure.m4
index 6fb05c082..d3e5528c1 100644
--- a/platform/linux-generic/m4/configure.m4
+++ b/platform/linux-generic/m4/configure.m4
@@ -37,4 +37,4 @@ m4_include([platform/linux-generic/m4/odp_ipc.m4])
m4_include([platform/linux-generic/m4/odp_schedule.m4])
AC_CONFIG_FILES([platform/linux-generic/Makefile
- platform/linux-generic/include/odp/api/plat/inlines.h])
+ platform/linux-generic/include/odp/api/plat/static_inline.h])
diff --git a/platform/linux-generic/odp_atomic.c b/platform/linux-generic/odp_atomic.c
index e9a3ed0a1..0e40cda51 100644
--- a/platform/linux-generic/odp_atomic.c
+++ b/platform/linux-generic/odp_atomic.c
@@ -5,7 +5,7 @@
*/
#include <odp/api/atomic.h>
-#ifndef _ODP_INLINES
+#if ODP_ABI_COMPAT == 1
#include <odp/api/plat/atomic_inlines.h>
#endif
diff --git a/platform/linux-generic/odp_byteorder.c b/platform/linux-generic/odp_byteorder.c
index fc87291b0..a344c53f7 100644
--- a/platform/linux-generic/odp_byteorder.c
+++ b/platform/linux-generic/odp_byteorder.c
@@ -5,6 +5,6 @@
*/
#include <odp/api/byteorder.h>
-#ifndef _ODP_INLINES
+#if ODP_ABI_COMPAT == 1
#include <odp/api/plat/byteorder_inlines.h>
#endif
diff --git a/platform/linux-generic/odp_std_clib.c b/platform/linux-generic/odp_std_clib.c
index 611ba12e8..24df249db 100644
--- a/platform/linux-generic/odp_std_clib.c
+++ b/platform/linux-generic/odp_std_clib.c
@@ -5,6 +5,6 @@
*/
#include <odp/api/std_clib.h>
-#ifndef _ODP_INLINES
+#if ODP_ABI_COMPAT == 1
#include <odp/api/plat/std_clib_inlines.h>
#endif
diff --git a/platform/linux-generic/odp_sync.c b/platform/linux-generic/odp_sync.c
index f31c38949..b7eb503ca 100644
--- a/platform/linux-generic/odp_sync.c
+++ b/platform/linux-generic/odp_sync.c
@@ -5,6 +5,6 @@
*/
#include <odp/api/sync.h>
-#ifndef _ODP_INLINES
+#if ODP_ABI_COMPAT == 1
#include <odp/api/plat/sync_inlines.h>
#endif