12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #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);
- }
|