159113bcc94b9fc7549611afb99ca99cad1a7f196aravind#include "test/jemalloc_test.h"
259113bcc94b9fc7549611afb99ca99cad1a7f196aravind
359113bcc94b9fc7549611afb99ca99cad1a7f196aravindchunk_alloc_t *old_alloc;
412141150fdbda57651a53ae2fe0edaea4891d814Jason Evanschunk_dalloc_t *old_dalloc;
559113bcc94b9fc7549611afb99ca99cad1a7f196aravind
659113bcc94b9fc7549611afb99ca99cad1a7f196aravindbool
712141150fdbda57651a53ae2fe0edaea4891d814Jason Evanschunk_dalloc(void *chunk, size_t size, unsigned arena_ind)
859113bcc94b9fc7549611afb99ca99cad1a7f196aravind{
959113bcc94b9fc7549611afb99ca99cad1a7f196aravind
1012141150fdbda57651a53ae2fe0edaea4891d814Jason Evans	return (old_dalloc(chunk, size, arena_ind));
1159113bcc94b9fc7549611afb99ca99cad1a7f196aravind}
1259113bcc94b9fc7549611afb99ca99cad1a7f196aravind
1359113bcc94b9fc7549611afb99ca99cad1a7f196aravindvoid *
1459113bcc94b9fc7549611afb99ca99cad1a7f196aravindchunk_alloc(size_t size, size_t alignment, bool *zero, unsigned arena_ind)
1559113bcc94b9fc7549611afb99ca99cad1a7f196aravind{
1659113bcc94b9fc7549611afb99ca99cad1a7f196aravind
1759113bcc94b9fc7549611afb99ca99cad1a7f196aravind	return (old_alloc(size, alignment, zero, arena_ind));
1859113bcc94b9fc7549611afb99ca99cad1a7f196aravind}
1959113bcc94b9fc7549611afb99ca99cad1a7f196aravind
2059113bcc94b9fc7549611afb99ca99cad1a7f196aravindTEST_BEGIN(test_chunk)
2159113bcc94b9fc7549611afb99ca99cad1a7f196aravind{
2259113bcc94b9fc7549611afb99ca99cad1a7f196aravind	void *p;
2359113bcc94b9fc7549611afb99ca99cad1a7f196aravind	chunk_alloc_t *new_alloc;
2412141150fdbda57651a53ae2fe0edaea4891d814Jason Evans	chunk_dalloc_t *new_dalloc;
2559113bcc94b9fc7549611afb99ca99cad1a7f196aravind	size_t old_size, new_size;
2659113bcc94b9fc7549611afb99ca99cad1a7f196aravind
2759113bcc94b9fc7549611afb99ca99cad1a7f196aravind	new_alloc = chunk_alloc;
2812141150fdbda57651a53ae2fe0edaea4891d814Jason Evans	new_dalloc = chunk_dalloc;
2959113bcc94b9fc7549611afb99ca99cad1a7f196aravind	old_size = sizeof(chunk_alloc_t *);
3059113bcc94b9fc7549611afb99ca99cad1a7f196aravind	new_size = sizeof(chunk_alloc_t *);
3159113bcc94b9fc7549611afb99ca99cad1a7f196aravind
3259113bcc94b9fc7549611afb99ca99cad1a7f196aravind	assert_d_eq(mallctl("arena.0.chunk.alloc", &old_alloc,
3359113bcc94b9fc7549611afb99ca99cad1a7f196aravind	    &old_size, &new_alloc, new_size), 0,
3459113bcc94b9fc7549611afb99ca99cad1a7f196aravind	    "Unexpected alloc error");
3559113bcc94b9fc7549611afb99ca99cad1a7f196aravind	assert_ptr_ne(old_alloc, new_alloc,
3659113bcc94b9fc7549611afb99ca99cad1a7f196aravind	    "Unexpected alloc error");
3712141150fdbda57651a53ae2fe0edaea4891d814Jason Evans	assert_d_eq(mallctl("arena.0.chunk.dalloc", &old_dalloc, &old_size,
3812141150fdbda57651a53ae2fe0edaea4891d814Jason Evans	    &new_dalloc, new_size), 0, "Unexpected dalloc error");
3912141150fdbda57651a53ae2fe0edaea4891d814Jason Evans	assert_ptr_ne(old_dalloc, new_dalloc, "Unexpected dalloc error");
4059113bcc94b9fc7549611afb99ca99cad1a7f196aravind
4159113bcc94b9fc7549611afb99ca99cad1a7f196aravind	p = mallocx(42, 0);
4259113bcc94b9fc7549611afb99ca99cad1a7f196aravind	assert_ptr_ne(p, NULL, "Unexpected alloc error");
4359113bcc94b9fc7549611afb99ca99cad1a7f196aravind	free(p);
4459113bcc94b9fc7549611afb99ca99cad1a7f196aravind
4559113bcc94b9fc7549611afb99ca99cad1a7f196aravind	assert_d_eq(mallctl("arena.0.chunk.alloc", NULL,
4659113bcc94b9fc7549611afb99ca99cad1a7f196aravind	    NULL, &old_alloc, old_size), 0,
4759113bcc94b9fc7549611afb99ca99cad1a7f196aravind	    "Unexpected alloc error");
4812141150fdbda57651a53ae2fe0edaea4891d814Jason Evans	assert_d_eq(mallctl("arena.0.chunk.dalloc", NULL, NULL, &old_dalloc,
4912141150fdbda57651a53ae2fe0edaea4891d814Jason Evans	    old_size), 0, "Unexpected dalloc error");
5059113bcc94b9fc7549611afb99ca99cad1a7f196aravind}
5159113bcc94b9fc7549611afb99ca99cad1a7f196aravindTEST_END
5259113bcc94b9fc7549611afb99ca99cad1a7f196aravind
5359113bcc94b9fc7549611afb99ca99cad1a7f196aravindint
5459113bcc94b9fc7549611afb99ca99cad1a7f196aravindmain(void)
5559113bcc94b9fc7549611afb99ca99cad1a7f196aravind{
5659113bcc94b9fc7549611afb99ca99cad1a7f196aravind
5759113bcc94b9fc7549611afb99ca99cad1a7f196aravind	return (test(test_chunk));
5859113bcc94b9fc7549611afb99ca99cad1a7f196aravind}
59