Lines Matching refs:switch_tracking

63 struct switch_tracking {  struct
74 static int check_comm(struct switch_tracking *switch_tracking, in check_comm() argument
81 if (switch_tracking->comm_seen[nr]) { in check_comm()
85 switch_tracking->comm_seen[nr] = 1; in check_comm()
92 static int check_cpu(struct switch_tracking *switch_tracking, int cpu) in check_cpu() argument
99 if (!switch_tracking->tids) { in check_cpu()
100 switch_tracking->tids = calloc(nr, sizeof(pid_t)); in check_cpu()
101 if (!switch_tracking->tids) in check_cpu()
104 switch_tracking->tids[i] = -1; in check_cpu()
105 switch_tracking->nr_tids = nr; in check_cpu()
109 if (cpu >= switch_tracking->nr_tids) { in check_cpu()
112 addr = realloc(switch_tracking->tids, nr * sizeof(pid_t)); in check_cpu()
115 switch_tracking->tids = addr; in check_cpu()
116 for (i = switch_tracking->nr_tids; i < nr; i++) in check_cpu()
117 switch_tracking->tids[i] = -1; in check_cpu()
118 switch_tracking->nr_tids = nr; in check_cpu()
127 struct switch_tracking *switch_tracking) in process_sample_event() argument
140 if (evsel == switch_tracking->switch_evsel) { in process_sample_event()
146 err = check_cpu(switch_tracking, cpu); in process_sample_event()
153 if (switch_tracking->tids[cpu] != -1 && in process_sample_event()
154 switch_tracking->tids[cpu] != prev_tid) { in process_sample_event()
158 switch_tracking->tids[cpu] = next_tid; in process_sample_event()
161 if (evsel == switch_tracking->cycles_evsel) { in process_sample_event()
163 if (!switch_tracking->comm_seen[0]) in process_sample_event()
164 switch_tracking->cycles_before_comm_1 = 1; in process_sample_event()
165 if (switch_tracking->comm_seen[1] && in process_sample_event()
166 !switch_tracking->comm_seen[2]) in process_sample_event()
167 switch_tracking->cycles_between_comm_2_and_comm_3 = 1; in process_sample_event()
168 if (switch_tracking->comm_seen[3]) in process_sample_event()
169 switch_tracking->cycles_after_comm_4 = 1; in process_sample_event()
176 struct switch_tracking *switch_tracking) in process_event() argument
179 return process_sample_event(evlist, event, switch_tracking); in process_event()
184 err = check_comm(switch_tracking, event, "Test COMM 1", 0); in process_event()
188 err = check_comm(switch_tracking, event, "Test COMM 2", 1); in process_event()
192 err = check_comm(switch_tracking, event, "Test COMM 3", 2); in process_event()
196 err = check_comm(switch_tracking, event, "Test COMM 4", 3); in process_event()
265 struct switch_tracking *switch_tracking) in process_events() argument
304 switch_tracking); in process_events()
330 struct switch_tracking switch_tracking = { .tids = NULL, }; in test__switch_tracking() local
537 switch_tracking.switch_evsel = switch_evsel; in test__switch_tracking()
538 switch_tracking.cycles_evsel = cycles_evsel; in test__switch_tracking()
540 err = process_events(evlist, &switch_tracking); in test__switch_tracking()
542 zfree(&switch_tracking.tids); in test__switch_tracking()
548 if (!switch_tracking.comm_seen[0] || !switch_tracking.comm_seen[1] || in test__switch_tracking()
549 !switch_tracking.comm_seen[2] || !switch_tracking.comm_seen[3]) { in test__switch_tracking()
555 if (!switch_tracking.cycles_before_comm_1) { in test__switch_tracking()
561 if (switch_tracking.cycles_between_comm_2_and_comm_3) { in test__switch_tracking()
567 if (!switch_tracking.cycles_after_comm_4) { in test__switch_tracking()
586 DEFINE_SUITE("Track with sched_switch", switch_tracking);