Fixup t/ test apps for lfsr_next change()
[fio.git] / t / stest.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <assert.h>
4
5 #include "../smalloc.h"
6 #include "../flist.h"
7 #include "debug.h"
8
9 #define MAGIC1  0xa9b1c8d2
10 #define MAGIC2  0xf0a1e9b3
11
12 #define LOOPS   32
13
14 struct elem {
15         unsigned int magic1;
16         struct flist_head list;
17         unsigned int magic2;
18 };
19
20 FLIST_HEAD(list);
21
22 static int do_rand_allocs(void)
23 {
24         unsigned int size, nr, rounds = 0;
25         unsigned long total;
26         struct elem *e;
27
28         while (rounds++ < LOOPS) {
29 #ifdef STEST_SEED
30                 srand(MAGIC1);
31 #endif
32                 nr = total = 0;
33                 while (total < 128*1024*1024UL) {
34                         size = 8 * sizeof(struct elem) + (int) (999.0 * (rand() / (RAND_MAX + 1.0)));
35                         e = smalloc(size);
36                         if (!e) {
37                                 printf("fail at %lu, size %u\n", total, size);
38                                 break;
39                         }
40                         e->magic1 = MAGIC1;
41                         e->magic2 = MAGIC2;
42                         total += size;
43                         flist_add_tail(&e->list, &list);
44                         nr++;
45                 }
46
47                 printf("Got items: %u\n", nr);
48
49                 while (!flist_empty(&list)) {
50                         e = flist_entry(list.next, struct elem, list);
51                         assert(e->magic1 == MAGIC1);
52                         assert(e->magic2 == MAGIC2);
53                         flist_del(&e->list);
54                         sfree(e);
55                 }
56         }
57
58         return 0;
59 }
60
61 static int do_specific_alloc(unsigned long size)
62 {
63         void *ptr;
64
65         ptr = smalloc(size);
66         sfree(ptr);
67         return 0;
68 }
69
70 int main(int argc, char *argv[])
71 {
72         sinit();
73         debug_init();
74
75         do_rand_allocs();
76
77         /* smalloc bug, commit 271067a6 */
78         do_specific_alloc(671386584);
79
80         scleanup();
81         return 0;
82 }