1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21#include "qemu/osdep.h"
22#include "qemu/cutils.h"
23
24static char buffer[8 * 1024 * 1024];
25
26static void test_1(void)
27{
28 size_t s, a, o;
29
30
31 g_assert(buffer_is_zero(buffer, sizeof(buffer)));
32
33
34 buffer[sizeof(buffer) - 1] = 1;
35 g_assert(!buffer_is_zero(buffer, sizeof(buffer)));
36 buffer[sizeof(buffer) - 1] = 0;
37
38
39 for (a = 1; a <= 64; a++) {
40 for (s = 1; s < 1024; s++) {
41 buffer[a - 1] = 1;
42 buffer[a + s] = 1;
43 g_assert(buffer_is_zero(buffer + a, s));
44 buffer[a - 1] = 0;
45 buffer[a + s] = 0;
46 }
47 }
48
49
50 for (a = 1; a <= 64; a++) {
51 for (s = 1; s < 1024; s++) {
52 for (o = 0; o < s; ++o) {
53 buffer[a + o] = 1;
54 g_assert(!buffer_is_zero(buffer + a, s));
55 buffer[a + o] = 0;
56 }
57 }
58 }
59}
60
61static void test_2(void)
62{
63 if (g_test_perf()) {
64 test_1();
65 } else {
66 do {
67 test_1();
68 } while (test_buffer_is_zero_next_accel());
69 }
70}
71
72int main(int argc, char **argv)
73{
74 g_test_init(&argc, &argv, NULL);
75 g_test_add_func("/cutils/bufferiszero", test_2);
76
77 return g_test_run();
78}
79