blob: db084691acd8141c0b98eac0a7155938273a0dad [file] [log] [blame]
#include "alloc.h"
#include "libcflat.h"
#include "vmalloc.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);
if (vm_available()) {
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;
}