1 // This test is for testing that the --threshold options in both Massif and
2 // ms_print work as they should.  A threshold of 10% is a good choice for
3 // this file, because in some parts of the tree it renders all children
4 // insignificant, and in others parts of the tree it renders only some
5 // children insignificant.
6 //
7 // Also, it's deliberate that the 'malloc(2000)' and 'my_malloc1(500)' calls
8 // are in 'main' -- at one point, ms_print was failing to connect some
9 // children arrows when a more significant child didn't have any children of
10 // its own, eg:
11 //
12 //   |
13 //   ->20.00% (2000B) 0x804846A: main (thresholds.c:43)
14 //
15 //   ->13.00% (1300B) 0x80483A4: my_malloc2 (thresholds.c:16)
16 //
17 // (There must be a '|' between the '->'s.)
18 
19 #include <stdlib.h>
20 
21 void my_malloc1(int n)
22 {
23    malloc(n);
24 }
25 
26 void my_malloc2(int n)
27 {
28    malloc(n);
29 }
30 
31 void my_malloc3(int n)
32 {
33    malloc(n);
34 }
35 
36 void a7550(void)
37 {
38    my_malloc1(48000);
39    my_malloc2( 7200);
40 }
41 
42 void a450(void)
43 {
44    my_malloc2(2400);
45    my_malloc1( 800);
46    my_malloc2( 800);
47    my_malloc1( 400);
48 }
49 
50 int main(void)
51 {
52    a7550();
53    a450();
54    my_malloc1(4000);       // All sizes are divisible by 16 -- no slop.
55    malloc(16000);
56    my_malloc3(400);
57    return 0;
58 }
59