|
rpm
5.4.4
|
00001 00004 #ifndef H_DEBUG 00005 #define H_DEBUG 00006 00007 #ifdef HAVE_ASSERT_H 00008 #undef assert /* XXX <beecrypt/api.h> tries to retrofit an assert(x) macro */ 00009 #include <assert.h> 00010 #endif 00011 00012 #ifdef __LCLINT__ 00013 #define ntohl(_x) (_x) 00014 #define ntohs(_x) (_x) 00015 #define htonl(_x) (_x) 00016 #define htons(_x) (_x) 00017 #endif 00018 00019 #if defined(_OPENMP) 00020 #include <omp.h> 00021 #endif 00022 00023 #ifdef WITH_DMALLOC 00024 #include <dmalloc.h> 00025 #endif 00026 00027 /* If using GCC, wrap __builtin_expect() (reduces overhead in lookup3.c) */ 00028 #if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__) 00029 # define UNLIKELY(value) __builtin_expect((value), 0) 00030 #else 00031 # define UNLIKELY(value) (value) 00032 #endif 00033 00034 #if defined(WITH_VALGRIND) && defined(HAVE_VALGRIND_VALGRIND_H) 00035 00036 #include <valgrind/valgrind.h> 00037 #include <valgrind/memcheck.h> 00038 #include <valgrind/callgrind.h> 00039 #include <valgrind/helgrind.h> 00040 #include <valgrind/drd.h> 00041 00042 #if !defined(ANNOTATE_BENIGN_RACE_SIZED) 00043 #define ANNOTATE_BENIGN_RACE_SIZED(_a, _b, _c) 00044 #endif 00045 00046 static inline void * DRD_xmalloc(size_t nb) 00047 { 00048 void * ptr = xmalloc(nb); 00049 ANNOTATE_BENIGN_RACE_SIZED(ptr, nb, __FUNCTION__); /* XXX tsan sanity. */ 00050 return ptr; 00051 } 00052 00053 static inline void * DRD_xcalloc(size_t nmemb, size_t size) 00054 { 00055 size_t nb = nmemb * size; 00056 void * ptr = DRD_xmalloc(nb); 00057 memset(ptr, 0, nb); 00058 return ptr; 00059 } 00060 00061 static inline void * DRD_xrealloc(void * ptr, size_t size) 00062 { 00063 ptr = xrealloc(ptr, size); 00064 ANNOTATE_BENIGN_RACE_SIZED(ptr, size, __FUNCTION__); /* XXX tsan sanity. */ 00065 return ptr; 00066 } 00067 00068 static inline char * DRD_xstrdup(const char * s) 00069 { 00070 size_t nb = strlen(s) + 1; 00071 char * t = (char *) DRD_xmalloc(nb); 00072 return strcpy(t, s); 00073 } 00074 00075 #else 00076 00077 /* XXX list most everything just to see the valgrind namespace. */ 00078 00079 #define RUNNING_ON_VALGRIND (0) 00080 #define VALGRIND_DISCARD_TRANSLATIONS(_qzz_addr,_qzz_len) 00081 00082 #define VALGRIND_MALLOCLIKE_BLOCK(addr, sizeB, rzB, is_zeroed) 00083 #define VALGRIND_FREELIKE_BLOCK(addr, rzB) 00084 00085 #define VALGRIND_CREATE_MEMPOOL(pool, rzB, is_zeroed) 00086 #define VALGRIND_DESTROY_MEMPOOL(pool) 00087 #define VALGRIND_MEMPOOL_ALLOC(pool, addr, size) 00088 #define VALGRIND_MEMPOOL_FREE(pool, addr) 00089 #define VALGRIND_MEMPOOL_TRIM(pool, addr, size) 00090 #define VALGRIND_MOVE_MEMPOOL(poolA, poolB) 00091 #define VALGRIND_MEMPOOL_CHANGE(pool, addrA, addrB, size) 00092 #define VALGRIND_MEMPOOL_EXISTS(pool) (0) 00093 00094 #define VALGRIND_MAKE_MEM_NOACCESS(_qzz_addr,_qzz_len) 00095 #define VALGRIND_MAKE_MEM_UNDEFINED(_qzz_addr,_qzz_len) 00096 #define VALGRIND_MAKE_MEM_DEFINED(_qzz_addr,_qzz_len) 00097 #define VALGRIND_MAKE_MEM_DEFINED_IF_ADDRESSABLE(_qzz_addr,_qzz_len) 00098 #define VALGRIND_CREATE_BLOCK(_qzz_addr,_qzz_len, _qzz_desc) 00099 #define VALGRIND_DISCARD(_qzz_blkindex) 00100 #define VALGRIND_CHECK_MEM_IS_ADDRESSABLE(_qzz_addr,_qzz_len) 00101 #define VALGRIND_CHECK_MEM_IS_DEFINED(_qzz_addr,_qzz_len) 00102 #define VALGRIND_CHECK_VALUE_IS_DEFINED(__lvalue) 00103 #define VALGRIND_DO_LEAK_CHECK 00104 #define VALGRIND_DO_QUICK_LEAK_CHECK 00105 #define VALGRIND_COUNT_LEAKS(leaked, dubious, reachable, suppressed) 00106 #define VALGRIND_COUNT_LEAK_BLOCKS(leaked, dubious, reachable, suppressed) 00107 #define VALGRIND_GET_VBITS(zza,zzvbits,zznbytes) 00108 #define VALGRIND_SET_VBITS(zza,zzvbits,zznbytes) 00109 00110 #define CALLGRIND_DUMP_STATS 00111 #define CALLGRIND_DUMP_STATS_AT(pos_str) 00112 #define CALLGRIND_ZERO_STATS 00113 #define CALLGRIND_TOGGLE_COLLECT 00114 #define CALLGRIND_START_INSTRUMENTATION 00115 #define CALLGRIND_STOP_INSTRUMENTATION 00116 00117 #define VALGRIND_HG_MUTEX_INIT_POST(_mutex, _mbRec) 00118 #define VALGRIND_HG_MUTEX_LOCK_PRE(_mutex, _isTryLock) 00119 #define VALGRIND_HG_MUTEX_LOCK_POST(_mutex) 00120 #define VALGRIND_HG_MUTEX_UNLOCK_PRE(_mutex) 00121 #define VALGRIND_HG_MUTEX_UNLOCK_POST(_mutex) 00122 #define VALGRIND_HG_MUTEX_DESTROY_PRE(_mutex) 00123 #define VALGRIND_HG_SEM_INIT_POST(_sem, _value) 00124 #define VALGRIND_HG_SEM_WAIT_POST(_sem) 00125 #define VALGRIND_HG_SEM_POST_PRE(_sem) 00126 #define VALGRIND_HG_SEM_DESTROY_PRE(_sem) 00127 #define VALGRIND_HG_BARRIER_INIT_PRE(_bar, _count, _resizable) 00128 #define VALGRIND_HG_BARRIER_WAIT_PRE(_bar) 00129 #define VALGRIND_HG_BARRIER_RESIZE_PRE(_bar, _newcount) 00130 #define VALGRIND_HG_BARRIER_DESTROY_PRE(_bar) 00131 #define VALGRIND_HG_CLEAN_MEMORY(_qzz_start, _qzz_len) 00132 #define VALGRIND_HG_CLEAN_MEMORY_HEAPBLOCK(_qzz_blockstart) 00133 #define VALGRIND_HG_DISABLE_CHECKING(_qzz_start, _qzz_len) 00134 #define VALGRIND_HG_ENABLE_CHECKING(_qzz_start, _qzz_len) 00135 00136 #define DRD_GET_VALGRIND_THREADID 00137 #define DRD_GET_DRD_THREADID 00138 #define DRD_IGNORE_VAR(x) 00139 #define DRD_STOP_IGNORING_VAR(x) 00140 #define DRD_TRACE_VAR(x) 00141 00142 #define ANNOTATE_HAPPENS_BEFORE(_obj) 00143 #define ANNOTATE_HAPPENS_AFTER(_obj) 00144 00145 #define ANNOTATE_RWLOCK_CREATE(rwlock) 00146 #define ANNOTATE_RWLOCK_DESTROY(rwlock) 00147 #define ANNOTATE_RWLOCK_ACQUIRED(rwlock, is_w) 00148 #define ANNOTATE_READERLOCK_ACQUIRED(rwlock) 00149 #define ANNOTATE_WRITERLOCK_ACQUIRED(rwlock) 00150 #define ANNOTATE_RWLOCK_RELEASED(rwlock, is_w) 00151 #define ANNOTATE_READERLOCK_RELEASED(rwlock) 00152 #define ANNOTATE_WRITERLOCK_RELEASED(rwlock) 00153 00154 #define ANNOTATE_BARRIER_INIT(barrier, count, reinitialization_allowed) 00155 #define ANNOTATE_BARRIER_DESTROY(barrier) 00156 #define ANNOTATE_BARRIER_WAIT_BEFORE(barrier) 00157 #define ANNOTATE_BARRIER_WAIT_AFTER(barrier) 00158 00159 #define ANNOTATE_BENIGN_RACE(_a, _b) 00160 #define ANNOTATE_BENIGN_RACE_SIZED(_a, _b, _c) 00161 00162 #define ANNOTATE_IGNORE_READS_BEGIN() 00163 #define ANNOTATE_IGNORE_READS_END() 00164 #define ANNOTATE_IGNORE_WRITES_BEGIN() 00165 #define ANNOTATE_IGNORE_WRITES_END() 00166 #define ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN() 00167 #define ANNOTATE_IGNORE_READS_AND_WRITES_END() 00168 00169 #define ANNOTATE_NEW_MEMORY(_addr, _size) 00170 #define ANNOTATE_TRACE_MEMORY(_addr) 00171 #define ANNOTATE_THREAD_NAME(_name) 00172 00173 #define DRD_xmalloc(_nb) xmalloc(_nb) 00174 #define DRD_xcalloc(_nmemb, _size) xcalloc(_nmemb, _size) 00175 #define DRD_xrealloc(_ptr, _size) xrealloc(_ptr, _size) 00176 #define DRD_xstrdup(_str) xstrdup(_str) 00177 00178 #endif 00179 00180 #endif /* H_DEBUG */
1.7.5.1