1#include "test/jemalloc_test.h"
2
3#define	MAXALIGN (((size_t)1) << 25)
4#define	NITER 4
5
6TEST_BEGIN(test_basic)
7{
8	void *ptr = mallocx(64, 0);
9	sdallocx(ptr, 64, 0);
10}
11TEST_END
12
13TEST_BEGIN(test_alignment_and_size)
14{
15	size_t nsz, sz, alignment, total;
16	unsigned i;
17	void *ps[NITER];
18
19	for (i = 0; i < NITER; i++)
20		ps[i] = NULL;
21
22	for (alignment = 8;
23	    alignment <= MAXALIGN;
24	    alignment <<= 1) {
25		total = 0;
26		for (sz = 1;
27		    sz < 3 * alignment && sz < (1U << 31);
28		    sz += (alignment >> (LG_SIZEOF_PTR-1)) - 1) {
29			for (i = 0; i < NITER; i++) {
30				nsz = nallocx(sz, MALLOCX_ALIGN(alignment) |
31				    MALLOCX_ZERO);
32				ps[i] = mallocx(sz, MALLOCX_ALIGN(alignment) |
33				    MALLOCX_ZERO);
34				total += nsz;
35				if (total >= (MAXALIGN << 1))
36					break;
37			}
38			for (i = 0; i < NITER; i++) {
39				if (ps[i] != NULL) {
40					sdallocx(ps[i], sz,
41					    MALLOCX_ALIGN(alignment));
42					ps[i] = NULL;
43				}
44			}
45		}
46	}
47}
48TEST_END
49
50int
51main(void)
52{
53
54	return (test(
55	    test_basic,
56	    test_alignment_and_size));
57}
58