Skip to content

Commit c3537fc

Browse files
Andi Kleenacmel
authored andcommitted
perf evlist: Move perf_evsel__reset_weak_group into evlist
- Move the function from builtin-stat to evlist for reuse - Rename to evlist to match purpose better - Pass the evlist as first argument. - No functional changes Signed-off-by: Andi Kleen <ak@linux.intel.com> Acked-by: Jiri Olsa <jolsa@kernel.org> Link: http://lkml.kernel.org/r/20181001195927.14211-1-andi@firstfloor.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
1 parent 79ef68c commit c3537fc

File tree

3 files changed

+31
-27
lines changed

3 files changed

+31
-27
lines changed

tools/perf/builtin-stat.c

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -383,32 +383,6 @@ static bool perf_evsel__should_store_id(struct perf_evsel *counter)
383383
return STAT_RECORD || counter->attr.read_format & PERF_FORMAT_ID;
384384
}
385385

386-
static struct perf_evsel *perf_evsel__reset_weak_group(struct perf_evsel *evsel)
387-
{
388-
struct perf_evsel *c2, *leader;
389-
bool is_open = true;
390-
391-
leader = evsel->leader;
392-
pr_debug("Weak group for %s/%d failed\n",
393-
leader->name, leader->nr_members);
394-
395-
/*
396-
* for_each_group_member doesn't work here because it doesn't
397-
* include the first entry.
398-
*/
399-
evlist__for_each_entry(evsel_list, c2) {
400-
if (c2 == evsel)
401-
is_open = false;
402-
if (c2->leader == leader) {
403-
if (is_open)
404-
perf_evsel__close(c2);
405-
c2->leader = c2;
406-
c2->nr_members = 0;
407-
}
408-
}
409-
return leader;
410-
}
411-
412386
static bool is_target_alive(struct target *_target,
413387
struct thread_map *threads)
414388
{
@@ -477,7 +451,7 @@ static int __run_perf_stat(int argc, const char **argv, int run_idx)
477451
if ((errno == EINVAL || errno == EBADF) &&
478452
counter->leader != counter &&
479453
counter->weak_group) {
480-
counter = perf_evsel__reset_weak_group(counter);
454+
counter = perf_evlist__reset_weak_group(evsel_list, counter);
481455
goto try_again;
482456
}
483457

tools/perf/util/evlist.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1810,3 +1810,30 @@ void perf_evlist__force_leader(struct perf_evlist *evlist)
18101810
leader->forced_leader = true;
18111811
}
18121812
}
1813+
1814+
struct perf_evsel *perf_evlist__reset_weak_group(struct perf_evlist *evsel_list,
1815+
struct perf_evsel *evsel)
1816+
{
1817+
struct perf_evsel *c2, *leader;
1818+
bool is_open = true;
1819+
1820+
leader = evsel->leader;
1821+
pr_debug("Weak group for %s/%d failed\n",
1822+
leader->name, leader->nr_members);
1823+
1824+
/*
1825+
* for_each_group_member doesn't work here because it doesn't
1826+
* include the first entry.
1827+
*/
1828+
evlist__for_each_entry(evsel_list, c2) {
1829+
if (c2 == evsel)
1830+
is_open = false;
1831+
if (c2->leader == leader) {
1832+
if (is_open)
1833+
perf_evsel__close(c2);
1834+
c2->leader = c2;
1835+
c2->nr_members = 0;
1836+
}
1837+
}
1838+
return leader;
1839+
}

tools/perf/util/evlist.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,4 +312,7 @@ bool perf_evlist__exclude_kernel(struct perf_evlist *evlist);
312312

313313
void perf_evlist__force_leader(struct perf_evlist *evlist);
314314

315+
struct perf_evsel *perf_evlist__reset_weak_group(struct perf_evlist *evlist,
316+
struct perf_evsel *evsel);
317+
315318
#endif /* __PERF_EVLIST_H */

0 commit comments

Comments
 (0)