summaryrefslogtreecommitdiffstats
path: root/jemalloc/test/allocated.c
diff options
context:
space:
mode:
Diffstat (limited to 'jemalloc/test/allocated.c')
-rw-r--r--jemalloc/test/allocated.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/jemalloc/test/allocated.c b/jemalloc/test/allocated.c
index 64a1735..b1e40e4 100644
--- a/jemalloc/test/allocated.c
+++ b/jemalloc/test/allocated.c
@@ -16,6 +16,7 @@ thread_start(void *arg)
int err;
void *p;
uint64_t a0, a1, d0, d1;
+ uint64_t *ap0, *ap1, *dp0, *dp1;
size_t sz, usize;
sz = sizeof(a0);
@@ -31,6 +32,20 @@ thread_start(void *arg)
strerror(err));
exit(1);
}
+ sz = sizeof(ap0);
+ if ((err = JEMALLOC_P(mallctl)("thread.allocatedp", &ap0, &sz, NULL,
+ 0))) {
+ if (err == ENOENT) {
+#ifdef JEMALLOC_STATS
+ assert(false);
+#endif
+ goto RETURN;
+ }
+ fprintf(stderr, "%s(): Error in mallctl(): %s\n", __func__,
+ strerror(err));
+ exit(1);
+ }
+ assert(*ap0 == a0);
sz = sizeof(d0);
if ((err = JEMALLOC_P(mallctl)("thread.deallocated", &d0, &sz, NULL,
@@ -45,6 +60,20 @@ thread_start(void *arg)
strerror(err));
exit(1);
}
+ sz = sizeof(dp0);
+ if ((err = JEMALLOC_P(mallctl)("thread.deallocatedp", &dp0, &sz, NULL,
+ 0))) {
+ if (err == ENOENT) {
+#ifdef JEMALLOC_STATS
+ assert(false);
+#endif
+ goto RETURN;
+ }
+ fprintf(stderr, "%s(): Error in mallctl(): %s\n", __func__,
+ strerror(err));
+ exit(1);
+ }
+ assert(*dp0 == d0);
p = JEMALLOC_P(malloc)(1);
if (p == NULL) {
@@ -54,6 +83,10 @@ thread_start(void *arg)
sz = sizeof(a1);
JEMALLOC_P(mallctl)("thread.allocated", &a1, &sz, NULL, 0);
+ sz = sizeof(ap1);
+ JEMALLOC_P(mallctl)("thread.allocatedp", &ap1, &sz, NULL, 0);
+ assert(*ap1 == a1);
+ assert(ap0 == ap1);
usize = JEMALLOC_P(malloc_usable_size)(p);
assert(a0 + usize <= a1);
@@ -62,6 +95,10 @@ thread_start(void *arg)
sz = sizeof(d1);
JEMALLOC_P(mallctl)("thread.deallocated", &d1, &sz, NULL, 0);
+ sz = sizeof(dp1);
+ JEMALLOC_P(mallctl)("thread.deallocatedp", &dp1, &sz, NULL, 0);
+ assert(*dp1 == d1);
+ assert(dp0 == dp1);
assert(d0 + usize <= d1);