1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
// 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;
}
|