linux/scripts/atomic/atomics.tbl
<<
>>
Prefs
   1# name  meta    args...
   2#
   3# Where meta contains a string of variants to generate.
   4# Upper-case implies _{acquire,release,relaxed} variants.
   5# Valid meta values are:
   6# * B/b - bool: returns bool
   7# * v   - void: returns void
   8# * I/i - int: returns base type
   9# * R   - return: returns base type (has _return variants)
  10# * F/f - fetch: returns base type (has fetch_ variants)
  11# * l   - load: returns base type (has _acquire order variant)
  12# * s   - store: returns void (has _release order variant)
  13#
  14# Where args contains list of type[:name], where type is:
  15# * cv  - const pointer to atomic base type (atomic_t/atomic64_t/atomic_long_t)
  16# * v   - pointer to atomic base type (atomic_t/atomic64_t/atomic_long_t)
  17# * i   - base type (int/s64/long)
  18# * p   - pointer to base type (int/s64/long)
  19#
  20read                    l       cv
  21set                     s       v       i
  22add                     vRF     i       v
  23sub                     vRF     i       v
  24inc                     vRF     v
  25dec                     vRF     v
  26and                     vF      i       v
  27andnot                  vF      i       v
  28or                      vF      i       v
  29xor                     vF      i       v
  30xchg                    I       v       i
  31cmpxchg                 I       v       i:old   i:new
  32try_cmpxchg             B       v       p:old   i:new
  33sub_and_test            b       i       v
  34dec_and_test            b       v
  35inc_and_test            b       v
  36add_negative            b       i       v
  37add_unless              fb      v       i:a     i:u
  38inc_not_zero            b       v
  39inc_unless_negative     b       v
  40dec_unless_positive     b       v
  41dec_if_positive         i       v
  42