Blame jemalloc/test/integration/sdallocx.c

Packit 345191
#include "test/jemalloc_test.h"
Packit 345191
Packit 345191
#define MAXALIGN (((size_t)1) << 22)
Packit 345191
#define NITER 3
Packit 345191
Packit 345191
TEST_BEGIN(test_basic) {
Packit 345191
	void *ptr = mallocx(64, 0);
Packit 345191
	sdallocx(ptr, 64, 0);
Packit 345191
}
Packit 345191
TEST_END
Packit 345191
Packit 345191
TEST_BEGIN(test_alignment_and_size) {
Packit 345191
	size_t nsz, sz, alignment, total;
Packit 345191
	unsigned i;
Packit 345191
	void *ps[NITER];
Packit 345191
Packit 345191
	for (i = 0; i < NITER; i++) {
Packit 345191
		ps[i] = NULL;
Packit 345191
	}
Packit 345191
Packit 345191
	for (alignment = 8;
Packit 345191
	    alignment <= MAXALIGN;
Packit 345191
	    alignment <<= 1) {
Packit 345191
		total = 0;
Packit 345191
		for (sz = 1;
Packit 345191
		    sz < 3 * alignment && sz < (1U << 31);
Packit 345191
		    sz += (alignment >> (LG_SIZEOF_PTR-1)) - 1) {
Packit 345191
			for (i = 0; i < NITER; i++) {
Packit 345191
				nsz = nallocx(sz, MALLOCX_ALIGN(alignment) |
Packit 345191
				    MALLOCX_ZERO);
Packit 345191
				ps[i] = mallocx(sz, MALLOCX_ALIGN(alignment) |
Packit 345191
				    MALLOCX_ZERO);
Packit 345191
				total += nsz;
Packit 345191
				if (total >= (MAXALIGN << 1)) {
Packit 345191
					break;
Packit 345191
				}
Packit 345191
			}
Packit 345191
			for (i = 0; i < NITER; i++) {
Packit 345191
				if (ps[i] != NULL) {
Packit 345191
					sdallocx(ps[i], sz,
Packit 345191
					    MALLOCX_ALIGN(alignment));
Packit 345191
					ps[i] = NULL;
Packit 345191
				}
Packit 345191
			}
Packit 345191
		}
Packit 345191
	}
Packit 345191
}
Packit 345191
TEST_END
Packit 345191
Packit 345191
int
Packit 345191
main(void) {
Packit 345191
	return test_no_reentrancy(
Packit 345191
	    test_basic,
Packit 345191
	    test_alignment_and_size);
Packit 345191
}