test: rename kvm/user/test to kvm/user
[qemu-kvm/amd-iommu.git] / kvm / user / x86 / sieve.c
bloba707b92dca88fba99c0ce3ef1d4e823c0017a01e
1 #include "vm.h"
3 void print(const char *text);
5 void printi(int n)
7 char buf[10], *p = buf;
8 int s = 0, i;
10 if (n < 0) {
11 n = -n;
12 s = 1;
15 while (n) {
16 *p++ = '0' + n % 10;
17 n /= 10;
20 if (s)
21 *p++ = '-';
23 if (p == buf)
24 *p++ = '0';
26 for (i = 0; i < (p - buf) / 2; ++i) {
27 char tmp;
29 tmp = buf[i];
30 buf[i] = p[-1-i];
31 p[-1-i] = tmp;
34 *p = 0;
36 print(buf);
39 int sieve(char* data, int size)
41 int i, j, r = 0;
43 for (i = 0; i < size; ++i)
44 data[i] = 1;
46 data[0] = data[1] = 0;
48 for (i = 2; i < size; ++i)
49 if (data[i]) {
50 ++r;
51 for (j = i*2; j < size; j += i)
52 data[j] = 0;
54 return r;
57 void test_sieve(const char *msg, char *data, int size)
59 int r;
61 print(msg);
62 print(": ");
63 r = sieve(data, size);
64 printi(r);
65 print("\n");
68 #define STATIC_SIZE 1000000
69 #define VSIZE 100000000
70 char static_data[STATIC_SIZE];
72 int main()
74 void *v;
75 int i;
77 print("starting sieve\n");
78 test_sieve("static", static_data, STATIC_SIZE);
79 setup_vm();
80 print("mapped: ");
81 test_sieve("mapped", static_data, STATIC_SIZE);
82 for (i = 0; i < 30; ++i) {
83 v = vmalloc(VSIZE);
84 test_sieve("virtual", v, VSIZE);
85 vfree(v);
88 return 0;