mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-01 22:48:25 +00:00
CLEANUP: atomic: add HA_ATOMIC_INC/DEC for unit increments
Most ADD/SUB callers use them for a single unit (e.g. refcounts) and it's a pain to always pass ",1". Let's add them to simplify the API. However we currently don't add any return value. If needed in the future better report zero/non-zero than a real value for the sake of efficiency at the instruction level.
This commit is contained in:
parent
185157201c
commit
22d675cb77
@ -77,6 +77,8 @@
|
||||
#define HA_ATOMIC_OR(val, flags) do { *(val) |= (flags);} while (0)
|
||||
#define HA_ATOMIC_ADD(val, i) do { *(val) += (i);} while (0)
|
||||
#define HA_ATOMIC_SUB(val, i) do { *(val) -= (i);} while (0)
|
||||
#define HA_ATOMIC_INC(val) do { *(val) += 1;} while (0)
|
||||
#define HA_ATOMIC_DEC(val) do { *(val) -= 1;} while (0)
|
||||
|
||||
#define HA_ATOMIC_AND_FETCH(val, flags) ({ *(val) &= (flags); })
|
||||
#define HA_ATOMIC_OR_FETCH(val, flags) ({ *(val) |= (flags); })
|
||||
@ -226,6 +228,8 @@
|
||||
#define HA_ATOMIC_OR(val, flags) do { __sync_or_and_fetch(val, flags); } while (0)
|
||||
#define HA_ATOMIC_ADD(val, i) do { __sync_add_and_fetch(val, i); } while (0)
|
||||
#define HA_ATOMIC_SUB(val, i) do { __sync_sub_and_fetch(val, i); } while (0)
|
||||
#define HA_ATOMIC_INC(val) do { __sync_add_and_fetch(val, 1); } while (0)
|
||||
#define HA_ATOMIC_DEC(val) do { __sync_sub_and_fetch(val, 1); } while (0)
|
||||
|
||||
#define HA_ATOMIC_AND_FETCH(val, flags) __sync_and_and_fetch(val, flags)
|
||||
#define HA_ATOMIC_OR_FETCH(val, flags) __sync_or_and_fetch(val, flags)
|
||||
@ -310,6 +314,8 @@
|
||||
#define HA_ATOMIC_OR(val, flags) do { __atomic_or_fetch(val, flags, __ATOMIC_SEQ_CST); } while (0)
|
||||
#define HA_ATOMIC_ADD(val, i) do { __atomic_add_fetch(val, i, __ATOMIC_SEQ_CST); } while (0)
|
||||
#define HA_ATOMIC_SUB(val, i) do { __atomic_sub_fetch(val, i, __ATOMIC_SEQ_CST); } while (0)
|
||||
#define HA_ATOMIC_INC(val) do { __atomic_add_fetch(val, 1, __ATOMIC_SEQ_CST); } while (0)
|
||||
#define HA_ATOMIC_DEC(val) do { __atomic_sub_fetch(val, 1, __ATOMIC_SEQ_CST); } while (0)
|
||||
|
||||
#define HA_ATOMIC_AND_FETCH(val, flags) __atomic_and_fetch(val, flags, __ATOMIC_SEQ_CST)
|
||||
#define HA_ATOMIC_OR_FETCH(val, flags) __atomic_or_fetch(val, flags, __ATOMIC_SEQ_CST)
|
||||
@ -375,6 +381,8 @@
|
||||
#define _HA_ATOMIC_OR(val, flags) do { __atomic_or_fetch(val, flags, __ATOMIC_RELAXED); } while (0)
|
||||
#define _HA_ATOMIC_ADD(val, i) do { __atomic_add_fetch(val, i, __ATOMIC_RELAXED); } while (0)
|
||||
#define _HA_ATOMIC_SUB(val, i) do { __atomic_sub_fetch(val, i, __ATOMIC_RELAXED); } while (0)
|
||||
#define _HA_ATOMIC_INC(val) do { __atomic_add_fetch(val, 1, __ATOMIC_RELAXED); } while (0)
|
||||
#define _HA_ATOMIC_DEC(val) do { __atomic_sub_fetch(val, 1, __ATOMIC_RELAXED); } while (0)
|
||||
|
||||
#define _HA_ATOMIC_AND_FETCH(val, flags) __atomic_and_fetch(val, flags, __ATOMIC_RELAXED)
|
||||
#define _HA_ATOMIC_OR_FETCH(val, flags) __atomic_or_fetch(val, flags, __ATOMIC_RELAXED)
|
||||
@ -713,6 +721,14 @@ static inline void __ha_compiler_barrier(void)
|
||||
#define _HA_ATOMIC_FETCH_SUB HA_ATOMIC_FETCH_SUB
|
||||
#endif /* !_HA_ATOMIC_FETCH_SUB */
|
||||
|
||||
#ifndef _HA_ATOMIC_INC
|
||||
#define _HA_ATOMIC_INC HA_ATOMIC_INC
|
||||
#endif /* !_HA_ATOMIC_INC */
|
||||
|
||||
#ifndef _HA_ATOMIC_DEC
|
||||
#define _HA_ATOMIC_DEC HA_ATOMIC_DEC
|
||||
#endif /* !_HA_ATOMIC_DEC */
|
||||
|
||||
#ifndef _HA_ATOMIC_AND
|
||||
#define _HA_ATOMIC_AND HA_ATOMIC_AND
|
||||
#endif /* !_HA_ATOMIC_AND */
|
||||
|
Loading…
Reference in New Issue
Block a user