mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-04-17 20:34:40 +00:00
- add vdso dump utility - tests now log stack usage - rename g_ftrace to __ftrace - make internal spinlocks go faster - add conformant c11 atomics library - function tracing now logs stack usage - make function call tracing thread safe - add -X unsecure (no ssl) mode to redbean - munmap() has more consistent behavior now - pacify fsync() calls on python unit tests - make --strace flag work better in redbean - start minimizing and documenting compiler flags
34 lines
2.2 KiB
C
34 lines
2.2 KiB
C
#ifndef COSMOPOLITAN_LIBC_BITS_ATOMIC_GCC47_H_
|
|
#define COSMOPOLITAN_LIBC_BITS_ATOMIC_GCC47_H_
|
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
|
/*───────────────────────────────────────────────────────────────────────────│─╗
|
|
│ cosmopolitan § atomics » gcc 4.7+ ─╬─│┼
|
|
╚────────────────────────────────────────────────────────────────────────────│*/
|
|
|
|
#define atomic_init(obj, value) ((void)(*(obj) = (value)))
|
|
#define atomic_thread_fence(order) __atomic_thread_fence(order)
|
|
#define atomic_signal_fence(order) __atomic_signal_fence(order)
|
|
#define atomic_compare_exchange_strong_explicit(pObject, pExpected, desired, \
|
|
success, failure) \
|
|
__atomic_compare_exchange_n(pObject, pExpected, desired, 0, success, failure)
|
|
#define atomic_compare_exchange_weak_explicit(pObject, pExpected, desired, \
|
|
success, failure) \
|
|
__atomic_compare_exchange_n(pObject, pExpected, desired, 1, success, failure)
|
|
#define atomic_exchange_explicit(pObject, desired, order) \
|
|
__atomic_exchange_n(pObject, desired, order)
|
|
#define atomic_fetch_add_explicit(pObject, operand, order) \
|
|
__atomic_fetch_add(pObject, operand, order)
|
|
#define atomic_fetch_and_explicit(pObject, operand, order) \
|
|
__atomic_fetch_and(pObject, operand, order)
|
|
#define atomic_fetch_or_explicit(pObject, operand, order) \
|
|
__atomic_fetch_or(pObject, operand, order)
|
|
#define atomic_fetch_sub_explicit(pObject, operand, order) \
|
|
__atomic_fetch_sub(pObject, operand, order)
|
|
#define atomic_fetch_xor_explicit(pObject, operand, order) \
|
|
__atomic_fetch_xor(pObject, operand, order)
|
|
#define atomic_load_explicit(pObject, order) __atomic_load_n(pObject, order)
|
|
#define atomic_store_explicit(pObject, desired, order) \
|
|
__atomic_store_n(pObject, desired, order)
|
|
|
|
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
|
#endif /* COSMOPOLITAN_LIBC_BITS_ATOMIC_GCC47_H_ */
|