Linux Audio

Check our new training course

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}