111 #define VALGRIND_MAKE_MEM_NOACCESS(_qzz_addr,_qzz_len) \ 112 (__extension__({unsigned long _qzz_res; \ 113 VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0 , \ 114 VG_USERREQ__MAKE_MEM_NOACCESS, \ 115 _qzz_addr, _qzz_len, 0, 0, 0); \ 121 #define VALGRIND_MAKE_MEM_UNDEFINED(_qzz_addr,_qzz_len) \ 122 (__extension__({unsigned long _qzz_res; \ 123 VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0 , \ 124 VG_USERREQ__MAKE_MEM_UNDEFINED, \ 125 _qzz_addr, _qzz_len, 0, 0, 0); \ 131 #define VALGRIND_MAKE_MEM_DEFINED(_qzz_addr,_qzz_len) \ 132 (__extension__({unsigned long _qzz_res; \ 133 VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0 , \ 134 VG_USERREQ__MAKE_MEM_DEFINED, \ 135 _qzz_addr, _qzz_len, 0, 0, 0); \ 142 #define VALGRIND_MAKE_MEM_DEFINED_IF_ADDRESSABLE(_qzz_addr,_qzz_len) \ 143 (__extension__({unsigned long _qzz_res; \ 144 VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0 , \ 145 VG_USERREQ__MAKE_MEM_DEFINED_IF_ADDRESSABLE, \ 146 _qzz_addr, _qzz_len, 0, 0, 0); \ 154 #define VALGRIND_CREATE_BLOCK(_qzz_addr,_qzz_len, _qzz_desc) \ 155 (__extension__({unsigned long _qzz_res; \ 156 VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0 , \ 157 VG_USERREQ__CREATE_BLOCK, \ 158 _qzz_addr, _qzz_len, _qzz_desc, \ 165 #define VALGRIND_DISCARD(_qzz_blkindex) \ 166 (__extension__ ({unsigned long _qzz_res; \ 167 VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0 , \ 168 VG_USERREQ__DISCARD, \ 169 0, _qzz_blkindex, 0, 0, 0); \ 180 #define VALGRIND_CHECK_MEM_IS_ADDRESSABLE(_qzz_addr,_qzz_len) \ 181 (__extension__({unsigned long _qzz_res; \ 182 VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ 183 VG_USERREQ__CHECK_MEM_IS_ADDRESSABLE,\ 184 _qzz_addr, _qzz_len, 0, 0, 0); \ 192 #define VALGRIND_CHECK_MEM_IS_DEFINED(_qzz_addr,_qzz_len) \ 193 (__extension__({unsigned long _qzz_res; \ 194 VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ 195 VG_USERREQ__CHECK_MEM_IS_DEFINED, \ 196 _qzz_addr, _qzz_len, 0, 0, 0); \ 205 #define VALGRIND_CHECK_VALUE_IS_DEFINED(__lvalue) \ 206 VALGRIND_CHECK_MEM_IS_DEFINED( \ 207 (volatile unsigned char *)&(__lvalue), \ 208 (unsigned long)(sizeof (__lvalue))) 212 #define VALGRIND_DO_LEAK_CHECK \ 213 {unsigned long _qzz_res; \ 214 VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ 215 VG_USERREQ__DO_LEAK_CHECK, \ 220 #define VALGRIND_DO_QUICK_LEAK_CHECK \ 221 {unsigned long _qzz_res; \ 222 VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ 223 VG_USERREQ__DO_LEAK_CHECK, \ 229 #define VALGRIND_COUNT_LEAKS(leaked, dubious, reachable, suppressed) \ 236 {unsigned long _qzz_res; \ 237 unsigned long _qzz_leaked = 0, _qzz_dubious = 0; \ 238 unsigned long _qzz_reachable = 0, _qzz_suppressed = 0; \ 239 VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ 240 VG_USERREQ__COUNT_LEAKS, \ 241 &_qzz_leaked, &_qzz_dubious, \ 242 &_qzz_reachable, &_qzz_suppressed, 0); \ 243 leaked = _qzz_leaked; \ 244 dubious = _qzz_dubious; \ 245 reachable = _qzz_reachable; \ 246 suppressed = _qzz_suppressed; \ 251 #define VALGRIND_COUNT_LEAK_BLOCKS(leaked, dubious, reachable, suppressed) \ 258 {unsigned long _qzz_res; \ 259 unsigned long _qzz_leaked = 0, _qzz_dubious = 0; \ 260 unsigned long _qzz_reachable = 0, _qzz_suppressed = 0; \ 261 VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ 262 VG_USERREQ__COUNT_LEAK_BLOCKS, \ 263 &_qzz_leaked, &_qzz_dubious, \ 264 &_qzz_reachable, &_qzz_suppressed, 0); \ 265 leaked = _qzz_leaked; \ 266 dubious = _qzz_dubious; \ 267 reachable = _qzz_reachable; \ 268 suppressed = _qzz_suppressed; \ 281 #define VALGRIND_GET_VBITS(zza,zzvbits,zznbytes) \ 282 (__extension__({unsigned long _qzz_res; \ 283 char* czza = (char*)zza; \ 284 char* czzvbits = (char*)zzvbits; \ 285 VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ 286 VG_USERREQ__GET_VBITS, \ 287 czza, czzvbits, zznbytes, 0, 0 ); \ 300 #define VALGRIND_SET_VBITS(zza,zzvbits,zznbytes) \ 301 (__extension__({unsigned int _qzz_res; \ 302 char* czza = (char*)zza; \ 303 char* czzvbits = (char*)zzvbits; \ 304 VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ 305 VG_USERREQ__SET_VBITS, \ 306 czza, czzvbits, zznbytes, 0, 0 ); \
#define VG_USERREQ_TOOL_BASE(a, b)