// 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;
}