Loading...
Note: File does not exist in v3.5.6.
1// SPDX-License-Identifier: GPL-2.0
2#include <stdio.h>
3#include "pmu.h"
4#include "topdown.h"
5
6int topdown_filter_events(const char **attr, char **str, bool use_group)
7{
8 int off = 0;
9 int i;
10 int len = 0;
11 char *s;
12
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++;
19 }
20 attr[i - off] = NULL;
21
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;
29 }
30 if (use_group)
31 *s++ = '{';
32 for (i = 0; attr[i]; i++) {
33 strcpy(s, attr[i]);
34 s += strlen(s);
35 *s++ = ',';
36 }
37 if (use_group) {
38 s[-1] = '}';
39 *s = 0;
40 } else
41 s[-1] = 0;
42 return 0;
43}
44
45__weak bool arch_topdown_check_group(bool *warn)
46{
47 *warn = false;
48 return false;
49}
50
51__weak void arch_topdown_group_warn(void)
52{
53}
54
55__weak bool arch_topdown_sample_read(struct evsel *leader __maybe_unused)
56{
57 return false;
58}