1dcda215bSPaolo Bonzini #include "alloc.h"
27d36db35SAvi Kivity #include "libcflat.h"
395a94088SNicholas Piggin #include "vmalloc.h"
47d36db35SAvi Kivity
sieve(char * data,int size)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
test_sieve(const char * msg,char * data,int size)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
main(void)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);
43*b9289d76SNicholas Piggin if (vm_available()) {
447d36db35SAvi Kivity setup_vm();
457d36db35SAvi Kivity test_sieve("mapped", static_data, STATIC_SIZE);
467d36db35SAvi Kivity for (i = 0; i < 3; ++i) {
47dcda215bSPaolo Bonzini v = malloc(VSIZE);
487d36db35SAvi Kivity test_sieve("virtual", v, VSIZE);
49dcda215bSPaolo Bonzini free(v);
507d36db35SAvi Kivity }
51*b9289d76SNicholas Piggin }
527d36db35SAvi Kivity
537d36db35SAvi Kivity return 0;
547d36db35SAvi Kivity }
55