Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros
local.h File Reference
#include <linux/percpu.h>
#include <linux/atomic.h>
#include <asm/asm.h>

Go to the source code of this file.

Data Structures

struct  local_t
 

Macros

#define LOCAL_INIT(i)   { ATOMIC_LONG_INIT(i) }
 
#define local_read(l)   atomic_long_read(&(l)->a)
 
#define local_set(l, i)   atomic_long_set(&(l)->a, (i))
 
#define local_inc_return(l)   (local_add_return(1, l))
 
#define local_dec_return(l)   (local_sub_return(1, l))
 
#define local_cmpxchg(l, o, n)   (cmpxchg_local(&((l)->a.counter), (o), (n)))
 
#define local_xchg(l, n)   (xchg(&((l)->a.counter), (n)))
 
#define local_add_unless(l, a, u)
 
#define local_inc_not_zero(l)   local_add_unless((l), 1, 0)
 
#define __local_inc(l)   local_inc(l)
 
#define __local_dec(l)   local_dec(l)
 
#define __local_add(i, l)   local_add((i), (l))
 
#define __local_sub(i, l)   local_sub((i), (l))
 

Macro Definition Documentation

#define __local_add (   i,
  l 
)    local_add((i), (l))

Definition at line 194 of file local.h.

#define __local_dec (   l)    local_dec(l)

Definition at line 193 of file local.h.

#define __local_inc (   l)    local_inc(l)

Definition at line 192 of file local.h.

#define __local_sub (   i,
  l 
)    local_sub((i), (l))

Definition at line 195 of file local.h.

#define local_add_unless (   l,
  a,
  u 
)
Value:
({ \
long c, old; \
c = local_read((l)); \
for (;;) { \
if (unlikely(c == (u))) \
break; \
old = local_cmpxchg((l), c, c + (a)); \
if (likely(old == c)) \
break; \
c = old; \
} \
c != (u); \
})

local_add_unless - add unless the number is a given value : pointer of type local_t : the amount to add to l... : ...unless l 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 172 of file local.h.

#define local_cmpxchg (   l,
  o,
  n 
)    (cmpxchg_local(&((l)->a.counter), (o), (n)))

Definition at line 158 of file local.h.

#define local_dec_return (   l)    (local_sub_return(1, l))

Definition at line 156 of file local.h.

#define local_inc_not_zero (   l)    local_add_unless((l), 1, 0)

Definition at line 186 of file local.h.

#define local_inc_return (   l)    (local_add_return(1, l))

Definition at line 155 of file local.h.

#define LOCAL_INIT (   i)    { ATOMIC_LONG_INIT(i) }

Definition at line 13 of file local.h.

#define local_read (   l)    atomic_long_read(&(l)->a)

Definition at line 15 of file local.h.

#define local_set (   l,
  i 
)    atomic_long_set(&(l)->a, (i))

Definition at line 16 of file local.h.

#define local_xchg (   l,
  n 
)    (xchg(&((l)->a.counter), (n)))

Definition at line 161 of file local.h.