#include "vm.h" #include "libcflat.h" 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; } 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 *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 = vmalloc(VSIZE); test_sieve("virtual", v, VSIZE); vfree(v); } return 0; }