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

📄 generalize-small.h

📁 一个检测内存泄漏情况的工具
💻 H
📖 第 1 页 / 共 5 页
字号:
#  define AO_short_fetch_and_sub1_release_write(addr) \	AO_short_fetch_and_add_release_write(addr,(unsigned short)(-1))#  define AO_HAVE_short_fetch_and_sub1_release_write#endif#if defined(AO_HAVE_short_fetch_and_add_acquire_read) &&\    !defined(AO_HAVE_short_fetch_and_sub1_acquire_read)#  define AO_short_fetch_and_sub1_acquire_read(addr) \	AO_short_fetch_and_add_acquire_read(addr,(unsigned short)(-1))#  define AO_HAVE_short_fetch_and_sub1_acquire_read#endif#if defined(AO_HAVE_short_fetch_and_add) &&\    !defined(AO_HAVE_short_fetch_and_sub1)#  define AO_short_fetch_and_sub1(addr) \	AO_short_fetch_and_add(addr,(unsigned short)(-1))#  define AO_HAVE_short_fetch_and_sub1#endif#if defined(AO_HAVE_short_fetch_and_sub1_full)#  if !defined(AO_HAVE_short_fetch_and_sub1_release)#    define AO_short_fetch_and_sub1_release(addr) \  	 AO_short_fetch_and_sub1_full(addr)#    define AO_HAVE_short_fetch_and_sub1_release#  endif#  if !defined(AO_HAVE_short_fetch_and_sub1_acquire)#    define AO_short_fetch_and_sub1_acquire(addr) \  	 AO_short_fetch_and_sub1_full(addr)#    define AO_HAVE_short_fetch_and_sub1_acquire#  endif#  if !defined(AO_HAVE_short_fetch_and_sub1_write)#    define AO_short_fetch_and_sub1_write(addr) \  	 AO_short_fetch_and_sub1_full(addr)#    define AO_HAVE_short_fetch_and_sub1_write#  endif#  if !defined(AO_HAVE_short_fetch_and_sub1_read)#    define AO_short_fetch_and_sub1_read(addr) \  	 AO_short_fetch_and_sub1_full(addr)#    define AO_HAVE_short_fetch_and_sub1_read#  endif#endif /* AO_HAVE_short_fetch_and_sub1_full */#if !defined(AO_HAVE_short_fetch_and_sub1) && \    defined(AO_HAVE_short_fetch_and_sub1_release)#  define AO_short_fetch_and_sub1(addr) \  	AO_short_fetch_and_sub1_release(addr)#  define AO_HAVE_short_fetch_and_sub1#endif#if !defined(AO_HAVE_short_fetch_and_sub1) && \    defined(AO_HAVE_short_fetch_and_sub1_acquire)#  define AO_short_fetch_and_sub1(addr) \  	AO_short_fetch_and_sub1_acquire(addr)#  define AO_HAVE_short_fetch_and_sub1#endif#if !defined(AO_HAVE_short_fetch_and_sub1) && \    defined(AO_HAVE_short_fetch_and_sub1_write)#  define AO_short_fetch_and_sub1(addr) \  	AO_short_fetch_and_sub1_write(addr)#  define AO_HAVE_short_fetch_and_sub1#endif#if !defined(AO_HAVE_short_fetch_and_sub1) && \    defined(AO_HAVE_short_fetch_and_sub1_read)#  define AO_short_fetch_and_sub1(addr) \  	AO_short_fetch_and_sub1_read(addr)#  define AO_HAVE_short_fetch_and_sub1#endif#if defined(AO_HAVE_short_fetch_and_sub1_acquire) &&\    defined(AO_HAVE_nop_full) && \    !defined(AO_HAVE_short_fetch_and_sub1_full)#  define AO_short_fetch_and_sub1_full(addr) \  	(AO_nop_full(), AO_short_fetch_and_sub1_acquire(addr))#  define AO_HAVE_short_fetch_and_sub1_full#endif#if !defined(AO_HAVE_short_fetch_and_sub1_release_write) && \    defined(AO_HAVE_short_fetch_and_sub1_write)#  define AO_short_fetch_and_sub1_release_write(addr) \  	AO_short_fetch_and_sub1_write(addr)#  define AO_HAVE_short_fetch_and_sub1_release_write#endif#if !defined(AO_HAVE_short_fetch_and_sub1_release_write) && \    defined(AO_HAVE_short_fetch_and_sub1_release)#  define AO_short_fetch_and_sub1_release_write(addr) \  	AO_short_fetch_and_sub1_release(addr)#  define AO_HAVE_short_fetch_and_sub1_release_write#endif#if !defined(AO_HAVE_short_fetch_and_sub1_acquire_read) && \    defined(AO_HAVE_short_fetch_and_sub1_read)#  define AO_short_fetch_and_sub1_acquire_read(addr) \  	AO_short_fetch_and_sub1_read(addr)#  define AO_HAVE_short_fetch_and_sub1_acquire_read#endif#if !defined(AO_HAVE_short_fetch_and_sub1_acquire_read) && \    defined(AO_HAVE_short_fetch_and_sub1_acquire)#  define AO_short_fetch_and_sub1_acquire_read(addr) \  	AO_short_fetch_and_sub1_acquire(addr)#  define AO_HAVE_short_fetch_and_sub1_acquire_read#endif#ifdef AO_NO_DD_ORDERING#  if defined(AO_HAVE_short_fetch_and_sub1_acquire_read)#    define AO_short_fetch_and_sub1_dd_acquire_read(addr) \	AO_short_fetch_and_sub1_acquire_read(addr)#    define AO_HAVE_short_fetch_and_sub1_dd_acquire_read#  endif#else#  if defined(AO_HAVE_short_fetch_and_sub1)#    define AO_short_fetch_and_sub1_dd_acquire_read(addr) \	AO_short_fetch_and_sub1(addr)#    define AO_HAVE_short_fetch_and_sub1_dd_acquire_read#  endif#endif/* int_load */#if defined(AO_HAVE_int_load_acquire) && !defined(AO_HAVE_int_load)#  define AO_int_load(addr) AO_int_load_acquire(addr)#  define AO_HAVE_int_load#endif#if defined(AO_HAVE_int_load_full) && !defined(AO_HAVE_int_load_acquire)#  define AO_int_load_acquire(addr) AO_int_load_full(addr)#  define AO_HAVE_int_load_acquire#endif#if defined(AO_HAVE_int_load_full) && !defined(AO_HAVE_int_load_read)#  define AO_int_load_read(addr) AO_int_load_full(addr)#  define AO_HAVE_int_load_read#endif#if !defined(AO_HAVE_int_load_acquire_read) && defined(AO_HAVE_int_load_acquire)#  define AO_int_load_acquire_read(addr) AO_int_load_acquire(addr)#  define AO_HAVE_int_load_acquire_read#endif#if defined(AO_HAVE_int_load) && defined(AO_HAVE_nop_full) && \    !defined(AO_HAVE_int_load_acquire)   AO_INLINE unsigned int   AO_int_load_acquire(volatile unsigned int *addr)   {     unsigned int result = AO_int_load(addr);     /* Acquire barrier would be useless, since the load could be delayed  */     /* beyond it.							   */     AO_nop_full();     return result;   }#  define AO_HAVE_int_load_acquire#endif#if defined(AO_HAVE_int_load) && defined(AO_HAVE_nop_read) && \    !defined(AO_HAVE_int_load_read)   AO_INLINE unsigned int   AO_int_load_read(volatile unsigned int *addr)   {     unsigned int result = AO_int_load(addr);     /* Acquire barrier would be useless, since the load could be delayed  */     /* beyond it.							   */     AO_nop_read();     return result;   }#  define AO_HAVE_int_load_read#endif#if defined(AO_HAVE_int_load_acquire) && defined(AO_HAVE_nop_full) && \    !defined(AO_HAVE_int_load_full)#  define AO_int_load_full(addr) (AO_nop_full(), AO_int_load_acquire(addr))#  define AO_HAVE_int_load_full#endif #if !defined(AO_HAVE_int_load_acquire_read) && defined(AO_HAVE_int_load_read)#  define AO_int_load_acquire_read(addr) AO_int_load_read(addr)#  define AO_HAVE_int_load_acquire_read#endif#if defined(AO_HAVE_int_load_acquire_read) && !defined(AO_HAVE_int_load)#  define AO_int_load(addr) AO_int_load_acquire_read(addr)#  define AO_HAVE_int_load#endif#ifdef AO_NO_DD_ORDERING#  if defined(AO_HAVE_int_load_acquire_read)#    define AO_int_load_dd_acquire_read(addr) \	AO_int_load_acquire_read(addr)#    define AO_HAVE_int_load_dd_acquire_read#  endif#else#  if defined(AO_HAVE_int_load)#    define AO_int_load_dd_acquire_read(addr) \	AO_int_load(addr)#    define AO_HAVE_int_load_dd_acquire_read#  endif#endif/* int_store */#if defined(AO_HAVE_int_store_release) && !defined(AO_HAVE_int_store)#  define AO_int_store(addr, val) AO_int_store_release(addr,val)#  define AO_HAVE_int_store#endif#if defined(AO_HAVE_int_store_full) && !defined(AO_HAVE_int_store_release)#  define AO_int_store_release(addr,val) AO_int_store_full(addr,val)#  define AO_HAVE_int_store_release#endif#if defined(AO_HAVE_int_store_full) && !defined(AO_HAVE_int_store_write)#  define AO_int_store_write(addr,val) AO_int_store_full(addr,val)#  define AO_HAVE_int_store_write#endif#if defined(AO_HAVE_int_store_release) && \	!defined(AO_HAVE_int_store_release_write)#  define AO_int_store_release_write(addr, val) \	AO_int_store_release(addr,val)#  define AO_HAVE_int_store_release_write#endif#if defined(AO_HAVE_int_store_write) && !defined(AO_HAVE_int_store)#  define AO_int_store(addr, val) AO_int_store_write(addr,val)#  define AO_HAVE_int_store#endif#if defined(AO_HAVE_int_store) && defined(AO_HAVE_nop_full) && \    !defined(AO_HAVE_int_store_release)#  define AO_int_store_release(addr,val) \	(AO_nop_full(), AO_int_store(addr,val))#  define AO_HAVE_int_store_release#endif#if defined(AO_HAVE_nop_write) && defined(AO_HAVE_int_store) && \     !defined(AO_HAVE_int_store_write)#  define AO_int_store_write(addr, val) \	(AO_nop_write(), AO_int_store(addr,val))#  define AO_HAVE_int_store_write#endif#if defined(AO_HAVE_int_store_write) && \     !defined(AO_HAVE_int_store_release_write)#  define AO_int_store_release_write(addr, val) AO_int_store_write(addr,val)#  define AO_HAVE_int_store_release_write#endif#if defined(AO_HAVE_int_store_release) && defined(AO_HAVE_nop_full) && \    !defined(AO_HAVE_int_store_full)#  define AO_int_store_full(addr, val) \	(AO_int_store_release(addr, val), AO_nop_full())#  define AO_HAVE_int_store_full#endif/* int_fetch_and_add */#if defined(AO_HAVE_int_compare_and_swap_full) && \    !defined(AO_HAVE_int_fetch_and_add_full)   AO_INLINE AO_t   AO_int_fetch_and_add_full(volatile unsigned int *addr,   			       unsigned int incr)   {     unsigned int old;     do       {         old = *addr;       }     while (!AO_int_compare_and_swap_full(addr, old, old+incr));     return old;   }#  define AO_HAVE_int_fetch_and_add_full#endif#if defined(AO_HAVE_int_compare_and_swap_acquire) && \    !defined(AO_HAVE_int_fetch_and_add_acquire)   AO_INLINE AO_t   AO_int_fetch_and_add_acquire(volatile unsigned int *addr,   				  unsigned int incr)   {     unsigned int old;     do       {         old = *addr;       }     while (!AO_int_compare_and_swap_acquire(addr, old, old+incr));     return old;   }#  define AO_HAVE_int_fetch_and_add_acquire#endif#if defined(AO_HAVE_int_compare_and_swap_release) && \    !defined(AO_HAVE_int_fetch_and_add_release)   AO_INLINE AO_t   AO_int_fetch_and_add_release(volatile unsigned int *addr,   				  unsigned int incr)   {     unsigned int old;     do       {         old = *addr;       }     while (!AO_int_compare_and_swap_release(addr, old, old+incr));     return old;   }#  define AO_HAVE_int_fetch_and_add_release#endif#if defined(AO_HAVE_int_fetch_and_add_full)#  if !defined(AO_HAVE_int_fetch_and_add_release)#    define AO_int_fetch_and_add_release(addr, val) \  	 AO_int_fetch_and_add_full(addr, val)#    define AO_HAVE_int_fetch_and_add_release#  endif#  if !defined(AO_HAVE_int_fetch_and_add_acquire)#    define AO_int_fetch_and_add_acquire(addr, val) \  	 AO_int_fetch_and_add_full(addr, val)#    define AO_HAVE_int_fetch_and_add_acquire#  endif#  if !defined(AO_HAVE_int_fetch_and_add_write)#    define AO_int_fetch_and_add_write(addr, val) \  	 AO_int_fetch_and_add_full(addr, val)#    define AO_HAVE_int_fetch_and_add_write#  endif#  if !defined(AO_HAVE_int_fetch_and_add_read)#    define AO_int_fetch_and_add_read(addr, val) \  	 AO_int_fetch_and_add_full(addr, val)#    define AO_HAVE_int_fetch_and_add_read#  endif#endif /* AO_HAVE_int_fetch_and_add_full */#if !defined(AO_HAVE_int_fetch_and_add) && \    defined(AO_HAVE_int_fetch_and_add_release)#  define AO_int_fetch_and_add(addr, val) \  	AO_int_fetch_and_add_release(addr, val)#  define AO_HAVE_int_fetch_and_add#endif#if !defined(AO_HAVE_int_fetch_and_add) && \    defined(AO_HAVE_int_fetch_and_add_acquire)#  define AO_int_fetch_and_add(addr, val) \  	AO_int_fetch_and_add_acquire(addr, val)#  define AO_HAVE_int_fetch_and_add#endif#if !defined(AO_HAVE_int_fetch_and_add) && \    defined(AO_HAVE_int_fetch_and_add_write)#  define AO_int_fetch_and_add(addr, val) \  	AO_int_fetch_and_add_write(addr, val)#  define AO_HAVE_int_fetch_and_add#endif#if !defined(AO_HAVE_int_fetch_and_add) && \    defined(AO_HAVE_int_fetch_and_add_read)#  define AO_int_fetch_and_add(addr, val) \  	AO_int_fetch_and_add_read(addr, val)

⌨️ 快捷键说明

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