diff options
author | antirez <antirez@gmail.com> | 2012-05-15 15:27:12 +0200 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2012-05-16 11:20:44 +0200 |
commit | 4934f93dfb30c93a1636e3227584e791cd062bfb (patch) | |
tree | e9638d1b4ec236754b01cc42023eddb3b208a551 /deps/jemalloc/test/thread_tcache_enabled.c | |
parent | 14beba7868048bab2233066f18e08c18b8d7afea (diff) | |
download | redis-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.c | 91 |
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); +} |