Merge tag 'powerpc-5.11-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc...
[linux/fpc-iii.git] / tools / perf / util / topdown.c
blob1081b20f9891dc9f8b655d57b20e55ec472e5bb7
1 // SPDX-License-Identifier: GPL-2.0
2 #include <stdio.h>
3 #include "pmu.h"
4 #include "topdown.h"
6 int topdown_filter_events(const char **attr, char **str, bool use_group)
8 int off = 0;
9 int i;
10 int len = 0;
11 char *s;
13 for (i = 0; attr[i]; i++) {
14 if (pmu_have_event("cpu", attr[i])) {
15 len += strlen(attr[i]) + 1;
16 attr[i - off] = attr[i];
17 } else
18 off++;
20 attr[i - off] = NULL;
22 *str = malloc(len + 1 + 2);
23 if (!*str)
24 return -1;
25 s = *str;
26 if (i - off == 0) {
27 *s = 0;
28 return 0;
30 if (use_group)
31 *s++ = '{';
32 for (i = 0; attr[i]; i++) {
33 strcpy(s, attr[i]);
34 s += strlen(s);
35 *s++ = ',';
37 if (use_group) {
38 s[-1] = '}';
39 *s = 0;
40 } else
41 s[-1] = 0;
42 return 0;
45 __weak bool arch_topdown_check_group(bool *warn)
47 *warn = false;
48 return false;
51 __weak void arch_topdown_group_warn(void)
55 __weak bool arch_topdown_sample_read(struct evsel *leader __maybe_unused)
57 return false;