summaryrefslogtreecommitdiff
path: root/deps/jemalloc/test/thread_tcache_enabled.c
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2012-05-15 15:27:12 +0200
committerantirez <antirez@gmail.com>2012-05-16 11:20:44 +0200
commit4934f93dfb30c93a1636e3227584e791cd062bfb (patch)
treee9638d1b4ec236754b01cc42023eddb3b208a551 /deps/jemalloc/test/thread_tcache_enabled.c
parent14beba7868048bab2233066f18e08c18b8d7afea (diff)
downloadredis-4934f93dfb30c93a1636e3227584e791cd062bfb.tar.gz
Jemalloc updated to 3.0.0.
Full changelog here: http://www.canonware.com/cgi-bin/gitweb.cgi?p=jemalloc.git;a=blob_plain;f=ChangeLog;hb=master Notable improvements from the point of view of Redis: 1) Bugfixing. 2) Support for Valgrind. 3) Support for OSX Lion, FreeBSD.
Diffstat (limited to 'deps/jemalloc/test/thread_tcache_enabled.c')
-rw-r--r--deps/jemalloc/test/thread_tcache_enabled.c91
1 files changed, 91 insertions, 0 deletions
diff --git a/deps/jemalloc/test/thread_tcache_enabled.c b/deps/jemalloc/test/thread_tcache_enabled.c
new file mode 100644
index 000000000..2061b7bba
--- /dev/null
+++ b/deps/jemalloc/test/thread_tcache_enabled.c
@@ -0,0 +1,91 @@
+#define JEMALLOC_MANGLE
+#include "jemalloc_test.h"
+
+void *
+je_thread_start(void *arg)
+{
+ int err;
+ size_t sz;
+ bool e0, e1;
+
+ sz = sizeof(bool);
+ if ((err = mallctl("thread.tcache.enabled", &e0, &sz, NULL, 0))) {
+ if (err == ENOENT) {
+#ifdef JEMALLOC_TCACHE
+ assert(false);
+#endif
+ }
+ goto label_return;
+ }
+
+ if (e0) {
+ e1 = false;
+ assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz)
+ == 0);
+ assert(e0);
+ }
+
+ e1 = true;
+ assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
+ assert(e0 == false);
+
+ e1 = true;
+ assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
+ assert(e0);
+
+ e1 = false;
+ assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
+ assert(e0);
+
+ e1 = false;
+ assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
+ assert(e0 == false);
+
+ free(malloc(1));
+ e1 = true;
+ assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
+ assert(e0 == false);
+
+ free(malloc(1));
+ e1 = true;
+ assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
+ assert(e0);
+
+ free(malloc(1));
+ e1 = false;
+ assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
+ assert(e0);
+
+ free(malloc(1));
+ e1 = false;
+ assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
+ assert(e0 == false);
+
+ free(malloc(1));
+label_return:
+ return (NULL);
+}
+
+int
+main(void)
+{
+ int ret = 0;
+ je_thread_t thread;
+
+ malloc_printf("Test begin\n");
+
+ je_thread_start(NULL);
+
+ je_thread_create(&thread, je_thread_start, NULL);
+ je_thread_join(thread, (void *)&ret);
+
+ je_thread_start(NULL);
+
+ je_thread_create(&thread, je_thread_start, NULL);
+ je_thread_join(thread, (void *)&ret);
+
+ je_thread_start(NULL);
+
+ malloc_printf("Test end\n");
+ return (ret);
+}