#include "alloc.h"
#include "libcflat.h"

static int sieve(char* data, int size)
{
    int i, j, r = 0;

    for (i = 0; i < size; ++i)
	data[i] = 1;

    data[0] = data[1] = 0;

    for (i = 2; i < size; ++i)
	if (data[i]) {
	    ++r;
	    for (j = i*2; j < size; j += i)
		data[j] = 0;
	}
    return r;
}

static void test_sieve(const char *msg, char *data, int size)
{
    int r;

    printf("%s:", msg);
    r = sieve(data, size);
    printf("%d out of %d\n", r, size);
}

#define STATIC_SIZE 1000000
#define VSIZE 100000000
char static_data[STATIC_SIZE];

int main(void)
{
    void *v;
    int i;

    printf("starting sieve\n");
    test_sieve("static", static_data, STATIC_SIZE);
    setup_vm();
    test_sieve("mapped", static_data, STATIC_SIZE);
    for (i = 0; i < 3; ++i) {
	v = malloc(VSIZE);
	test_sieve("virtual", v, VSIZE);
	free(v);
    }

    return 0;
}
