memory/jemalloc/src/test/mremap.c

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/memory/jemalloc/src/test/mremap.c	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,60 @@
     1.4 +#define	JEMALLOC_MANGLE
     1.5 +#include "jemalloc_test.h"
     1.6 +
     1.7 +int
     1.8 +main(void)
     1.9 +{
    1.10 +	int ret, err;
    1.11 +	size_t sz, lg_chunk, chunksize, i;
    1.12 +	char *p, *q;
    1.13 +
    1.14 +	malloc_printf("Test begin\n");
    1.15 +
    1.16 +	sz = sizeof(lg_chunk);
    1.17 +	if ((err = mallctl("opt.lg_chunk", &lg_chunk, &sz, NULL, 0))) {
    1.18 +		assert(err != ENOENT);
    1.19 +		malloc_printf("%s(): Error in mallctl(): %s\n", __func__,
    1.20 +		    strerror(err));
    1.21 +		ret = 1;
    1.22 +		goto label_return;
    1.23 +	}
    1.24 +	chunksize = ((size_t)1U) << lg_chunk;
    1.25 +
    1.26 +	p = (char *)malloc(chunksize);
    1.27 +	if (p == NULL) {
    1.28 +		malloc_printf("malloc(%zu) --> %p\n", chunksize, p);
    1.29 +		ret = 1;
    1.30 +		goto label_return;
    1.31 +	}
    1.32 +	memset(p, 'a', chunksize);
    1.33 +
    1.34 +	q = (char *)realloc(p, chunksize * 2);
    1.35 +	if (q == NULL) {
    1.36 +		malloc_printf("realloc(%p, %zu) --> %p\n", p, chunksize * 2,
    1.37 +		    q);
    1.38 +		ret = 1;
    1.39 +		goto label_return;
    1.40 +	}
    1.41 +	for (i = 0; i < chunksize; i++) {
    1.42 +		assert(q[i] == 'a');
    1.43 +	}
    1.44 +
    1.45 +	p = q;
    1.46 +
    1.47 +	q = (char *)realloc(p, chunksize);
    1.48 +	if (q == NULL) {
    1.49 +		malloc_printf("realloc(%p, %zu) --> %p\n", p, chunksize, q);
    1.50 +		ret = 1;
    1.51 +		goto label_return;
    1.52 +	}
    1.53 +	for (i = 0; i < chunksize; i++) {
    1.54 +		assert(q[i] == 'a');
    1.55 +	}
    1.56 +
    1.57 +	free(q);
    1.58 +
    1.59 +	ret = 0;
    1.60 +label_return:
    1.61 +	malloc_printf("Test end\n");
    1.62 +	return (ret);
    1.63 +}

mercurial