1 // SPDX-License-Identifier: GPL-2.0 1 // SPDX-License-Identifier: GPL-2.0 >> 2 #include <stdio.h> >> 3 #include "pmu.h" 2 #include "topdown.h" 4 #include "topdown.h" 3 #include <linux/kernel.h> !! 5 >> 6 int 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 } 4 54 5 __weak bool arch_topdown_sample_read(struct ev 55 __weak bool arch_topdown_sample_read(struct evsel *leader __maybe_unused) 6 { 56 { 7 return false; 57 return false; 8 } 58 } 9 59
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.