1#include "test/jemalloc_test.h"
2
3chunk_alloc_t *old_alloc;
4chunk_dalloc_t *old_dalloc;
5
6bool
7chunk_dalloc(void *chunk, size_t size, unsigned arena_ind)
8{
9
10	return (old_dalloc(chunk, size, arena_ind));
11}
12
13void *
14chunk_alloc(size_t size, size_t alignment, bool *zero, unsigned arena_ind)
15{
16
17	return (old_alloc(size, alignment, zero, arena_ind));
18}
19
20TEST_BEGIN(test_chunk)
21{
22	void *p;
23	chunk_alloc_t *new_alloc;
24	chunk_dalloc_t *new_dalloc;
25	size_t old_size, new_size;
26
27	new_alloc = chunk_alloc;
28	new_dalloc = chunk_dalloc;
29	old_size = sizeof(chunk_alloc_t *);
30	new_size = sizeof(chunk_alloc_t *);
31
32	assert_d_eq(mallctl("arena.0.chunk.alloc", &old_alloc,
33	    &old_size, &new_alloc, new_size), 0,
34	    "Unexpected alloc error");
35	assert_ptr_ne(old_alloc, new_alloc,
36	    "Unexpected alloc error");
37	assert_d_eq(mallctl("arena.0.chunk.dalloc", &old_dalloc, &old_size,
38	    &new_dalloc, new_size), 0, "Unexpected dalloc error");
39	assert_ptr_ne(old_dalloc, new_dalloc, "Unexpected dalloc error");
40
41	p = mallocx(42, 0);
42	assert_ptr_ne(p, NULL, "Unexpected alloc error");
43	free(p);
44
45	assert_d_eq(mallctl("arena.0.chunk.alloc", NULL,
46	    NULL, &old_alloc, old_size), 0,
47	    "Unexpected alloc error");
48	assert_d_eq(mallctl("arena.0.chunk.dalloc", NULL, NULL, &old_dalloc,
49	    old_size), 0, "Unexpected dalloc error");
50}
51TEST_END
52
53int
54main(void)
55{
56
57	return (test(test_chunk));
58}
59