Example #1
0
static void
ssslaba_test0(void)
{
	ssa a;
	ss_aopen(&a, &ss_slaba, &st_r.vfs, 1024, 16);

	void *chunks[64];
	int   chunks_size = 64;

	int iteration = 0;
	while (iteration < 8)
	{
		int i = 0;
		while ( i < chunks_size) {
			chunks[i] = ss_malloc(&a, 16);
			t( chunks[i] != NULL );
			i++;
		}
		t(i == 64);
		t( ss_malloc(&a, 16) == NULL );
		i = 0;
		while ( i < chunks_size) {
			ss_free(&a, chunks[i]);
			t( chunks[i] != NULL );
			i++;
		}
		iteration++;
	}
	ss_aclose(&a);
}
Example #2
0
static void
ssa_malloc(void)
{
	ssa a;
	ss_aopen(&a, &ss_stda);
	void *buf = ss_malloc(&a, 123);
	t( buf != NULL );
	ss_free(&a, buf);
	ss_aclose(&a);
}
Example #3
0
static void
ssaslab_reuse(stc *cx)
{
	sspager p;
	ss_pagerinit(&p, 3, 1024);

	ssa slab;
	t( ss_aopen(&slab, &ss_slaba, &p, 32) == 0 );

	void *alloc0[1000];
	void *alloc1[1000];
	memset(alloc0, 0, sizeof(alloc0));
	memset(alloc1, 0, sizeof(alloc1));

	int i = 0;
	while (i < 1000) {
		alloc0[i] = ss_malloc(&slab, 0);
		t( alloc0[i] != NULL );
		i++;
	}
	i--;
	int pools = p.pools;
	while (i >= 0) {
		ss_free(&slab, alloc0[i]);
		i--;
	}
	t( p.pools == pools );

	i++;
	while (i < 1000) {
		alloc1[i] = ss_malloc(&slab, 0);
		t( alloc0[i] == alloc1[i] );
		i++;
	}
	t( p.pools == pools );

	ss_aclose(&slab);
	ss_pagerfree(&p);
}