1dcda215bSPaolo Bonzini #include "alloc.h" 27d36db35SAvi Kivity #include "libcflat.h" 3*95a94088SNicholas Piggin #include "vmalloc.h" 47d36db35SAvi Kivity 5db4898e8SThomas Huth static int sieve(char* data, int size) 67d36db35SAvi Kivity { 77d36db35SAvi Kivity int i, j, r = 0; 87d36db35SAvi Kivity 97d36db35SAvi Kivity for (i = 0; i < size; ++i) 107d36db35SAvi Kivity data[i] = 1; 117d36db35SAvi Kivity 127d36db35SAvi Kivity data[0] = data[1] = 0; 137d36db35SAvi Kivity 147d36db35SAvi Kivity for (i = 2; i < size; ++i) 157d36db35SAvi Kivity if (data[i]) { 167d36db35SAvi Kivity ++r; 177d36db35SAvi Kivity for (j = i*2; j < size; j += i) 187d36db35SAvi Kivity data[j] = 0; 197d36db35SAvi Kivity } 207d36db35SAvi Kivity return r; 217d36db35SAvi Kivity } 227d36db35SAvi Kivity 23db4898e8SThomas Huth static void test_sieve(const char *msg, char *data, int size) 247d36db35SAvi Kivity { 257d36db35SAvi Kivity int r; 267d36db35SAvi Kivity 277d36db35SAvi Kivity printf("%s:", msg); 287d36db35SAvi Kivity r = sieve(data, size); 297d36db35SAvi Kivity printf("%d out of %d\n", r, size); 307d36db35SAvi Kivity } 317d36db35SAvi Kivity 327d36db35SAvi Kivity #define STATIC_SIZE 1000000 337d36db35SAvi Kivity #define VSIZE 100000000 347d36db35SAvi Kivity char static_data[STATIC_SIZE]; 357d36db35SAvi Kivity 367db17e21SThomas Huth int main(void) 377d36db35SAvi Kivity { 387d36db35SAvi Kivity void *v; 397d36db35SAvi Kivity int i; 407d36db35SAvi Kivity 417d36db35SAvi Kivity printf("starting sieve\n"); 427d36db35SAvi Kivity test_sieve("static", static_data, STATIC_SIZE); 437d36db35SAvi Kivity setup_vm(); 447d36db35SAvi Kivity test_sieve("mapped", static_data, STATIC_SIZE); 457d36db35SAvi Kivity for (i = 0; i < 3; ++i) { 46dcda215bSPaolo Bonzini v = malloc(VSIZE); 477d36db35SAvi Kivity test_sieve("virtual", v, VSIZE); 48dcda215bSPaolo Bonzini free(v); 497d36db35SAvi Kivity } 507d36db35SAvi Kivity 517d36db35SAvi Kivity return 0; 527d36db35SAvi Kivity } 53