diff options
Diffstat (limited to 'tools/perf/util/evlist.c')
-rw-r--r-- | tools/perf/util/evlist.c | 55 |
1 files changed, 34 insertions, 21 deletions
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index 04c8a60075b3..b021ea9265c3 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c | |||
@@ -455,33 +455,46 @@ int perf_evlist__set_filters(struct perf_evlist *evlist) | |||
455 | return 0; | 455 | return 0; |
456 | } | 456 | } |
457 | 457 | ||
458 | u64 perf_evlist__sample_type(struct perf_evlist *evlist) | 458 | bool perf_evlist__valid_sample_type(const struct perf_evlist *evlist) |
459 | { | 459 | { |
460 | struct perf_evsel *pos; | 460 | struct perf_evsel *pos, *first; |
461 | u64 type = 0; | 461 | |
462 | 462 | pos = first = list_entry(evlist->entries.next, struct perf_evsel, node); | |
463 | list_for_each_entry(pos, &evlist->entries, node) { | 463 | |
464 | if (!type) | 464 | list_for_each_entry_continue(pos, &evlist->entries, node) { |
465 | type = pos->attr.sample_type; | 465 | if (first->attr.sample_type != pos->attr.sample_type) |
466 | else if (type != pos->attr.sample_type) | 466 | return false; |
467 | die("non matching sample_type"); | ||
468 | } | 467 | } |
469 | 468 | ||
470 | return type; | 469 | return true; |
471 | } | 470 | } |
472 | 471 | ||
473 | bool perf_evlist__sample_id_all(const struct perf_evlist *evlist) | 472 | u64 perf_evlist__sample_type(const struct perf_evlist *evlist) |
473 | { | ||
474 | struct perf_evsel *first; | ||
475 | |||
476 | first = list_entry(evlist->entries.next, struct perf_evsel, node); | ||
477 | return first->attr.sample_type; | ||
478 | } | ||
479 | |||
480 | bool perf_evlist__valid_sample_id_all(const struct perf_evlist *evlist) | ||
474 | { | 481 | { |
475 | bool value = false, first = true; | 482 | struct perf_evsel *pos, *first; |
476 | struct perf_evsel *pos; | 483 | |
477 | 484 | pos = first = list_entry(evlist->entries.next, struct perf_evsel, node); | |
478 | list_for_each_entry(pos, &evlist->entries, node) { | 485 | |
479 | if (first) { | 486 | list_for_each_entry_continue(pos, &evlist->entries, node) { |
480 | value = pos->attr.sample_id_all; | 487 | if (first->attr.sample_id_all != pos->attr.sample_id_all) |
481 | first = false; | 488 | return false; |
482 | } else if (value != pos->attr.sample_id_all) | ||
483 | die("non matching sample_id_all"); | ||
484 | } | 489 | } |
485 | 490 | ||
486 | return value; | 491 | return true; |
492 | } | ||
493 | |||
494 | bool perf_evlist__sample_id_all(const struct perf_evlist *evlist) | ||
495 | { | ||
496 | struct perf_evsel *first; | ||
497 | |||
498 | first = list_entry(evlist->entries.next, struct perf_evsel, node); | ||
499 | return first->attr.sample_id_all; | ||
487 | } | 500 | } |