memory/jemalloc/src/test/thread_tcache_enabled.c

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 #define	JEMALLOC_MANGLE
     2 #include "jemalloc_test.h"
     4 void *
     5 je_thread_start(void *arg)
     6 {
     7 	int err;
     8 	size_t sz;
     9 	bool e0, e1;
    11 	sz = sizeof(bool);
    12 	if ((err = mallctl("thread.tcache.enabled", &e0, &sz, NULL, 0))) {
    13 		if (err == ENOENT) {
    14 #ifdef JEMALLOC_TCACHE
    15 			assert(false);
    16 #endif
    17 		}
    18 		goto label_return;
    19 	}
    21 	if (e0) {
    22 		e1 = false;
    23 		assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz)
    24 		    == 0);
    25 		assert(e0);
    26 	}
    28 	e1 = true;
    29 	assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
    30 	assert(e0 == false);
    32 	e1 = true;
    33 	assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
    34 	assert(e0);
    36 	e1 = false;
    37 	assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
    38 	assert(e0);
    40 	e1 = false;
    41 	assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
    42 	assert(e0 == false);
    44 	free(malloc(1));
    45 	e1 = true;
    46 	assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
    47 	assert(e0 == false);
    49 	free(malloc(1));
    50 	e1 = true;
    51 	assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
    52 	assert(e0);
    54 	free(malloc(1));
    55 	e1 = false;
    56 	assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
    57 	assert(e0);
    59 	free(malloc(1));
    60 	e1 = false;
    61 	assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
    62 	assert(e0 == false);
    64 	free(malloc(1));
    65 label_return:
    66 	return (NULL);
    67 }
    69 int
    70 main(void)
    71 {
    72 	int ret = 0;
    73 	je_thread_t thread;
    75 	malloc_printf("Test begin\n");
    77 	je_thread_start(NULL);
    79 	je_thread_create(&thread, je_thread_start, NULL);
    80 	je_thread_join(thread, (void *)&ret);
    82 	je_thread_start(NULL);
    84 	je_thread_create(&thread, je_thread_start, NULL);
    85 	je_thread_join(thread, (void *)&ret);
    87 	je_thread_start(NULL);
    89 	malloc_printf("Test end\n");
    90 	return (ret);
    91 }

mercurial