atomic: add atomic_read and atomic_set

This patch adds atomic_read and atomic_set methods.
Also includes xtensa implementation of those methods.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
This commit is contained in:
Tomasz Lauda 2018-06-04 12:03:43 +01:00 committed by Liam Girdwood
parent d3200d1074
commit 4529812967
2 changed files with 21 additions and 1 deletions

View File

@ -39,11 +39,21 @@ typedef struct {
volatile int32_t value;
} atomic_t;
static inline void arch_atomic_init(atomic_t *a, int32_t value)
static inline int32_t arch_atomic_read(const atomic_t *a)
{
return (*(volatile int32_t *)&a->value);
}
static inline void arch_atomic_set(atomic_t *a, int32_t value)
{
a->value = value;
}
static inline void arch_atomic_init(atomic_t *a, int32_t value)
{
arch_atomic_set(a, value);
}
static inline void arch_atomic_add(atomic_t *a, int32_t value)
{
int32_t result, current;

View File

@ -40,6 +40,16 @@ static inline void atomic_init(atomic_t *a, int32_t value)
arch_atomic_init(a, value);
}
static inline int32_t atomic_read(const atomic_t *a)
{
return arch_atomic_read(a);
}
static inline void atomic_set(atomic_t *a, int32_t value)
{
arch_atomic_set(a, value);
}
static inline void atomic_add(atomic_t *a, int32_t value)
{
arch_atomic_add(a, value);