// This test is for testing that the --threshold options in both Massif and // ms_print work as they should. A threshold of 10% is a good choice for // this file, because in some parts of the tree it renders all children // insignificant, and in others parts of the tree it renders only some // children insignificant. // // Also, it's deliberate that the 'malloc(2000)' and 'my_malloc1(500)' calls // are in 'main' -- at one point, ms_print was failing to connect some // children arrows when a more significant child didn't have any children of // its own, eg: // // | // ->20.00% (2000B) 0x804846A: main (thresholds.c:43) // // ->13.00% (1300B) 0x80483A4: my_malloc2 (thresholds.c:16) // // (There must be a '|' between the '->'s.) #include <stdlib.h> void my_malloc1(int n) { malloc(n); } void my_malloc2(int n) { malloc(n); } void my_malloc3(int n) { malloc(n); } void a7550(void) { my_malloc1(48000); my_malloc2( 7200); } void a450(void) { my_malloc2(2400); my_malloc1( 800); my_malloc2( 800); my_malloc1( 400); } int main(void) { a7550(); a450(); my_malloc1(4000); // All sizes are divisible by 16 -- no slop. malloc(16000); my_malloc3(400); return 0; }