Lines Matching refs:term
66 struct parse_events_term *term; in get_config_str() local
71 list_for_each_entry(term, &head_terms->terms, list) in get_config_str()
72 if (term->type_term == type_term) in get_config_str()
73 return term->val.str; in get_config_str()
91 struct parse_events_term *term; in get_config_cpu() local
97 list_for_each_entry(term, &head_terms->terms, list) { in get_config_cpu()
100 if (term->type_term != PARSE_EVENTS__TERM_TYPE_CPU) in get_config_cpu()
103 if (term->type_val == PARSE_EVENTS__TERM_TYPE_NUM) { in get_config_cpu()
104 term_cpus = perf_cpu_map__new_int(term->val.num); in get_config_cpu()
106 struct perf_pmu *pmu = perf_pmus__find(term->val.str); in get_config_cpu()
113 term_cpus = perf_cpu_map__new(term->val.str); in get_config_cpu()
143 struct parse_events_term *term; in fix_raw() local
145 list_for_each_entry(term, &config_terms->terms, list) { in fix_raw()
148 if (term->type_term != PARSE_EVENTS__TERM_TYPE_RAW) in fix_raw()
151 if (perf_pmu__have_event(pmu, term->val.str)) { in fix_raw()
152 zfree(&term->config); in fix_raw()
153 term->config = term->val.str; in fix_raw()
154 term->type_val = PARSE_EVENTS__TERM_TYPE_NUM; in fix_raw()
155 term->type_term = PARSE_EVENTS__TERM_TYPE_USER; in fix_raw()
156 term->val.num = 1; in fix_raw()
157 term->no_value = true; in fix_raw()
161 zfree(&term->config); in fix_raw()
162 term->config = strdup("config"); in fix_raw()
164 num = strtoull(term->val.str + 1, NULL, 16); in fix_raw()
166 free(term->val.str); in fix_raw()
167 term->type_val = PARSE_EVENTS__TERM_TYPE_NUM; in fix_raw()
168 term->type_term = PARSE_EVENTS__TERM_TYPE_CONFIG; in fix_raw()
169 term->val.num = num; in fix_raw()
170 term->no_value = false; in fix_raw()
346 struct parse_events_term *term,
349 struct parse_events_term *term,
680 static int check_type_val(struct parse_events_term *term, in check_type_val() argument
684 if (type == term->type_val) in check_type_val()
688 parse_events_error__handle(err, term->err_val, in check_type_val()
805 struct parse_events_term *term, in config_term_common() argument
810 if (check_type_val(term, parse_state->error, PARSE_EVENTS__TERM_TYPE_ ## type)) \ in config_term_common()
814 switch (term->type_term) { in config_term_common()
817 attr->config = term->val.num; in config_term_common()
821 attr->config1 = term->val.num; in config_term_common()
825 attr->config2 = term->val.num; in config_term_common()
829 attr->config3 = term->val.num; in config_term_common()
833 attr->config4 = term->val.num; in config_term_common()
843 if (strcmp(term->val.str, "no") && in config_term_common()
844 parse_branch_str(term->val.str, in config_term_common()
846 parse_events_error__handle(parse_state->error, term->err_val, in config_term_common()
854 if (term->val.num > 1) { in config_term_common()
855 parse_events_error__handle(parse_state->error, term->err_val, in config_term_common()
896 if ((unsigned int)term->val.num > 1) { in config_term_common()
897 parse_events_error__handle(parse_state->error, term->err_val, in config_term_common()
911 if (term->val.num > UINT_MAX) { in config_term_common()
912 parse_events_error__handle(parse_state->error, term->err_val, in config_term_common()
921 if (term->type_val == PARSE_EVENTS__TERM_TYPE_NUM) { in config_term_common()
922 if (term->val.num >= (u64)cpu__max_present_cpu().cpu) { in config_term_common()
923 parse_events_error__handle(parse_state->error, term->err_val, in config_term_common()
930 assert(term->type_val == PARSE_EVENTS__TERM_TYPE_STR); in config_term_common()
931 if (perf_pmus__find(term->val.str) != NULL) in config_term_common()
934 map = perf_cpu_map__new(term->val.str); in config_term_common()
936 parse_events_error__handle(parse_state->error, term->err_val, in config_term_common()
946 if (strtod(term->val.str, NULL) <= 0) { in config_term_common()
947 parse_events_error__handle(parse_state->error, term->err_val, in config_term_common()
953 parse_events_error__handle(parse_state->error, term->err_val, in config_term_common()
964 parse_events_error__handle(parse_state->error, term->err_term, in config_term_common()
965 strdup(parse_events__term_type_str(term->type_term)), in config_term_common()
979 if (!config_term_avail(term->type_term, parse_state->error)) in config_term_common()
985 static bool check_pmu_is_core(__u32 type, const struct parse_events_term *term, in check_pmu_is_core() argument
995 parse_events_error__handle(err, term->err_val, in check_pmu_is_core()
1002 struct parse_events_term *term, in config_term_pmu() argument
1005 if (term->type_term == PARSE_EVENTS__TERM_TYPE_LEGACY_HARDWARE_CONFIG) { in config_term_pmu()
1006 if (check_type_val(term, parse_state->error, PARSE_EVENTS__TERM_TYPE_NUM)) in config_term_pmu()
1008 if (term->val.num >= PERF_COUNT_HW_MAX) { in config_term_pmu()
1009 parse_events_error__handle(parse_state->error, term->err_val, in config_term_pmu()
1014 if (!check_pmu_is_core(attr->type, term, parse_state->error)) in config_term_pmu()
1016 attr->config = term->val.num; in config_term_pmu()
1022 if (term->type_term == PARSE_EVENTS__TERM_TYPE_LEGACY_CACHE_CONFIG) { in config_term_pmu()
1025 if (check_type_val(term, parse_state->error, PARSE_EVENTS__TERM_TYPE_NUM)) in config_term_pmu()
1027 cache_type = term->val.num & 0xFF; in config_term_pmu()
1028 cache_op = (term->val.num >> 8) & 0xFF; in config_term_pmu()
1029 cache_result = (term->val.num >> 16) & 0xFF; in config_term_pmu()
1030 if ((term->val.num & ~0xFFFFFF) || in config_term_pmu()
1034 parse_events_error__handle(parse_state->error, term->err_val, in config_term_pmu()
1039 if (!check_pmu_is_core(attr->type, term, parse_state->error)) in config_term_pmu()
1041 attr->config = term->val.num; in config_term_pmu()
1047 if (term->type_term == PARSE_EVENTS__TERM_TYPE_USER || in config_term_pmu()
1048 term->type_term == PARSE_EVENTS__TERM_TYPE_DRV_CFG) { in config_term_pmu()
1055 return config_term_common(attr, term, parse_state); in config_term_pmu()
1059 struct parse_events_term *term, in config_term_tracepoint() argument
1062 switch (term->type_term) { in config_term_tracepoint()
1074 return config_term_common(attr, term, parse_state); in config_term_tracepoint()
1095 parse_events_error__handle(parse_state->error, term->err_term, in config_term_tracepoint()
1096 strdup(parse_events__term_type_str(term->type_term)), in config_term_tracepoint()
1110 struct parse_events_term *term; in config_attr() local
1112 list_for_each_entry(term, &head->terms, list) in config_attr()
1113 if (config_term(attr, term, parse_state)) in config_attr()
1151 struct parse_events_term *term; in get_config_terms() local
1153 list_for_each_entry(term, &head_config->terms, list) { in get_config_terms()
1154 switch (term->type_term) { in get_config_terms()
1156 ADD_CONFIG_TERM_VAL(PERIOD, period, term->val.num, term->weak); in get_config_terms()
1159 ADD_CONFIG_TERM_VAL(FREQ, freq, term->val.num, term->weak); in get_config_terms()
1162 ADD_CONFIG_TERM_VAL(TIME, time, term->val.num, term->weak); in get_config_terms()
1165 ADD_CONFIG_TERM_STR(CALLGRAPH, term->val.str, term->weak); in get_config_terms()
1168 ADD_CONFIG_TERM_STR(BRANCH, term->val.str, term->weak); in get_config_terms()
1172 term->val.num, term->weak); in get_config_terms()
1176 term->val.num ? 1 : 0, term->weak); in get_config_terms()
1180 term->val.num ? 0 : 1, term->weak); in get_config_terms()
1184 term->val.num, term->weak); in get_config_terms()
1188 term->val.num, term->weak); in get_config_terms()
1192 term->val.num ? 1 : 0, term->weak); in get_config_terms()
1196 term->val.num ? 0 : 1, term->weak); in get_config_terms()
1199 ADD_CONFIG_TERM_STR(DRV_CFG, term->val.str, term->weak); in get_config_terms()
1203 term->val.num ? true : false, term->weak); in get_config_terms()
1207 term->val.num ? 1 : 0, term->weak); in get_config_terms()
1210 ADD_CONFIG_TERM_STR(AUX_ACTION, term->val.str, term->weak); in get_config_terms()
1214 term->val.num, term->weak); in get_config_terms()
1217 ADD_CONFIG_TERM_STR(RATIO_TO_PREV, term->val.str, term->weak); in get_config_terms()
1245 struct parse_events_term *term; in get_config_chgs() local
1249 list_for_each_entry(term, &head_config->terms, list) { in get_config_chgs()
1250 switch (term->type_term) { in get_config_chgs()
1252 type = perf_pmu__format_type(pmu, term->config); in get_config_chgs()
1255 bits |= perf_pmu__format_bits(pmu, term->config); in get_config_chgs()
1397 struct evsel_config_term *term; in config_term_percore() local
1399 list_for_each_entry(term, config_terms, list) { in config_term_percore()
1400 if (term->type == EVSEL__CONFIG_TERM_PERCORE) in config_term_percore()
1401 return term->val.percore; in config_term_percore()
1549 struct parse_events_term *term; in parse_events_multi_pmu_add() local
1572 if (parse_events_term__num(&term, in parse_events_multi_pmu_add()
1579 list_add_tail(&term->list, &parsed_terms.terms); in parse_events_multi_pmu_add()
2595 int parse_events__is_hardcoded_term(struct parse_events_term *term) in parse_events__is_hardcoded_term() argument
2597 return term->type_term != PARSE_EVENTS__TERM_TYPE_USER; in parse_events__is_hardcoded_term()
2604 struct parse_events_term *term; in new_term() local
2606 term = malloc(sizeof(*term)); in new_term()
2607 if (!term) in new_term()
2610 *term = *temp; in new_term()
2611 INIT_LIST_HEAD(&term->list); in new_term()
2612 term->weak = false; in new_term()
2614 switch (term->type_val) { in new_term()
2616 term->val.num = num; in new_term()
2619 term->val.str = str; in new_term()
2622 free(term); in new_term()
2626 *_term = term; in new_term()
2630 int parse_events_term__num(struct parse_events_term **term, in parse_events_term__num() argument
2648 return new_term(term, &temp, /*str=*/NULL, num); in parse_events_term__num()
2651 int parse_events_term__str(struct parse_events_term **term, in parse_events_term__str() argument
2667 return new_term(term, &temp, str, /*num=*/0); in parse_events_term__str()
2670 int parse_events_term__term(struct parse_events_term **term, in parse_events_term__term() argument
2675 return parse_events_term__str(term, term_lhs, NULL, in parse_events_term__term()
2681 const struct parse_events_term *term) in parse_events_term__clone() argument
2684 struct parse_events_term temp = *term; in parse_events_term__clone()
2687 if (term->config) { in parse_events_term__clone()
2688 temp.config = strdup(term->config); in parse_events_term__clone()
2692 if (term->type_val == PARSE_EVENTS__TERM_TYPE_NUM) in parse_events_term__clone()
2693 return new_term(new, &temp, /*str=*/NULL, term->val.num); in parse_events_term__clone()
2695 str = strdup(term->val.str); in parse_events_term__clone()
2703 void parse_events_term__delete(struct parse_events_term *term) in parse_events_term__delete() argument
2705 if (term->type_val != PARSE_EVENTS__TERM_TYPE_NUM) in parse_events_term__delete()
2706 zfree(&term->val.str); in parse_events_term__delete()
2708 zfree(&term->config); in parse_events_term__delete()
2709 free(term); in parse_events_term__delete()
2715 struct parse_events_term *term; in parse_events_terms__copy() local
2717 list_for_each_entry (term, &src->terms, list) { in parse_events_terms__copy()
2721 ret = parse_events_term__clone(&n, term); in parse_events_terms__copy()
2737 struct parse_events_term *term, *h; in parse_events_terms__exit() local
2739 list_for_each_entry_safe(term, h, &terms->terms, list) { in parse_events_terms__exit()
2740 list_del_init(&term->list); in parse_events_terms__exit()
2741 parse_events_term__delete(term); in parse_events_terms__exit()
2755 struct parse_events_term *term; in parse_events_terms__to_strbuf() local
2761 list_for_each_entry(term, &terms->terms, list) { in parse_events_terms__to_strbuf()
2771 if (term->type_val == PARSE_EVENTS__TERM_TYPE_NUM) in parse_events_terms__to_strbuf()
2772 if (term->no_value) { in parse_events_terms__to_strbuf()
2773 assert(term->val.num == 1); in parse_events_terms__to_strbuf()
2774 ret = strbuf_addf(sb, "%s", term->config); in parse_events_terms__to_strbuf()
2776 ret = strbuf_addf(sb, "%s=%#"PRIx64, term->config, term->val.num); in parse_events_terms__to_strbuf()
2777 else if (term->type_val == PARSE_EVENTS__TERM_TYPE_STR) { in parse_events_terms__to_strbuf()
2778 if (term->config) { in parse_events_terms__to_strbuf()
2779 ret = strbuf_addf(sb, "%s=", term->config); in parse_events_terms__to_strbuf()
2782 } else if ((unsigned int)term->type_term < __PARSE_EVENTS__TERM_TYPE_NR) { in parse_events_terms__to_strbuf()
2784 parse_events__term_type_str(term->type_term)); in parse_events_terms__to_strbuf()
2788 assert(!term->no_value); in parse_events_terms__to_strbuf()
2789 ret = strbuf_addf(sb, "%s", term->val.str); in parse_events_terms__to_strbuf()