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