aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org>2017-11-23 01:31:27 +0300
committerMaxim Uvarov <maxim.uvarov@linaro.org>2018-01-18 22:07:23 +0300
commit47932d20fdf72f73e5de4961569fda760200edc6 (patch)
tree1261e5299e7acd99a5e201745232c55b69978105 /include
parent585af294de9194f2e5e0bd53b4d5e12eba8ba1ba (diff)
linux-gen, include: switch atomic.h to api+abi
Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Diffstat (limited to 'include')
-rw-r--r--include/Makefile.am7
-rw-r--r--include/odp/api/abi-default/atomic.h70
-rw-r--r--include/odp/arch/arm32-linux/odp/api/abi/atomic.h7
-rw-r--r--include/odp/arch/arm64-linux/odp/api/abi/atomic.h7
-rw-r--r--include/odp/arch/mips64-linux/odp/api/abi/atomic.h7
-rw-r--r--include/odp/arch/power64-linux/odp/api/abi/atomic.h7
-rw-r--r--include/odp/arch/x86_32-linux/odp/api/abi/atomic.h7
-rw-r--r--include/odp/arch/x86_64-linux/odp/api/abi/atomic.h7
8 files changed, 119 insertions, 0 deletions
diff --git a/include/Makefile.am b/include/Makefile.am
index 7c3293b94..bae7bc8b5 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -56,6 +56,7 @@ nodist_odpapispecinclude_HEADERS = \
odpapiabidefaultincludedir= $(includedir)/odp/api/abi-default
odpapiabidefaultinclude_HEADERS = \
+ odp/api/abi-default/atomic.h \
odp/api/abi-default/barrier.h \
odp/api/abi-default/buffer.h \
odp/api/abi-default/classification.h \
@@ -89,6 +90,7 @@ if ODP_ABI_COMPAT
odpapiabiarchincludedir = $(archincludedir)/odp/api/abi
if ARCH_IS_ARM
odpapiabiarchinclude_HEADERS = \
+ odp/arch/arm32-linux/odp/api/abi/atomic.h \
odp/arch/arm32-linux/odp/api/abi/barrier.h \
odp/arch/arm32-linux/odp/api/abi/buffer.h \
odp/arch/arm32-linux/odp/api/abi/classification.h \
@@ -118,6 +120,7 @@ odpapiabiarchinclude_HEADERS = \
endif
if ARCH_IS_AARCH64
odpapiabiarchinclude_HEADERS = \
+ odp/arch/arm64-linux/odp/api/abi/atomic.h \
odp/arch/arm64-linux/odp/api/abi/barrier.h \
odp/arch/arm64-linux/odp/api/abi/buffer.h \
odp/arch/arm64-linux/odp/api/abi/classification.h \
@@ -147,6 +150,7 @@ odpapiabiarchinclude_HEADERS = \
endif
if ARCH_IS_MIPS64
odpapiabiarchinclude_HEADERS = \
+ odp/arch/mips64-linux/odp/api/abi/atomic.h \
odp/arch/mips64-linux/odp/api/abi/barrier.h \
odp/arch/mips64-linux/odp/api/abi/buffer.h \
odp/arch/mips64-linux/odp/api/abi/classification.h \
@@ -176,6 +180,7 @@ odpapiabiarchinclude_HEADERS = \
endif
if ARCH_IS_POWERPC
odpapiabiarchinclude_HEADERS = \
+ odp/arch/power64-linux/odp/api/abi/atomic.h \
odp/arch/power64-linux/odp/api/abi/barrier.h \
odp/arch/power64-linux/odp/api/abi/buffer.h \
odp/arch/power64-linux/odp/api/abi/classification.h \
@@ -205,6 +210,7 @@ odpapiabiarchinclude_HEADERS = \
endif
if ARCH_IS_X86_32
odpapiabiarchinclude_HEADERS = \
+ odp/arch/x86_32-linux/odp/api/abi/atomic.h \
odp/arch/x86_32-linux/odp/api/abi/barrier.h \
odp/arch/x86_32-linux/odp/api/abi/buffer.h \
odp/arch/x86_32-linux/odp/api/abi/classification.h \
@@ -234,6 +240,7 @@ odpapiabiarchinclude_HEADERS = \
endif
if ARCH_IS_X86_64
odpapiabiarchinclude_HEADERS = \
+ odp/arch/x86_64-linux/odp/api/abi/atomic.h \
odp/arch/x86_64-linux/odp/api/abi/barrier.h \
odp/arch/x86_64-linux/odp/api/abi/buffer.h \
odp/arch/x86_64-linux/odp/api/abi/classification.h \
diff --git a/include/odp/api/abi-default/atomic.h b/include/odp/api/abi-default/atomic.h
new file mode 100644
index 000000000..796e512ea
--- /dev/null
+++ b/include/odp/api/abi-default/atomic.h
@@ -0,0 +1,70 @@
+/* Copyright (c) 2015, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+/**
+ * @file
+ *
+ * ODP atomic operations
+ */
+
+#ifndef ODP_ABI_ATOMIC_H_
+#define ODP_ABI_ATOMIC_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <odp/api/std_types.h>
+#include <odp/api/align.h>
+
+/**
+ * @internal
+ * Atomic 32-bit unsigned integer
+ */
+struct odp_atomic_u32_s {
+ uint32_t v; /**< Actual storage for the atomic variable */
+} ODP_ALIGNED(sizeof(uint32_t)); /* Enforce alignment! */
+
+#if __GCC_ATOMIC_LLONG_LOCK_FREE >= 2
+
+/**
+ * @internal
+ * Atomic 64-bit unsigned integer
+ */
+struct odp_atomic_u64_s {
+ uint64_t v; /**< Actual storage for the atomic variable */
+} ODP_ALIGNED(sizeof(uint64_t)); /* Enforce alignment! */
+
+#else
+
+/**
+ * @internal
+ * Use embedded lock for atomic 64-bit variable implementation
+ */
+#define ODP_ATOMIC_U64_LOCK 1
+
+/**
+ * @internal
+ * Atomic 64-bit unsigned integer
+ */
+struct odp_atomic_u64_s {
+ uint64_t v; /**< Actual storage for the atomic variable */
+ /* Some architectures do not support lock-free operations on 64-bit
+ * data types. We use a spin lock to ensure atomicity. */
+ char lock; /**< Spin lock (if needed) used to ensure atomic access */
+} ODP_ALIGNED(sizeof(uint64_t)); /* Enforce alignment! */
+
+#endif
+
+typedef struct odp_atomic_u64_s odp_atomic_u64_t;
+
+typedef struct odp_atomic_u32_s odp_atomic_u32_t;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/odp/arch/arm32-linux/odp/api/abi/atomic.h b/include/odp/arch/arm32-linux/odp/api/abi/atomic.h
new file mode 100644
index 000000000..8848ad19f
--- /dev/null
+++ b/include/odp/arch/arm32-linux/odp/api/abi/atomic.h
@@ -0,0 +1,7 @@
+/* Copyright (c) 2017, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <odp/api/abi-default/atomic.h>
diff --git a/include/odp/arch/arm64-linux/odp/api/abi/atomic.h b/include/odp/arch/arm64-linux/odp/api/abi/atomic.h
new file mode 100644
index 000000000..8848ad19f
--- /dev/null
+++ b/include/odp/arch/arm64-linux/odp/api/abi/atomic.h
@@ -0,0 +1,7 @@
+/* Copyright (c) 2017, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <odp/api/abi-default/atomic.h>
diff --git a/include/odp/arch/mips64-linux/odp/api/abi/atomic.h b/include/odp/arch/mips64-linux/odp/api/abi/atomic.h
new file mode 100644
index 000000000..8848ad19f
--- /dev/null
+++ b/include/odp/arch/mips64-linux/odp/api/abi/atomic.h
@@ -0,0 +1,7 @@
+/* Copyright (c) 2017, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <odp/api/abi-default/atomic.h>
diff --git a/include/odp/arch/power64-linux/odp/api/abi/atomic.h b/include/odp/arch/power64-linux/odp/api/abi/atomic.h
new file mode 100644
index 000000000..8848ad19f
--- /dev/null
+++ b/include/odp/arch/power64-linux/odp/api/abi/atomic.h
@@ -0,0 +1,7 @@
+/* Copyright (c) 2017, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <odp/api/abi-default/atomic.h>
diff --git a/include/odp/arch/x86_32-linux/odp/api/abi/atomic.h b/include/odp/arch/x86_32-linux/odp/api/abi/atomic.h
new file mode 100644
index 000000000..8848ad19f
--- /dev/null
+++ b/include/odp/arch/x86_32-linux/odp/api/abi/atomic.h
@@ -0,0 +1,7 @@
+/* Copyright (c) 2017, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <odp/api/abi-default/atomic.h>
diff --git a/include/odp/arch/x86_64-linux/odp/api/abi/atomic.h b/include/odp/arch/x86_64-linux/odp/api/abi/atomic.h
new file mode 100644
index 000000000..8848ad19f
--- /dev/null
+++ b/include/odp/arch/x86_64-linux/odp/api/abi/atomic.h
@@ -0,0 +1,7 @@
+/* Copyright (c) 2017, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <odp/api/abi-default/atomic.h>