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