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