📄 generalize.h
字号:
# endif# if !defined(AO_HAVE_test_and_set_write)# define AO_test_and_set_write(addr) \ AO_test_and_set_full(addr)# define AO_HAVE_test_and_set_write# endif# if !defined(AO_HAVE_test_and_set_read)# define AO_test_and_set_read(addr) \ AO_test_and_set_full(addr)# define AO_HAVE_test_and_set_read# endif#endif /* AO_HAVE_test_and_set_full */#if !defined(AO_HAVE_test_and_set) && \ defined(AO_HAVE_test_and_set_release)# define AO_test_and_set(addr) \ AO_test_and_set_release(addr)# define AO_HAVE_test_and_set#endif#if !defined(AO_HAVE_test_and_set) && \ defined(AO_HAVE_test_and_set_acquire)# define AO_test_and_set(addr) \ AO_test_and_set_acquire(addr)# define AO_HAVE_test_and_set#endif#if !defined(AO_HAVE_test_and_set) && \ defined(AO_HAVE_test_and_set_write)# define AO_test_and_set(addr) \ AO_test_and_set_write(addr)# define AO_HAVE_test_and_set#endif#if !defined(AO_HAVE_test_and_set) && \ defined(AO_HAVE_test_and_set_read)# define AO_test_and_set(addr) \ AO_test_and_set_read(addr)# define AO_HAVE_test_and_set#endif#if defined(AO_HAVE_test_and_set_acquire) &&\ defined(AO_HAVE_nop_full) && \ !defined(AO_HAVE_test_and_set_full)# define AO_test_and_set_full(addr) \ (AO_nop_full(), AO_test_and_set_acquire(addr))# define AO_HAVE_test_and_set_full#endif#if !defined(AO_HAVE_test_and_set_release_write) && \ defined(AO_HAVE_test_and_set_write)# define AO_test_and_set_release_write(addr) \ AO_test_and_set_write(addr)# define AO_HAVE_test_and_set_release_write#endif#if !defined(AO_HAVE_test_and_set_release_write) && \ defined(AO_HAVE_test_and_set_release)# define AO_test_and_set_release_write(addr) \ AO_test_and_set_release(addr)# define AO_HAVE_test_and_set_release_write#endif#if !defined(AO_HAVE_test_and_set_acquire_read) && \ defined(AO_HAVE_test_and_set_read)# define AO_test_and_set_acquire_read(addr) \ AO_test_and_set_read(addr)# define AO_HAVE_test_and_set_acquire_read#endif#if !defined(AO_HAVE_test_and_set_acquire_read) && \ defined(AO_HAVE_test_and_set_acquire)# define AO_test_and_set_acquire_read(addr) \ AO_test_and_set_acquire(addr)# define AO_HAVE_test_and_set_acquire_read#endif#ifdef AO_NO_DD_ORDERING# if defined(AO_HAVE_test_and_set_acquire_read)# define AO_test_and_set_dd_acquire_read(addr) \ AO_test_and_set_acquire_read(addr)# define AO_HAVE_test_and_set_dd_acquire_read# endif#else# if defined(AO_HAVE_test_and_set)# define AO_test_and_set_dd_acquire_read(addr) AO_test_and_set(addr)# define AO_HAVE_test_and_set_dd_acquire_read# endif#endif/* Compare_and_swap */#if defined(AO_HAVE_compare_and_swap) && defined(AO_HAVE_nop_full)\ && !defined(AO_HAVE_compare_and_swap_acquire) AO_INLINE int AO_compare_and_swap_acquire(volatile AO_t *addr, AO_t old, AO_t new_val) { int result = AO_compare_and_swap(addr, old, new_val); AO_nop_full(); return result; }# define AO_HAVE_compare_and_swap_acquire#endif#if defined(AO_HAVE_compare_and_swap) && defined(AO_HAVE_nop_full)\ && !defined(AO_HAVE_compare_and_swap_release)# define AO_compare_and_swap_release(addr, old, new_val) \ (AO_nop_full(), AO_compare_and_swap(addr, old, new_val))# define AO_HAVE_compare_and_swap_release#endif#if defined(AO_HAVE_compare_and_swap_full)# if !defined(AO_HAVE_compare_and_swap_release)# define AO_compare_and_swap_release(addr, old, new_val) \ AO_compare_and_swap_full(addr, old, new_val)# define AO_HAVE_compare_and_swap_release# endif# if !defined(AO_HAVE_compare_and_swap_acquire)# define AO_compare_and_swap_acquire(addr, old, new_val) \ AO_compare_and_swap_full(addr, old, new_val)# define AO_HAVE_compare_and_swap_acquire# endif# if !defined(AO_HAVE_compare_and_swap_write)# define AO_compare_and_swap_write(addr, old, new_val) \ AO_compare_and_swap_full(addr, old, new_val)# define AO_HAVE_compare_and_swap_write# endif# if !defined(AO_HAVE_compare_and_swap_read)# define AO_compare_and_swap_read(addr, old, new_val) \ AO_compare_and_swap_full(addr, old, new_val)# define AO_HAVE_compare_and_swap_read# endif#endif /* AO_HAVE_compare_and_swap_full */#if !defined(AO_HAVE_compare_and_swap) && \ defined(AO_HAVE_compare_and_swap_release)# define AO_compare_and_swap(addr, old, new_val) \ AO_compare_and_swap_release(addr, old, new_val)# define AO_HAVE_compare_and_swap#endif#if !defined(AO_HAVE_compare_and_swap) && \ defined(AO_HAVE_compare_and_swap_acquire)# define AO_compare_and_swap(addr, old, new_val) \ AO_compare_and_swap_acquire(addr, old, new_val)# define AO_HAVE_compare_and_swap#endif#if !defined(AO_HAVE_compare_and_swap) && \ defined(AO_HAVE_compare_and_swap_write)# define AO_compare_and_swap(addr, old, new_val) \ AO_compare_and_swap_write(addr, old, new_val)# define AO_HAVE_compare_and_swap#endif#if !defined(AO_HAVE_compare_and_swap) && \ defined(AO_HAVE_compare_and_swap_read)# define AO_compare_and_swap(addr, old, new_val) \ AO_compare_and_swap_read(addr, old, new_val)# define AO_HAVE_compare_and_swap#endif#if defined(AO_HAVE_compare_and_swap_acquire) &&\ defined(AO_HAVE_nop_full) && \ !defined(AO_HAVE_compare_and_swap_full)# define AO_compare_and_swap_full(addr, old, new_val) \ (AO_nop_full(), AO_compare_and_swap_acquire(addr, old, new_val))# define AO_HAVE_compare_and_swap_full#endif#if !defined(AO_HAVE_compare_and_swap_release_write) && \ defined(AO_HAVE_compare_and_swap_write)# define AO_compare_and_swap_release_write(addr, old, new_val) \ AO_compare_and_swap_write(addr, old, new_val)# define AO_HAVE_compare_and_swap_release_write#endif#if !defined(AO_HAVE_compare_and_swap_release_write) && \ defined(AO_HAVE_compare_and_swap_release)# define AO_compare_and_swap_release_write(addr, old, new_val) \ AO_compare_and_swap_release(addr, old, new_val)# define AO_HAVE_compare_and_swap_release_write#endif#if !defined(AO_HAVE_compare_and_swap_acquire_read) && \ defined(AO_HAVE_compare_and_swap_read)# define AO_compare_and_swap_acquire_read(addr, old, new_val) \ AO_compare_and_swap_read(addr, old, new_val)# define AO_HAVE_compare_and_swap_acquire_read#endif#if !defined(AO_HAVE_compare_and_swap_acquire_read) && \ defined(AO_HAVE_compare_and_swap_acquire)# define AO_compare_and_swap_acquire_read(addr, old, new_val) \ AO_compare_and_swap_acquire(addr, old, new_val)# define AO_HAVE_compare_and_swap_acquire_read#endif#ifdef AO_NO_DD_ORDERING# if defined(AO_HAVE_compare_and_swap_acquire_read)# define AO_compare_and_swap_dd_acquire_read(addr, old, new_val) \ AO_compare_and_swap_acquire_read(addr, old, new_val)# define AO_HAVE_compare_and_swap_dd_acquire_read# endif#else# if defined(AO_HAVE_compare_and_swap)# define AO_compare_and_swap_dd_acquire_read(addr, old, new_val) \ AO_compare_and_swap(addr, old, new_val)# define AO_HAVE_compare_and_swap_dd_acquire_read# endif#endif#include "generalize-small.h"/* Compare_double_and_swap_double */#if defined(AO_HAVE_compare_double_and_swap_double) && defined(AO_HAVE_nop_full)\ && !defined(AO_HAVE_compare_double_and_swap_double_acquire) AO_INLINE int AO_compare_double_and_swap_double_acquire(volatile AO_double_t *addr, AO_t o1, AO_t o2, AO_t n1, AO_t n2) { int result = AO_compare_double_and_swap_double(addr, o1, o2, n1, n2); AO_nop_full(); return result; }# define AO_HAVE_compare_double_and_swap_double_acquire#endif#if defined(AO_HAVE_compare_double_and_swap_double) \ && defined(AO_HAVE_nop_full)\ && !defined(AO_HAVE_compare_double_and_swap_double_release)# define AO_compare_double_and_swap_double_release(addr, o1, o2, n1, n2) \ (AO_nop_full(), AO_compare_double_and_swap_double(addr, o1, o2, n1, n2))# define AO_HAVE_compare_double_and_swap_double_release#endif#if defined(AO_HAVE_compare_double_and_swap_double_full)# if !defined(AO_HAVE_compare_double_and_swap_double_release)# define AO_compare_double_and_swap_double_release(addr, o1, o2, n1, n2) \ AO_compare_double_and_swap_double_full(addr, o1, o2, n1, n2)# define AO_HAVE_compare_double_and_swap_double_release# endif# if !defined(AO_HAVE_compare_double_and_swap_double_acquire)# define AO_compare_double_and_swap_double_acquire(addr, o1, o2, n1, n2) \ AO_compare_double_and_swap_double_full(addr, o1, o2, n1, n2)# define AO_HAVE_compare_double_and_swap_double_acquire# endif# if !defined(AO_HAVE_compare_double_and_swap_double_write)# define AO_compare_double_and_swap_double_write(addr, o1, o2, n1, n2) \ AO_compare_double_and_swap_double_full(addr, o1, o2, n1, n2)# define AO_HAVE_compare_double_and_swap_double_write# endif# if !defined(AO_HAVE_compare_double_and_swap_double_read)# define AO_compare_double_and_swap_double_read(addr, o1, o2, n1, n2) \ AO_compare_double_and_swap_double_full(addr, o1, o2, n1, n2)# define AO_HAVE_compare_double_and_swap_double_read# endif#endif /* AO_HAVE_compare_double_and_swap_double_full */#if !defined(AO_HAVE_compare_double_and_swap_double) && \ defined(AO_HAVE_compare_double_and_swap_double_release)# define AO_compare_double_and_swap_double(addr, o1, o2, n1, n2) \ AO_compare_double_and_swap_double_release(addr, o1, o2, n1, n2)# define AO_HAVE_compare_double_and_swap_double#endif#if !defined(AO_HAVE_compare_double_and_swap_double) && \ defined(AO_HAVE_compare_double_and_swap_double_acquire)# define AO_compare_double_and_swap_double(addr, o1, o2, n1, n2) \ AO_compare_double_and_swap_double_acquire(addr, o1, o2, n1, n2)# define AO_HAVE_compare_double_and_swap_double#endif#if !defined(AO_HAVE_compare_double_and_swap_double) && \ defined(AO_HAVE_compare_double_and_swap_double_write)# define AO_compare_double_and_swap_double(addr, o1, o2, n1, n2) \ AO_compare_double_and_swap_double_write(addr, o1, o2, n1, n2)# define AO_HAVE_compare_double_and_swap_double#endif#if !defined(AO_HAVE_compare_double_and_swap_double) && \ defined(AO_HAVE_compare_double_and_swap_double_read)# define AO_compare_double_and_swap_double(addr, o1, o2, n1, n2) \ AO_compare_double_and_swap_double_read(addr, o1, o2, n1, n2)# define AO_HAVE_compare_double_and_swap_double#endif#if defined(AO_HAVE_compare_double_and_swap_double_acquire) &&\ defined(AO_HAVE_nop_full) && \ !defined(AO_HAVE_compare_double_and_swap_double_full)# define AO_compare_double_and_swap_double_full(addr, o1, o2, n1, n2) \ (AO_nop_full(), AO_compare_double_and_swap_double_acquire(addr, o1, o2, n1, n2))# define AO_HAVE_compare_double_and_swap_double_full#endif#if !defined(AO_HAVE_compare_double_and_swap_double_release_write) && \ defined(AO_HAVE_compare_double_and_swap_double_write)# define AO_compare_double_and_swap_double_release_write(addr, o1, o2, n1, n2) \ AO_compare_double_and_swap_double_write(addr, o1, o2, n1, n2)# define AO_HAVE_compare_double_and_swap_double_release_write#endif#if !defined(AO_HAVE_compare_double_and_swap_double_release_write) && \ defined(AO_HAVE_compare_double_and_swap_double_release)# define AO_compare_double_and_swap_double_release_write(addr, o1, o2, n1, n2) \ AO_compare_double_and_swap_double_release(addr, o1, o2, n1, n2)# define AO_HAVE_compare_double_and_swap_double_release_write#endif#if !defined(AO_HAVE_compare_double_and_swap_double_acquire_read) && \ defined(AO_HAVE_compare_double_and_swap_double_read)# define AO_compare_double_and_swap_double_acquire_read(addr, o1, o2, n1, n2) \ AO_compare_double_and_swap_double_read(addr, o1, o2, n1, n2)# define AO_HAVE_compare_double_and_swap_double_acquire_read#endif#if !defined(AO_HAVE_compare_double_and_swap_double_acquire_read) && \ defined(AO_HAVE_compare_double_and_swap_double_acquire)# define AO_compare_double_and_swap_double_acquire_read(addr, o1, o2, n1, n2) \ AO_compare_double_and_swap_double_acquire(addr, o1, o2, n1, n2)# define AO_HAVE_compare_double_and_swap_double_acquire_read#endif#ifdef AO_NO_DD_ORDERING# if defined(AO_HAVE_compare_double_and_swap_double_acquire_read)# define AO_compare_double_and_swap_double_dd_acquire_read(addr, o1, o2, n1, n2) \ AO_compare_double_and_swap_double_acquire_read(addr, o1, o2, n1, n2)# define AO_HAVE_compare_double_and_swap_double_dd_acquire_read# endif#else# if defined(AO_HAVE_compare_double_and_swap_double)# define AO_compare_double_and_swap_double_dd_acquire_read(addr, o1, o2, n1, n2) \ AO_compare_double_and_swap_double(addr, o1, o2, n1, n2)# define AO_HAVE_compare_double_and_swap_double_dd_acquire_read# endif#endif/* Compare_and_swap_double */#if defined(AO_HAVE_compare_and_swap_double) && defined(AO_HAVE_nop_full)\ && !defined(AO_HAVE_compare_and_swap_double_acquire) AO_INLINE int AO_compare_and_swap_double_acquire(volatile AO_double_t *addr, AO_t o1, AO_t o2, AO_t n1, AO_t n2) { int result = AO_compare_and_swap_double(addr, o1, n1, n2); AO_nop_full(); return result; }# define AO_HAVE_compare_and_swap_double_acquire#endif#if defined(AO_HAVE_compare_and_swap_double) \ && defined(AO_HAVE_nop_full)\ && !defined(AO_HAVE_compare_and_swap_double_release)# define AO_compare_and_swap_double_release(addr, o1, n1, n2) \ (AO_nop_full(), AO_compare_and_swap_double(addr, o1, n1, n2))# define AO_HAVE_compare_and_swap_double_release#endif#if defined(AO_HAVE_compare_and_swap_double_full)# if !defined(AO_HAVE_compare_and_swap_double_release)# define AO_compare_and_swap_double_release(addr, o1, n1, n2) \ AO_compare_and_swap_double_full(addr, o1, n1, n2)# define AO_HAVE_compare_and_swap_double_release# endif# if !defined(AO_HAVE_compare_and_swap_double_acquire)# define AO_compare_and_swap_double_acquire(addr, o1, n1, n2) \ AO_compare_and_swap_double_full(addr, o1, n1, n2)# define AO_HAVE_compare_and_swap_double_acquire# endif# if !defined(AO_HAVE_compare_and_swap_double_write)# define AO_compare_and_swap_double_write(addr, o1, n1, n2) \ AO_compare_and_swap_double_full(addr, o1, n1, n2)# define AO_HAVE_compare_and_swap_double_write# endif# if !defined(AO_HAVE_compare_and_swap_double_read)# define AO_compare_and_swap_double_read(addr, o1, n1, n2) \ AO_compare_and_swap_double_full(addr, o1, n1, n2)# define AO_HAVE_compare_and_swap_double_read# endif#endif /* AO_HAVE_compare_and_swap_double_full */#if !defined(AO_HAVE_compare_and_swap_double) && \ defined(AO_HAVE_compare_and_swap_double_release)# define AO_compare_and_swap_double(addr, o1, n1, n2) \ AO_compare_and_swap_double_release(addr, o1, n1, n2)# define AO_HAVE_compare_and_swap_double#endif#if !defined(AO_HAVE_compare_and_swap_double) && \ defined(AO_HAVE_compare_and_swap_double_acquire)# define AO_compare_and_swap_double(addr, o1, n1, n2) \ AO_compare_and_swap_double_acquire(addr, o1, n1, n2)# define AO_HAVE_compare_and_swap_double#endif#if !defined(AO_HAVE_compare_and_swap_double) && \ defined(AO_HAVE_compare_and_swap_double_write)# define AO_compare_and_swap_double(addr, o1, n1, n2) \ AO_compare_and_swap_double_write(addr, o1, n1, n2)# define AO_HAVE_compare_and_swap_double#endif#if !defined(AO_HAVE_compare_and_swap_double) && \ defined(AO_HAVE_compare_and_swap_double_read)# define AO_compare_and_swap_double(addr, o1, n1, n2) \ AO_compare_and_swap_double_read(addr, o1, n1, n2)# define AO_HAVE_compare_and_swap_double#endif#if defined(AO_HAVE_compare_and_swap_double_acquire) &&\ defined(AO_HAVE_nop_full) && \ !defined(AO_HAVE_compare_and_swap_double_full)# define AO_compare_and_swap_double_full(addr, o1, n1, n2) \ (AO_nop_full(), AO_compare_and_swap_double_acquire(addr, o1, n1, n2))# define AO_HAVE_compare_and_swap_double_full#endif#if !defined(AO_HAVE_compare_and_swap_double_release_write) && \ defined(AO_HAVE_compare_and_swap_double_write)# define AO_compare_and_swap_double_release_write(addr, o1, n1, n2) \ AO_compare_and_swap_double_write(addr, o1, n1, n2)# define AO_HAVE_compare_and_swap_double_release_write#endif#if !defined(AO_HAVE_compare_and_swap_double_release_write) && \ defined(AO_HAVE_compare_and_swap_double_release)# define AO_compare_and_swap_double_release_write(addr, o1, n1, n2) \ AO_compare_and_swap_double_release(addr, o1, n1, n2)# define AO_HAVE_compare_and_swap_double_release_write#endif#if !defined(AO_HAVE_compare_and_swap_double_acquire_read) && \ defined(AO_HAVE_compare_and_swap_double_read)# define AO_compare_and_swap_double_acquire_read(addr, o1, n1, n2) \ AO_compare_and_swap_double_read(addr, o1, n1, n2)# define AO_HAVE_compare_and_swap_double_acquire_read#endif#if !defined(AO_HAVE_compare_and_swap_double_acquire_read) && \ defined(AO_HAVE_compare_and_swap_double_acquire)# define AO_compare_and_swap_double_acquire_read(addr, o1, n1, n2) \ AO_compare_and_swap_double_acquire(addr, o1, n1, n2)# define AO_HAVE_compare_and_swap_double_acquire_read#endif#ifdef AO_NO_DD_ORDERING# if defined(AO_HAVE_compare_and_swap_double_acquire_read)# define AO_compare_and_swap_double_dd_acquire_read(addr, o1, n1, n2) \ AO_compare_and_swap_double_acquire_read(addr, o1, n1, n2)# define AO_HAVE_compare_and_swap_double_dd_acquire_read# endif#else# if defined(AO_HAVE_compare_and_swap_double)# define AO_compare_and_swap_double_dd_acquire_read(addr, o1, n1, n2) \ AO_compare_and_swap_double(addr, o1, n1, n2)# define AO_HAVE_compare_and_swap_double_dd_acquire_read# endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -