aboutsummaryrefslogtreecommitdiff
path: root/include/valgrind.h
diff options
context:
space:
mode:
authorsewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9>2006-10-05 17:59:23 +0000
committersewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9>2006-10-05 17:59:23 +0000
commitc740d7660ad140b79e561e0d578ab8435a5a5289 (patch)
tree46d58446eae00adfa1450c536fee6f43b0a6fded /include/valgrind.h
parentce10c26db13a44c39061f1dadd6725de56d31491 (diff)
downloadvalgrind-c740d7660ad140b79e561e0d578ab8435a5a5289.tar.gz
A memory pool update from Graydon Hoare.
Here's an update to the mempool move / change client requests and sanity checking. The following changes are present: - Added one more (hopefully last) client request, a predicate to test whether a mempool anchor address is currently tracked. It turns out mozilla's arena-using code is sufficiently inconsistent in its assumptions that it's very difficult to phrase the valgrind client-request annotations without this request. Namely: sometime arena-init and arena-free operations are assumed to be idempotent. - Fixed a very rapid tool-memory leak in the mempool sanity check routine. The previous version of the patch I posted would use all memory even on my Very Beefy Test Machine within ~15 minutes of browsing with firefox. - Added a little logging code to print the counts of pools and chunks active every ~10000 sanity checks, when running with -v. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6197 a5019735-40e9-0310-863c-91ae7b9d1cf9
Diffstat (limited to 'include/valgrind.h')
-rw-r--r--include/valgrind.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/include/valgrind.h b/include/valgrind.h
index 6f767c6b9..782057221 100644
--- a/include/valgrind.h
+++ b/include/valgrind.h
@@ -2289,6 +2289,9 @@ typedef
VG_USERREQ__MEMPOOL_ALLOC = 0x1305,
VG_USERREQ__MEMPOOL_FREE = 0x1306,
VG_USERREQ__MEMPOOL_TRIM = 0x1307,
+ VG_USERREQ__MOVE_MEMPOOL = 0x1308,
+ VG_USERREQ__MEMPOOL_CHANGE = 0x1309,
+ VG_USERREQ__MEMPOOL_EXISTS = 0x130a,
/* Allow printfs to valgrind log. */
VG_USERREQ__PRINTF = 0x1401,
@@ -2513,6 +2516,31 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...)
pool, addr, size, 0, 0); \
}
+/* Resize and/or move a piece associated with a memory pool. */
+#define VALGRIND_MOVE_MEMPOOL(poolA, poolB) \
+ {unsigned int _qzz_res; \
+ VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
+ VG_USERREQ__MOVE_MEMPOOL, \
+ poolA, poolB, 0, 0, 0); \
+ }
+
+/* Resize and/or move a piece associated with a memory pool. */
+#define VALGRIND_MEMPOOL_CHANGE(pool, addrA, addrB, size) \
+ {unsigned int _qzz_res; \
+ VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
+ VG_USERREQ__MEMPOOL_CHANGE, \
+ pool, addrA, addrB, size, 0); \
+ }
+
+/* Return 1 if a mempool exists, else 0. */
+#define VALGRIND_MEMPOOL_EXISTS(pool) \
+ ({unsigned int _qzz_res; \
+ VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
+ VG_USERREQ__MEMPOOL_EXISTS, \
+ pool, 0, 0, 0, 0); \
+ _qzz_res; \
+ })
+
/* Mark a piece of memory as being a stack. Returns a stack id. */
#define VALGRIND_STACK_REGISTER(start, end) \
({unsigned int _qzz_res; \