⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 generalize.h

📁 一个检测内存泄漏情况的工具
💻 H
📖 第 1 页 / 共 3 页
字号:
#  define AO_fetch_and_add_release_write(addr, val) \  	AO_fetch_and_add_write(addr, val)#  define AO_HAVE_fetch_and_add_release_write#endif#if !defined(AO_HAVE_fetch_and_add_release_write) && \    defined(AO_HAVE_fetch_and_add_release)#  define AO_fetch_and_add_release_write(addr, val) \  	AO_fetch_and_add_release(addr, val)#  define AO_HAVE_fetch_and_add_release_write#endif#if !defined(AO_HAVE_fetch_and_add_acquire_read) && \    defined(AO_HAVE_fetch_and_add_read)#  define AO_fetch_and_add_acquire_read(addr, val) \  	AO_fetch_and_add_read(addr, val)#  define AO_HAVE_fetch_and_add_acquire_read#endif#if !defined(AO_HAVE_fetch_and_add_acquire_read) && \    defined(AO_HAVE_fetch_and_add_acquire)#  define AO_fetch_and_add_acquire_read(addr, val) \  	AO_fetch_and_add_acquire(addr, val)#  define AO_HAVE_fetch_and_add_acquire_read#endif#ifdef AO_NO_DD_ORDERING#  if defined(AO_HAVE_fetch_and_add_acquire_read)#    define AO_fetch_and_add_dd_acquire_read(addr, val) \	AO_fetch_and_add_acquire_read(addr, val)#    define AO_HAVE_fetch_and_add_dd_acquire_read#  endif#else#  if defined(AO_HAVE_fetch_and_add)#    define AO_fetch_and_add_dd_acquire_read(addr, val) \	AO_fetch_and_add(addr, val)#    define AO_HAVE_fetch_and_add_dd_acquire_read#  endif#endif  /* Fetch_and_add1 */#if defined(AO_HAVE_fetch_and_add_full) &&\    !defined(AO_HAVE_fetch_and_add1_full)#  define AO_fetch_and_add1_full(addr) AO_fetch_and_add_full(addr,1)#  define AO_HAVE_fetch_and_add1_full#endif#if defined(AO_HAVE_fetch_and_add_release) &&\    !defined(AO_HAVE_fetch_and_add1_release)#  define AO_fetch_and_add1_release(addr) AO_fetch_and_add_release(addr,1)#  define AO_HAVE_fetch_and_add1_release#endif#if defined(AO_HAVE_fetch_and_add_acquire) &&\    !defined(AO_HAVE_fetch_and_add1_acquire)#  define AO_fetch_and_add1_acquire(addr) AO_fetch_and_add_acquire(addr,1)#  define AO_HAVE_fetch_and_add1_acquire#endif#if defined(AO_HAVE_fetch_and_add_write) &&\    !defined(AO_HAVE_fetch_and_add1_write)#  define AO_fetch_and_add1_write(addr) AO_fetch_and_add_write(addr,1)#  define AO_HAVE_fetch_and_add1_write#endif#if defined(AO_HAVE_fetch_and_add_read) &&\    !defined(AO_HAVE_fetch_and_add1_read)#  define AO_fetch_and_add1_read(addr) AO_fetch_and_add_read(addr,1)#  define AO_HAVE_fetch_and_add1_read#endif#if defined(AO_HAVE_fetch_and_add_release_write) &&\    !defined(AO_HAVE_fetch_and_add1_release_write)#  define AO_fetch_and_add1_release_write(addr) \	AO_fetch_and_add_release_write(addr,1)#  define AO_HAVE_fetch_and_add1_release_write#endif#if defined(AO_HAVE_fetch_and_add_acquire_read) &&\    !defined(AO_HAVE_fetch_and_add1_acquire_read)#  define AO_fetch_and_add1_acquire_read(addr) \	AO_fetch_and_add_acquire_read(addr,1)#  define AO_HAVE_fetch_and_add1_acquire_read#endif#if defined(AO_HAVE_fetch_and_add) &&\    !defined(AO_HAVE_fetch_and_add1)#  define AO_fetch_and_add1(addr) \	AO_fetch_and_add(addr,1)#  define AO_HAVE_fetch_and_add1#endif#if defined(AO_HAVE_fetch_and_add1_full)#  if !defined(AO_HAVE_fetch_and_add1_release)#    define AO_fetch_and_add1_release(addr) \  	 AO_fetch_and_add1_full(addr)#    define AO_HAVE_fetch_and_add1_release#  endif#  if !defined(AO_HAVE_fetch_and_add1_acquire)#    define AO_fetch_and_add1_acquire(addr) \  	 AO_fetch_and_add1_full(addr)#    define AO_HAVE_fetch_and_add1_acquire#  endif#  if !defined(AO_HAVE_fetch_and_add1_write)#    define AO_fetch_and_add1_write(addr) \  	 AO_fetch_and_add1_full(addr)#    define AO_HAVE_fetch_and_add1_write#  endif#  if !defined(AO_HAVE_fetch_and_add1_read)#    define AO_fetch_and_add1_read(addr) \  	 AO_fetch_and_add1_full(addr)#    define AO_HAVE_fetch_and_add1_read#  endif#endif /* AO_HAVE_fetch_and_add1_full */#if !defined(AO_HAVE_fetch_and_add1) && \    defined(AO_HAVE_fetch_and_add1_release)#  define AO_fetch_and_add1(addr) \  	AO_fetch_and_add1_release(addr)#  define AO_HAVE_fetch_and_add1#endif#if !defined(AO_HAVE_fetch_and_add1) && \    defined(AO_HAVE_fetch_and_add1_acquire)#  define AO_fetch_and_add1(addr) \  	AO_fetch_and_add1_acquire(addr)#  define AO_HAVE_fetch_and_add1#endif#if !defined(AO_HAVE_fetch_and_add1) && \    defined(AO_HAVE_fetch_and_add1_write)#  define AO_fetch_and_add1(addr) \  	AO_fetch_and_add1_write(addr)#  define AO_HAVE_fetch_and_add1#endif#if !defined(AO_HAVE_fetch_and_add1) && \    defined(AO_HAVE_fetch_and_add1_read)#  define AO_fetch_and_add1(addr) \  	AO_fetch_and_add1_read(addr)#  define AO_HAVE_fetch_and_add1#endif#if defined(AO_HAVE_fetch_and_add1_acquire) &&\    defined(AO_HAVE_nop_full) && \    !defined(AO_HAVE_fetch_and_add1_full)#  define AO_fetch_and_add1_full(addr) \  	(AO_nop_full(), AO_fetch_and_add1_acquire(addr))#  define AO_HAVE_fetch_and_add1_full#endif#if !defined(AO_HAVE_fetch_and_add1_release_write) && \    defined(AO_HAVE_fetch_and_add1_write)#  define AO_fetch_and_add1_release_write(addr) \  	AO_fetch_and_add1_write(addr)#  define AO_HAVE_fetch_and_add1_release_write#endif#if !defined(AO_HAVE_fetch_and_add1_release_write) && \    defined(AO_HAVE_fetch_and_add1_release)#  define AO_fetch_and_add1_release_write(addr) \  	AO_fetch_and_add1_release(addr)#  define AO_HAVE_fetch_and_add1_release_write#endif#if !defined(AO_HAVE_fetch_and_add1_acquire_read) && \    defined(AO_HAVE_fetch_and_add1_read)#  define AO_fetch_and_add1_acquire_read(addr) \  	AO_fetch_and_add1_read(addr)#  define AO_HAVE_fetch_and_add1_acquire_read#endif#if !defined(AO_HAVE_fetch_and_add1_acquire_read) && \    defined(AO_HAVE_fetch_and_add1_acquire)#  define AO_fetch_and_add1_acquire_read(addr) \  	AO_fetch_and_add1_acquire(addr)#  define AO_HAVE_fetch_and_add1_acquire_read#endif#ifdef AO_NO_DD_ORDERING#  if defined(AO_HAVE_fetch_and_add1_acquire_read)#    define AO_fetch_and_add1_dd_acquire_read(addr) \	AO_fetch_and_add1_acquire_read(addr)#    define AO_HAVE_fetch_and_add1_dd_acquire_read#  endif#else#  if defined(AO_HAVE_fetch_and_add1)#    define AO_fetch_and_add1_dd_acquire_read(addr) AO_fetch_and_add1(addr)#    define AO_HAVE_fetch_and_add1_dd_acquire_read#  endif#endif/* Fetch_and_sub1 */#if defined(AO_HAVE_fetch_and_add_full) &&\    !defined(AO_HAVE_fetch_and_sub1_full)#  define AO_fetch_and_sub1_full(addr) AO_fetch_and_add_full(addr,(AO_t)(-1))#  define AO_HAVE_fetch_and_sub1_full#endif#if defined(AO_HAVE_fetch_and_add_release) &&\    !defined(AO_HAVE_fetch_and_sub1_release)#  define AO_fetch_and_sub1_release(addr) \	AO_fetch_and_add_release(addr,(AO_t)(-1))#  define AO_HAVE_fetch_and_sub1_release#endif#if defined(AO_HAVE_fetch_and_add_acquire) &&\    !defined(AO_HAVE_fetch_and_sub1_acquire)#  define AO_fetch_and_sub1_acquire(addr) \	AO_fetch_and_add_acquire(addr,(AO_t)(-1))#  define AO_HAVE_fetch_and_sub1_acquire#endif#if defined(AO_HAVE_fetch_and_add_write) &&\    !defined(AO_HAVE_fetch_and_sub1_write)#  define AO_fetch_and_sub1_write(addr) \	AO_fetch_and_add_write(addr,(AO_t)(-1))#  define AO_HAVE_fetch_and_sub1_write#endif#if defined(AO_HAVE_fetch_and_add_read) &&\    !defined(AO_HAVE_fetch_and_sub1_read)#  define AO_fetch_and_sub1_read(addr) \	AO_fetch_and_add_read(addr,(AO_t)(-1))#  define AO_HAVE_fetch_and_sub1_read#endif#if defined(AO_HAVE_fetch_and_add_release_write) &&\    !defined(AO_HAVE_fetch_and_sub1_release_write)#  define AO_fetch_and_sub1_release_write(addr) \	AO_fetch_and_add_release_write(addr,(AO_t)(-1))#  define AO_HAVE_fetch_and_sub1_release_write#endif#if defined(AO_HAVE_fetch_and_add_acquire_read) &&\    !defined(AO_HAVE_fetch_and_sub1_acquire_read)#  define AO_fetch_and_sub1_acquire_read(addr) \	AO_fetch_and_add_acquire_read(addr,(AO_t)(-1))#  define AO_HAVE_fetch_and_sub1_acquire_read#endif#if defined(AO_HAVE_fetch_and_add) &&\    !defined(AO_HAVE_fetch_and_sub1)#  define AO_fetch_and_sub1(addr) \	AO_fetch_and_add(addr,(AO_t)(-1))#  define AO_HAVE_fetch_and_sub1#endif#if defined(AO_HAVE_fetch_and_sub1_full)#  if !defined(AO_HAVE_fetch_and_sub1_release)#    define AO_fetch_and_sub1_release(addr) \  	 AO_fetch_and_sub1_full(addr)#    define AO_HAVE_fetch_and_sub1_release#  endif#  if !defined(AO_HAVE_fetch_and_sub1_acquire)#    define AO_fetch_and_sub1_acquire(addr) \  	 AO_fetch_and_sub1_full(addr)#    define AO_HAVE_fetch_and_sub1_acquire#  endif#  if !defined(AO_HAVE_fetch_and_sub1_write)#    define AO_fetch_and_sub1_write(addr) \  	 AO_fetch_and_sub1_full(addr)#    define AO_HAVE_fetch_and_sub1_write#  endif#  if !defined(AO_HAVE_fetch_and_sub1_read)#    define AO_fetch_and_sub1_read(addr) \  	 AO_fetch_and_sub1_full(addr)#    define AO_HAVE_fetch_and_sub1_read#  endif#endif /* AO_HAVE_fetch_and_sub1_full */#if !defined(AO_HAVE_fetch_and_sub1) && \    defined(AO_HAVE_fetch_and_sub1_release)#  define AO_fetch_and_sub1(addr) \  	AO_fetch_and_sub1_release(addr)#  define AO_HAVE_fetch_and_sub1#endif#if !defined(AO_HAVE_fetch_and_sub1) && \    defined(AO_HAVE_fetch_and_sub1_acquire)#  define AO_fetch_and_sub1(addr) \  	AO_fetch_and_sub1_acquire(addr)#  define AO_HAVE_fetch_and_sub1#endif#if !defined(AO_HAVE_fetch_and_sub1) && \    defined(AO_HAVE_fetch_and_sub1_write)#  define AO_fetch_and_sub1(addr) \  	AO_fetch_and_sub1_write(addr)#  define AO_HAVE_fetch_and_sub1#endif#if !defined(AO_HAVE_fetch_and_sub1) && \    defined(AO_HAVE_fetch_and_sub1_read)#  define AO_fetch_and_sub1(addr) \  	AO_fetch_and_sub1_read(addr)#  define AO_HAVE_fetch_and_sub1#endif#if defined(AO_HAVE_fetch_and_sub1_acquire) &&\    defined(AO_HAVE_nop_full) && \    !defined(AO_HAVE_fetch_and_sub1_full)#  define AO_fetch_and_sub1_full(addr) \  	(AO_nop_full(), AO_fetch_and_sub1_acquire(addr))#  define AO_HAVE_fetch_and_sub1_full#endif#if !defined(AO_HAVE_fetch_and_sub1_release_write) && \    defined(AO_HAVE_fetch_and_sub1_write)#  define AO_fetch_and_sub1_release_write(addr) \  	AO_fetch_and_sub1_write(addr)#  define AO_HAVE_fetch_and_sub1_release_write#endif#if !defined(AO_HAVE_fetch_and_sub1_release_write) && \    defined(AO_HAVE_fetch_and_sub1_release)#  define AO_fetch_and_sub1_release_write(addr) \  	AO_fetch_and_sub1_release(addr)#  define AO_HAVE_fetch_and_sub1_release_write#endif#if !defined(AO_HAVE_fetch_and_sub1_acquire_read) && \    defined(AO_HAVE_fetch_and_sub1_read)#  define AO_fetch_and_sub1_acquire_read(addr) \  	AO_fetch_and_sub1_read(addr)#  define AO_HAVE_fetch_and_sub1_acquire_read#endif#if !defined(AO_HAVE_fetch_and_sub1_acquire_read) && \    defined(AO_HAVE_fetch_and_sub1_acquire)#  define AO_fetch_and_sub1_acquire_read(addr) \  	AO_fetch_and_sub1_acquire(addr)#  define AO_HAVE_fetch_and_sub1_acquire_read#endif#ifdef AO_NO_DD_ORDERING#  if defined(AO_HAVE_fetch_and_sub1_acquire_read)#    define AO_fetch_and_sub1_dd_acquire_read(addr) \	AO_fetch_and_sub1_acquire_read(addr)#    define AO_HAVE_fetch_and_sub1_dd_acquire_read#  endif#else#  if defined(AO_HAVE_fetch_and_sub1)#    define AO_fetch_and_sub1_dd_acquire_read(addr) AO_fetch_and_sub1(addr)#    define AO_HAVE_fetch_and_sub1_dd_acquire_read#  endif#endif/* Atomic or */#if defined(AO_HAVE_compare_and_swap_full) && \    !defined(AO_HAVE_or_full)   AO_INLINE void   AO_or_full(volatile AO_t *addr, AO_t incr)   {     AO_t old;     do       {         old = *addr;       }     while (!AO_compare_and_swap_full(addr, old, (old | incr)));   }#  define AO_HAVE_or_full#endif#if defined(AO_HAVE_or_full)#  if !defined(AO_HAVE_or_release)#    define AO_or_release(addr, val) \  	 AO_or_full(addr, val)#    define AO_HAVE_or_release#  endif#  if !defined(AO_HAVE_or_acquire)#    define AO_or_acquire(addr, val) \  	 AO_or_full(addr, val)#    define AO_HAVE_or_acquire#  endif#  if !defined(AO_HAVE_or_write)#    define AO_or_write(addr, val) \  	 AO_or_full(addr, val)#    define AO_HAVE_or_write#  endif#  if !defined(AO_HAVE_or_read)#    define AO_or_read(addr, val) \  	 AO_or_full(addr, val)#    define AO_HAVE_or_read#  endif#endif /* AO_HAVE_or_full */#if !defined(AO_HAVE_or) && \    defined(AO_HAVE_or_release)#  define AO_or(addr, val) \  	AO_or_release(addr, val)#  define AO_HAVE_or#endif#if !defined(AO_HAVE_or) && \    defined(AO_HAVE_or_acquire)#  define AO_or(addr, val) \  	AO_or_acquire(addr, val)#  define AO_HAVE_or#endif#if !defined(AO_HAVE_or) && \    defined(AO_HAVE_or_write)#  define AO_or(addr, val) \  	AO_or_write(addr, val)#  define AO_HAVE_or#endif#if !defined(AO_HAVE_or) && \    defined(AO_HAVE_or_read)#  define AO_or(addr, val) \  	AO_or_read(addr, val)#  define AO_HAVE_or#endif#if defined(AO_HAVE_or_acquire) &&\    defined(AO_HAVE_nop_full) && \    !defined(AO_HAVE_or_full)#  define AO_or_full(addr, val) \  	(AO_nop_full(), AO_or_acquire(addr, val))#endif#if !defined(AO_HAVE_or_release_write) && \    defined(AO_HAVE_or_write)#  define AO_or_release_write(addr, val) \  	AO_or_write(addr, val)#  define AO_HAVE_or_release_write#endif#if !defined(AO_HAVE_or_release_write) && \    defined(AO_HAVE_or_release)#  define AO_or_release_write(addr, val) \  	AO_or_release(addr, val)#  define AO_HAVE_or_release_write#endif#if !defined(AO_HAVE_or_acquire_read) && \    defined(AO_HAVE_or_read)#  define AO_or_acquire_read(addr, val) \  	AO_or_read(addr, val)#  define AO_HAVE_or_acquire_read#endif#if !defined(AO_HAVE_or_acquire_read) && \    defined(AO_HAVE_or_acquire)#  define AO_or_acquire_read(addr, val) \  	AO_or_acquire(addr, val)#  define AO_HAVE_or_acquire_read#endif/* dd_aquire_read is meaningless.	*/  /* Test_and_set */  #if defined(AO_HAVE_test_and_set_full)#  if !defined(AO_HAVE_test_and_set_release)#    define AO_test_and_set_release(addr) \  	 AO_test_and_set_full(addr)#    define AO_HAVE_test_and_set_release#  endif#  if !defined(AO_HAVE_test_and_set_acquire)#    define AO_test_and_set_acquire(addr) \  	 AO_test_and_set_full(addr)#    define AO_HAVE_test_and_set_acquire

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -