switch_tracking
switch_tracking->tids = calloc(nr, sizeof(pid_t));
if (!switch_tracking->tids)
switch_tracking->tids[i] = -1;
switch_tracking->nr_tids = nr;
if (cpu >= switch_tracking->nr_tids) {
addr = realloc(switch_tracking->tids, nr * sizeof(pid_t));
switch_tracking->tids = addr;
for (i = switch_tracking->nr_tids; i < nr; i++)
switch_tracking->tids[i] = -1;
switch_tracking->nr_tids = nr;
struct switch_tracking *switch_tracking)
if (evsel == switch_tracking->switch_evsel) {
err = check_cpu(switch_tracking, cpu);
if (switch_tracking->tids[cpu] != -1 &&
switch_tracking->tids[cpu] != prev_tid) {
switch_tracking->tids[cpu] = next_tid;
if (evsel == switch_tracking->cycles_evsel) {
if (!switch_tracking->comm_seen[0])
switch_tracking->cycles_before_comm_1 = 1;
if (switch_tracking->comm_seen[1] &&
!switch_tracking->comm_seen[2])
switch_tracking->cycles_between_comm_2_and_comm_3 = 1;
if (switch_tracking->comm_seen[3])
switch_tracking->cycles_after_comm_4 = 1;
struct switch_tracking *switch_tracking)
return process_sample_event(evlist, event, switch_tracking);
err = check_comm(switch_tracking, event, "Test COMM 1", 0);
err = check_comm(switch_tracking, event, "Test COMM 2", 1);
err = check_comm(switch_tracking, event, "Test COMM 3", 2);
err = check_comm(switch_tracking, event, "Test COMM 4", 3);
struct switch_tracking *switch_tracking)
switch_tracking);
struct switch_tracking switch_tracking = { .tids = NULL, };
switch_tracking.switch_evsel = switch_evsel;
switch_tracking.cycles_evsel = cycles_evsel;
err = process_events(evlist, &switch_tracking);
zfree(&switch_tracking.tids);
if (!switch_tracking.comm_seen[0] || !switch_tracking.comm_seen[1] ||
!switch_tracking.comm_seen[2] || !switch_tracking.comm_seen[3]) {
if (!switch_tracking.cycles_before_comm_1) {
if (switch_tracking.cycles_between_comm_2_and_comm_3) {
if (!switch_tracking.cycles_after_comm_4) {
DEFINE_SUITE_EXCLUSIVE("Track with sched_switch", switch_tracking);
static int check_comm(struct switch_tracking *switch_tracking,
if (switch_tracking->comm_seen[nr]) {
switch_tracking->comm_seen[nr] = 1;
static int check_cpu(struct switch_tracking *switch_tracking, int cpu)
if (!switch_tracking->tids) {
DECLARE_SUITE(switch_tracking);