mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-05 00:20:11 +01:00
util/u_atomic: Fix the unlocked implementation.
It was totally broken: - p_atomic_dec_zero() was returning the negation of the expected value - p_atomic_inc_return()/p_atomic_dec_return() was post-incrementing/decrementing, hence returning the old value instead of the new - p_atomic_cmpxchg() was returning the new value on success, instead of the old It is clear this never used in the past. I wonder if it wouldn't be better to yank it altogether. Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
ff80b92a58
commit
a5299e9e1c
1 changed files with 6 additions and 6 deletions
|
|
@ -57,12 +57,12 @@
|
|||
|
||||
#define p_atomic_set(_v, _i) (*(_v) = (_i))
|
||||
#define p_atomic_read(_v) (*(_v))
|
||||
#define p_atomic_dec_zero(_v) ((bool) --(*(_v)))
|
||||
#define p_atomic_inc(_v) ((void) (*(_v))++)
|
||||
#define p_atomic_dec(_v) ((void) (*(_v))--)
|
||||
#define p_atomic_inc_return(_v) ((*(_v))++)
|
||||
#define p_atomic_dec_return(_v) ((*(_v))--)
|
||||
#define p_atomic_cmpxchg(_v, old, _new) (*(_v) == old ? *(_v) = (_new) : *(_v))
|
||||
#define p_atomic_dec_zero(_v) (p_atomic_dec_return(_v) == 0)
|
||||
#define p_atomic_inc(_v) ((void) p_atomic_inc_return(_v))
|
||||
#define p_atomic_dec(_v) ((void) p_atomic_dec_return(_v))
|
||||
#define p_atomic_inc_return(_v) (++(*(_v)))
|
||||
#define p_atomic_dec_return(_v) (--(*(_v)))
|
||||
#define p_atomic_cmpxchg(_v, _old, _new) (*(_v) == (_old) ? (*(_v) = (_new), (_old)) : *(_v))
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue