1 2// Similar to Cachegrind, check if instrumentation works in the presence 3// of a client request. Uses a Callgrind request to check this. 4 5#include "../callgrind.h" 6 7int some_work(int sum) 8{ 9 int i; 10 11 for(i=0;i<10;i++) sum += i; /* some dummy work */ 12 13 return sum; 14} 15 16int some_callgrind_clreqs() 17{ 18 int sum = some_work(0); 19 20 CALLGRIND_ZERO_STATS; 21 22 sum += some_work(sum); 23 24 CALLGRIND_DUMP_STATS; 25 26 sum += some_work(sum); 27 28 CALLGRIND_DUMP_STATS_AT("Please dump here"); 29 30 return some_work(sum); 31} 32 33int more_callgrind_clreqs() 34{ 35 int sum = some_callgrind_clreqs(); 36 37 CALLGRIND_TOGGLE_COLLECT; 38 39 sum += some_callgrind_clreqs(); 40 41 CALLGRIND_TOGGLE_COLLECT; 42 43 return sum; 44} 45 46 47int main(void) 48{ 49 more_callgrind_clreqs(); 50 51 CALLGRIND_STOP_INSTRUMENTATION; 52 53 more_callgrind_clreqs(); 54 55 CALLGRIND_START_INSTRUMENTATION; 56 57 more_callgrind_clreqs(); 58 59 CALLGRIND_STOP_INSTRUMENTATION; 60 61 more_callgrind_clreqs(); 62 63 CALLGRIND_START_INSTRUMENTATION; 64 65 return RUNNING_ON_VALGRIND; 66} 67 68