// Similar to Cachegrind, check if instrumentation works in the presence
// of a client request. Uses a Callgrind request to check this.
#include "../callgrind.h"
int some_work(int sum)
{
int i;
for(i=0;i<10;i++) sum += i; /* some dummy work */
return sum;
}
int some_callgrind_clreqs()
{
int sum = some_work(0);
CALLGRIND_ZERO_STATS;
sum += some_work(sum);
CALLGRIND_DUMP_STATS;
sum += some_work(sum);
CALLGRIND_DUMP_STATS_AT("Please dump here");
return some_work(sum);
}
int more_callgrind_clreqs()
{
int sum = some_callgrind_clreqs();
CALLGRIND_TOGGLE_COLLECT;
sum += some_callgrind_clreqs();
CALLGRIND_TOGGLE_COLLECT;
return sum;
}
int main(void)
{
more_callgrind_clreqs();
CALLGRIND_STOP_INSTRUMENTATION;
more_callgrind_clreqs();
CALLGRIND_START_INSTRUMENTATION;
more_callgrind_clreqs();
CALLGRIND_STOP_INSTRUMENTATION;
more_callgrind_clreqs();
CALLGRIND_START_INSTRUMENTATION;
return RUNNING_ON_VALGRIND;
}