mirror of https://github.com/thesofproject/sof.git
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:
parent
d3200d1074
commit
4529812967
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue