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