oro_atomic.h File Reference

Go to the source code of this file.

Classes

struct  oro_atomic_t

Defines

#define __ASM_CONST(x)   x##UL
#define __stringify_in_c(...)   #__VA_ARGS__
#define ASM_CONST(x)   __ASM_CONST(x)
#define ISYNC_ON_SMP
#define LWSYNC   sync
#define LWSYNC_ON_SMP
#define oro_atomic_add_negative(a, v)   (oro_atomic_add_return((a), (v)) < 0)
#define oro_atomic_add_unless(v, a, u)
#define ORO_ATOMIC_CLEANUP(v)
#define oro_atomic_dec_and_test(v)   (oro_atomic_dec_return((v)) == 0)
#define oro_atomic_inc_and_test(v)   (oro_atomic_inc_return(v) == 0)
#define oro_atomic_inc_not_zero(v)   oro_atomic_add_unless((v), 1, 0)
#define ORO_ATOMIC_INIT(i)   { (i) }
#define oro_atomic_oro_cmpxchg(v, o, n)   ((int)oro_cmpxchg(&((v)->counter), (o), (n)))
#define oro_atomic_read(v)   ((v)->counter)
#define oro_atomic_set(v, i)   (((v)->counter) = (i))
#define ORO_ATOMIC_SETUP   oro_atomic_set
#define oro_atomic_sub_and_test(a, v)   (oro_atomic_sub_return((a), (v)) == 0)
#define oro_atomic_xchg(v, new)   (xchg(&((v)->counter), new))
#define PPC405_ERR77(ra, rb)
#define PPC405_ERR77_SYNC
#define PPC_CNTLZL   stringify_in_c(cntlzw)
#define PPC_LCMPI   stringify_in_c(cmpwi)
#define PPC_LL   stringify_in_c(lwz)
#define PPC_LLARX   stringify_in_c(lwarx)
#define PPC_LONG   stringify_in_c(.long)
#define PPC_STL   stringify_in_c(stw)
#define PPC_STLCX   stringify_in_c(stwcx.)
#define PPC_TLNEI   stringify_in_c(twnei)
#define smp_mb__after_oro_atomic_dec()   smp_mb()
#define smp_mb__after_oro_atomic_inc()   smp_mb()
#define smp_mb__before_oro_atomic_dec()   smp_mb()
#define smp_mb__before_oro_atomic_inc()   smp_mb()
#define stringify_in_c(...)   __stringify_in_c(__VA_ARGS__) " "

Functions

static void eieio (void)
static void isync (void)
static __inline__ void oro_atomic_add (oro_atomic_t *v, int n)
static __inline__ int oro_atomic_add_return (oro_atomic_t *v, int n)
static __inline__ void oro_atomic_dec (oro_atomic_t *v)
static __inline__ int oro_atomic_dec_if_positive (oro_atomic_t *v)
static __inline__ int oro_atomic_dec_return (oro_atomic_t *v)
static __inline__ void oro_atomic_inc (oro_atomic_t *v)
static __inline__ int oro_atomic_inc_return (oro_atomic_t *v)
static __inline__ void oro_atomic_sub (int a, oro_atomic_t *v)
static __inline__ int oro_atomic_sub_return (oro_atomic_t *v, int n)

Define Documentation

#define __ASM_CONST (  )     x##UL
#define __stringify_in_c ( ...   )     #__VA_ARGS__
#define ASM_CONST (  )     __ASM_CONST(x)
#define ISYNC_ON_SMP
#define LWSYNC   sync
#define LWSYNC_ON_SMP
#define oro_atomic_add_negative ( a,
 )     (oro_atomic_add_return((a), (v)) < 0)
#define oro_atomic_add_unless ( v,
a,
 ) 
Value:
({                                                      \
        int c, old;                                     \
        c = oro_atomic_read(v);                         \
        for (;;) {                                      \
                if (unlikely(c == (u)))                 \
                        break;                          \
                old = oro_atomic_oro_cmpxchg((v), c, c + (a));  \
                if (likely(old == c))                   \
                        break;                          \
                c = old;                                \
        }                                               \
        c != (u);                                       \
})

oro_atomic_add_unless - add unless the number is a given value : pointer of type oro_atomic_t : the amount to add to v... : ...unless v is equal to u.

Atomically adds to , so long as it was not . Returns non-zero if was not , and zero otherwise.

Definition at line 286 of file install/include/rtt/os/oro_powerpc/oro_atomic.h.

#define ORO_ATOMIC_CLEANUP (  ) 
#define oro_atomic_dec_and_test (  )     (oro_atomic_dec_return((v)) == 0)
#define oro_atomic_inc_and_test (  )     (oro_atomic_inc_return(v) == 0)
#define oro_atomic_inc_not_zero (  )     oro_atomic_add_unless((v), 1, 0)
#define ORO_ATOMIC_INIT (  )     { (i) }
#define oro_atomic_oro_cmpxchg ( v,
o,
 )     ((int)oro_cmpxchg(&((v)->counter), (o), (n)))
#define oro_atomic_read (  )     ((v)->counter)
#define oro_atomic_set ( v,
 )     (((v)->counter) = (i))
#define ORO_ATOMIC_SETUP   oro_atomic_set
#define oro_atomic_sub_and_test ( a,
 )     (oro_atomic_sub_return((a), (v)) == 0)
#define oro_atomic_xchg ( v,
new   )     (xchg(&((v)->counter), new))
#define PPC405_ERR77 ( ra,
rb   ) 
#define PPC405_ERR77_SYNC
#define PPC_CNTLZL   stringify_in_c(cntlzw)
#define PPC_LCMPI   stringify_in_c(cmpwi)
#define PPC_LL   stringify_in_c(lwz)
#define PPC_LLARX   stringify_in_c(lwarx)
#define PPC_LONG   stringify_in_c(.long)
#define PPC_STL   stringify_in_c(stw)
#define PPC_STLCX   stringify_in_c(stwcx.)
#define PPC_TLNEI   stringify_in_c(twnei)
 
#define smp_mb__after_oro_atomic_dec (  )     smp_mb()
 
#define smp_mb__after_oro_atomic_inc (  )     smp_mb()
 
#define smp_mb__before_oro_atomic_dec (  )     smp_mb()
 
#define smp_mb__before_oro_atomic_inc (  )     smp_mb()
#define stringify_in_c ( ...   )     __stringify_in_c(__VA_ARGS__) " "

Function Documentation

static void eieio ( void   )  [inline, static]
static void isync ( void   )  [inline, static]
static __inline__ void oro_atomic_add ( oro_atomic_t v,
int  n 
) [static]
static __inline__ int oro_atomic_add_return ( oro_atomic_t v,
int  n 
) [static]
static __inline__ void oro_atomic_dec ( oro_atomic_t v  )  [static]
static __inline__ int oro_atomic_dec_if_positive ( oro_atomic_t v  )  [static]
static __inline__ int oro_atomic_dec_return ( oro_atomic_t v  )  [static]
static __inline__ void oro_atomic_inc ( oro_atomic_t v  )  [static]
static __inline__ int oro_atomic_inc_return ( oro_atomic_t v  )  [static]
static __inline__ void oro_atomic_sub ( int  a,
oro_atomic_t v 
) [static]
static __inline__ int oro_atomic_sub_return ( oro_atomic_t v,
int  n 
) [static]
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines


rtt
Author(s): RTT Developers
autogenerated on Fri Jan 11 09:47:10 2013