]>
git.saurik.com Git - redis.git/blob - deps/jemalloc/test/ALLOCM_ARENA.c
1 #define JEMALLOC_MANGLE
2 #include "jemalloc_test.h"
7 je_thread_start(void *arg
)
9 unsigned thread_ind
= (unsigned)(uintptr_t)arg
;
15 sz
= sizeof(arena_ind
);
16 if (mallctl("arenas.extend", &arena_ind
, &sz
, NULL
, 0)
18 malloc_printf("Error in arenas.extend\n");
22 if (thread_ind
% 4 != 3) {
24 size_t miblen
= sizeof(mib
) / sizeof(size_t);
25 const char *dss_precs
[] = {"disabled", "primary", "secondary"};
26 const char *dss
= dss_precs
[thread_ind
% 4];
27 if (mallctlnametomib("arena.0.dss", mib
, &miblen
) != 0) {
28 malloc_printf("Error in mallctlnametomib()\n");
32 if (mallctlbymib(mib
, miblen
, NULL
, NULL
, (void *)&dss
,
33 sizeof(const char *))) {
34 malloc_printf("Error in mallctlbymib()\n");
39 r
= allocm(&p
, &rsz
, 1, ALLOCM_ARENA(arena_ind
));
40 if (r
!= ALLOCM_SUCCESS
) {
41 malloc_printf("Unexpected allocm() error\n");
51 je_thread_t threads
[NTHREADS
];
54 malloc_printf("Test begin\n");
56 for (i
= 0; i
< NTHREADS
; i
++) {
57 je_thread_create(&threads
[i
], je_thread_start
,
58 (void *)(uintptr_t)i
);
61 for (i
= 0; i
< NTHREADS
; i
++)
62 je_thread_join(threads
[i
], NULL
);
64 malloc_printf("Test end\n");