12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // SPDX-License-Identifier: GPL-2.0
- #include <stdio.h>
- #include "pmu.h"
- #include "topdown.h"
- int topdown_filter_events(const char **attr, char **str, bool use_group)
- {
- int off = 0;
- int i;
- int len = 0;
- char *s;
- for (i = 0; attr[i]; i++) {
- if (pmu_have_event("cpu", attr[i])) {
- len += strlen(attr[i]) + 1;
- attr[i - off] = attr[i];
- } else
- off++;
- }
- attr[i - off] = NULL;
- *str = malloc(len + 1 + 2);
- if (!*str)
- return -1;
- s = *str;
- if (i - off == 0) {
- *s = 0;
- return 0;
- }
- if (use_group)
- *s++ = '{';
- for (i = 0; attr[i]; i++) {
- strcpy(s, attr[i]);
- s += strlen(s);
- *s++ = ',';
- }
- if (use_group) {
- s[-1] = '}';
- *s = 0;
- } else
- s[-1] = 0;
- return 0;
- }
- __weak bool arch_topdown_check_group(bool *warn)
- {
- *warn = false;
- return false;
- }
- __weak void arch_topdown_group_warn(void)
- {
- }
- __weak bool arch_topdown_sample_read(struct evsel *leader __maybe_unused)
- {
- return false;
- }
|