xref: /kvm-unit-tests/common/sieve.c (revision dcda215bee0e3d21eefba1b3658ba384952b5576)
1*dcda215bSPaolo Bonzini #include "alloc.h"
27d36db35SAvi Kivity #include "libcflat.h"
37d36db35SAvi Kivity 
47d36db35SAvi Kivity int sieve(char* data, int size)
57d36db35SAvi Kivity {
67d36db35SAvi Kivity     int i, j, r = 0;
77d36db35SAvi Kivity 
87d36db35SAvi Kivity     for (i = 0; i < size; ++i)
97d36db35SAvi Kivity 	data[i] = 1;
107d36db35SAvi Kivity 
117d36db35SAvi Kivity     data[0] = data[1] = 0;
127d36db35SAvi Kivity 
137d36db35SAvi Kivity     for (i = 2; i < size; ++i)
147d36db35SAvi Kivity 	if (data[i]) {
157d36db35SAvi Kivity 	    ++r;
167d36db35SAvi Kivity 	    for (j = i*2; j < size; j += i)
177d36db35SAvi Kivity 		data[j] = 0;
187d36db35SAvi Kivity 	}
197d36db35SAvi Kivity     return r;
207d36db35SAvi Kivity }
217d36db35SAvi Kivity 
227d36db35SAvi Kivity void test_sieve(const char *msg, char *data, int size)
237d36db35SAvi Kivity {
247d36db35SAvi Kivity     int r;
257d36db35SAvi Kivity 
267d36db35SAvi Kivity     printf("%s:", msg);
277d36db35SAvi Kivity     r = sieve(data, size);
287d36db35SAvi Kivity     printf("%d out of %d\n", r, size);
297d36db35SAvi Kivity }
307d36db35SAvi Kivity 
317d36db35SAvi Kivity #define STATIC_SIZE 1000000
327d36db35SAvi Kivity #define VSIZE 100000000
337d36db35SAvi Kivity char static_data[STATIC_SIZE];
347d36db35SAvi Kivity 
357d36db35SAvi Kivity int main()
367d36db35SAvi Kivity {
377d36db35SAvi Kivity     void *v;
387d36db35SAvi Kivity     int i;
397d36db35SAvi Kivity 
407d36db35SAvi Kivity     printf("starting sieve\n");
417d36db35SAvi Kivity     test_sieve("static", static_data, STATIC_SIZE);
427d36db35SAvi Kivity     setup_vm();
437d36db35SAvi Kivity     test_sieve("mapped", static_data, STATIC_SIZE);
447d36db35SAvi Kivity     for (i = 0; i < 3; ++i) {
45*dcda215bSPaolo Bonzini 	v = malloc(VSIZE);
467d36db35SAvi Kivity 	test_sieve("virtual", v, VSIZE);
47*dcda215bSPaolo Bonzini 	free(v);
487d36db35SAvi Kivity     }
497d36db35SAvi Kivity 
507d36db35SAvi Kivity     return 0;
517d36db35SAvi Kivity }
52