heimbase-atomics: let heim_base_atomic_* use 'long' instead of 'int' on AIX
As the atomics are signed on AIX, we better try to use the largest possible max value. The 'int' API uses 32-bit values for both 32-bit and 64-bit binaries: typedef int *atomic_p; int fetch_and_add(atomic_p addr, int value); The 'long' API uses 32-bit values for 32-bit binaries and 64-bit values for 64-bit binaries: typedef long *atomic_l; long fetch_and_addlp(atomic_l addr, long value); So we better use the 'long' API in order to avoid any potential problems with the heim_base_atomic_integer_max magic value, where INT[32]_MAX would be a little bit low compared to 64-bit pointer space. Signed-off-by: Stefan Metzmacher <metze@samba.org>
This commit is contained in:

committed by
Luke Howard

parent
1e5cb64569
commit
dc3ac8592b
@@ -103,10 +103,10 @@
|
||||
|
||||
#define heim_base_atomic_barrier() __isync()
|
||||
|
||||
#define heim_base_atomic_inc(x) (fetch_and_add((atomic_p)(x), 1) + 1)
|
||||
#define heim_base_atomic_dec(x) (fetch_and_add((atomic_p)(x), -1) - 1)
|
||||
#define heim_base_atomic_integer_type int
|
||||
#define heim_base_atomic_integer_max INT_MAX
|
||||
#define heim_base_atomic_inc(x) (fetch_and_addlp((atomic_l)(x), 1) + 1)
|
||||
#define heim_base_atomic_dec(x) (fetch_and_addlp((atomic_l)(x), -1) - 1)
|
||||
#define heim_base_atomic_integer_type long
|
||||
#define heim_base_atomic_integer_max LONG_MAX
|
||||
|
||||
static inline void *
|
||||
heim_base_exchange_pointer(void *p, void *newval)
|
||||
|
Reference in New Issue
Block a user