diff options
author | Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> | 2017-11-23 01:31:27 +0300 |
---|---|---|
committer | Maxim Uvarov <maxim.uvarov@linaro.org> | 2018-01-18 22:07:23 +0300 |
commit | 47932d20fdf72f73e5de4961569fda760200edc6 (patch) | |
tree | 1261e5299e7acd99a5e201745232c55b69978105 /include | |
parent | 585af294de9194f2e5e0bd53b4d5e12eba8ba1ba (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.am | 7 | ||||
-rw-r--r-- | include/odp/api/abi-default/atomic.h | 70 | ||||
-rw-r--r-- | include/odp/arch/arm32-linux/odp/api/abi/atomic.h | 7 | ||||
-rw-r--r-- | include/odp/arch/arm64-linux/odp/api/abi/atomic.h | 7 | ||||
-rw-r--r-- | include/odp/arch/mips64-linux/odp/api/abi/atomic.h | 7 | ||||
-rw-r--r-- | include/odp/arch/power64-linux/odp/api/abi/atomic.h | 7 | ||||
-rw-r--r-- | include/odp/arch/x86_32-linux/odp/api/abi/atomic.h | 7 | ||||
-rw-r--r-- | include/odp/arch/x86_64-linux/odp/api/abi/atomic.h | 7 |
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> |