1 #include "alloc.h" 2 #include "libcflat.h" 3 #include "vmalloc.h" 4 5 static int sieve(char* data, int size) 6 { 7 int i, j, r = 0; 8 9 for (i = 0; i < size; ++i) 10 data[i] = 1; 11 12 data[0] = data[1] = 0; 13 14 for (i = 2; i < size; ++i) 15 if (data[i]) { 16 ++r; 17 for (j = i*2; j < size; j += i) 18 data[j] = 0; 19 } 20 return r; 21 } 22 23 static void test_sieve(const char *msg, char *data, int size) 24 { 25 int r; 26 27 printf("%s:", msg); 28 r = sieve(data, size); 29 printf("%d out of %d\n", r, size); 30 } 31 32 #define STATIC_SIZE 1000000 33 #define VSIZE 100000000 34 char static_data[STATIC_SIZE]; 35 36 int main(void) 37 { 38 void *v; 39 int i; 40 41 printf("starting sieve\n"); 42 test_sieve("static", static_data, STATIC_SIZE); 43 if (vm_available()) { 44 setup_vm(); 45 test_sieve("mapped", static_data, STATIC_SIZE); 46 for (i = 0; i < 3; ++i) { 47 v = malloc(VSIZE); 48 test_sieve("virtual", v, VSIZE); 49 free(v); 50 } 51 } 52 53 return 0; 54 } 55