VSF Documented
Data Structures | Macros
atomic.h File Reference
#include "hal/arch/vsf_arch.h"

Go to the source code of this file.

Data Structures

struct  atomic_t
 

Macros

#define __VSF_LINUX_ATOM_BITLEN__   32
 
#define ATOMIC_INIT(__VALUE)   { (__VALUE) }
 
#define atomic_set(__v, __i)   ((__v)->counter = (__i))
 
#define atomic_read(__v)   ((__v)->counter)
 
#define atomic_add(__i, __v)   vsf_atom_add(__VSF_LINUX_ATOM_BITLEN__, &(__v)->counter, (__i))
 
#define atomic_sub(__i, __v)   atomic_add(- (__i), (__v))
 
#define atomic_inc(__v)   atomic_add(1, __v)
 
#define atomic_dec(__v)   atomic_sub(1, __v)
 
#define atomic_add_return(__i, __v)
 
#define atomic_sub_return(__i, __v)   atomic_add_return(- (__i), (__v))
 
#define atomic_inc_return(__v)   atomic_add_return(1, (__v))
 
#define atomic_dec_return(__v)   atomic_sub_return(1, (__v))
 
#define atomic_inc_and_test(__v)   (!atomic_inc_return(__v))
 
#define atomic_dec_and_test(__v)   (!atomic_dec_return(__v))
 
#define atomic_sub_and_test(__i, __v)   (!atomic_sub_return((__i), (__v)))
 
#define atomic_add_negative(__i, __v)   (atomic_sub_return((__i), (__v)) < 0)
 
#define atomic_xchg(__v, __new)   vsf_atom_xchg(__VSF_LINUX_ATOM_BITLEN__, &(__v)->counter, (__new))
 

Macro Definition Documentation

◆ __VSF_LINUX_ATOM_BITLEN__

#define __VSF_LINUX_ATOM_BITLEN__   32

◆ ATOMIC_INIT

#define ATOMIC_INIT (   __VALUE)    { (__VALUE) }

◆ atomic_set

#define atomic_set (   __v,
  __i 
)    ((__v)->counter = (__i))

◆ atomic_read

#define atomic_read (   __v)    ((__v)->counter)

◆ atomic_add

#define atomic_add (   __i,
  __v 
)    vsf_atom_add(__VSF_LINUX_ATOM_BITLEN__, &(__v)->counter, (__i))

◆ atomic_sub

#define atomic_sub (   __i,
  __v 
)    atomic_add(- (__i), (__v))

◆ atomic_inc

#define atomic_inc (   __v)    atomic_add(1, __v)

◆ atomic_dec

#define atomic_dec (   __v)    atomic_sub(1, __v)

◆ atomic_add_return

#define atomic_add_return (   __i,
  __v 
)
Value:
({ \
int VSF_MACRO_SAFE_NAME(value) = (__i); \
})
#define __VSF_LINUX_ATOM_BITLEN__
Definition atomic.h:20
vk_av_control_value_t value
Definition vsf_audio.h:171
#define VSF_MACRO_SAFE_NAME(__NAME)
Definition vsf_preprocessor.h:32

◆ atomic_sub_return

#define atomic_sub_return (   __i,
  __v 
)    atomic_add_return(- (__i), (__v))

◆ atomic_inc_return

#define atomic_inc_return (   __v)    atomic_add_return(1, (__v))

◆ atomic_dec_return

#define atomic_dec_return (   __v)    atomic_sub_return(1, (__v))

◆ atomic_inc_and_test

#define atomic_inc_and_test (   __v)    (!atomic_inc_return(__v))

◆ atomic_dec_and_test

#define atomic_dec_and_test (   __v)    (!atomic_dec_return(__v))

◆ atomic_sub_and_test

#define atomic_sub_and_test (   __i,
  __v 
)    (!atomic_sub_return((__i), (__v)))

◆ atomic_add_negative

#define atomic_add_negative (   __i,
  __v 
)    (atomic_sub_return((__i), (__v)) < 0)

◆ atomic_xchg

#define atomic_xchg (   __v,
  __new 
)    vsf_atom_xchg(__VSF_LINUX_ATOM_BITLEN__, &(__v)->counter, (__new))