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/bitops.h>
#include <linux/atomic.h>
#include <asm/cmpxchg.h>
#include <asm/war.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_add(i, l)   atomic_long_add((i), (&(l)->a))
 
#define local_sub(i, l)   atomic_long_sub((i), (&(l)->a))
 
#define local_inc(l)   atomic_long_inc(&(l)->a)
 
#define local_dec(l)   atomic_long_dec(&(l)->a)
 
#define local_cmpxchg(l, o, n)   ((long)cmpxchg_local(&((l)->a.counter), (o), (n)))
 
#define local_xchg(l, n)   (atomic_long_xchg((&(l)->a), (n)))
 
#define local_add_unless(l, a, u)
 
#define local_inc_not_zero(l)   local_add_unless((l), 1, 0)
 
#define local_dec_return(l)   local_sub_return(1, (l))
 
#define local_inc_return(l)   local_add_return(1, (l))
 
#define local_sub_and_test(i, l)   (local_sub_return((i), (l)) == 0)
 
#define local_inc_and_test(l)   (local_inc_return(l) == 0)
 
#define local_dec_and_test(l)   (local_sub_return(1, (l)) == 0)
 
#define local_add_negative(i, l)   (local_add_return(i, (l)) < 0)
 
#define __local_inc(l)   ((l)->a.counter++)
 
#define __local_dec(l)   ((l)->a.counter++)
 
#define __local_add(i, l)   ((l)->a.counter+=(i))
 
#define __local_sub(i, l)   ((l)->a.counter-=(i))
 

Macro Definition Documentation

#define __local_add (   i,
  l 
)    ((l)->a.counter+=(i))

Definition at line 193 of file local.h.

#define __local_dec (   l)    ((l)->a.counter++)

Definition at line 192 of file local.h.

#define __local_inc (   l)    ((l)->a.counter++)

Definition at line 191 of file local.h.

#define __local_sub (   i,
  l 
)    ((l)->a.counter-=(i))

Definition at line 194 of file local.h.

#define local_add (   i,
  l 
)    atomic_long_add((i), (&(l)->a))

Definition at line 20 of file local.h.

#define local_add_negative (   i,
  l 
)    (local_add_return(i, (l)) < 0)

Definition at line 184 of file local.h.

#define local_add_unless (   l,
  a,
  u 
)
Value:
({ \
long c, old; \
c = local_read(l); \
while (c != (u) && (old = local_cmpxchg((l), c, c + (a))) != c) \
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 131 of file local.h.

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

Definition at line 118 of file local.h.

#define local_dec (   l)    atomic_long_dec(&(l)->a)

Definition at line 23 of file local.h.

#define local_dec_and_test (   l)    (local_sub_return(1, (l)) == 0)

Definition at line 173 of file local.h.

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

Definition at line 141 of file local.h.

#define local_inc (   l)    atomic_long_inc(&(l)->a)

Definition at line 22 of file local.h.

#define local_inc_and_test (   l)    (local_inc_return(l) == 0)

Definition at line 163 of file local.h.

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

Definition at line 139 of file local.h.

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

Definition at line 142 of file local.h.

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

Definition at line 15 of file local.h.

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

Definition at line 17 of file local.h.

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

Definition at line 18 of file local.h.

#define local_sub (   i,
  l 
)    atomic_long_sub((i), (&(l)->a))

Definition at line 21 of file local.h.

#define local_sub_and_test (   i,
  l 
)    (local_sub_return((i), (l)) == 0)

Definition at line 153 of file local.h.

#define local_xchg (   l,
  n 
)    (atomic_long_xchg((&(l)->a), (n)))

Definition at line 120 of file local.h.