Lines Matching refs:term
12 #include "term.h"
328 static int parse_events__is_name_term(struct parse_events_term *term)
330 return term->type_term == PARSE_EVENTS__TERM_TYPE_NAME;
335 struct parse_events_term *term;
340 list_for_each_entry(term, head_terms, list)
341 if (parse_events__is_name_term(term))
342 return term->val.str;
445 struct parse_events_term *term,
448 struct parse_events_term *term,
789 struct parse_events_term *term;
795 list_for_each_entry(term, head_config, list) {
798 if (term->type_term != PARSE_EVENTS__TERM_TYPE_USER) {
799 parse_events__handle_error(parse_state->error, term->err_term,
800 strdup("Invalid config term for BPF object"),
805 err = bpf__config_obj(obj, term, parse_state->evlist, &error_pos);
810 bpf__strerror_config_obj(obj, term, parse_state->evlist,
815 idx = term->err_val;
817 idx = term->err_term + error_pos;
848 struct parse_events_term *term, *temp;
851 * Currectly, all possible user config term
858 list_for_each_entry_safe(term, temp, evt_head_config, list)
859 if (!parse_events__is_hardcoded_term(term))
860 list_move_tail(&term->list, obj_head_config);
977 static int check_type_val(struct parse_events_term *term,
981 if (type == term->type_val)
985 parse_events__handle_error(err, term->err_val,
998 [PARSE_EVENTS__TERM_TYPE_USER] = "<sysfs term>",
1062 struct parse_events_term *term,
1067 if (check_type_val(term, err, PARSE_EVENTS__TERM_TYPE_ ## type)) \
1071 switch (term->type_term) {
1074 attr->config = term->val.num;
1078 attr->config1 = term->val.num;
1082 attr->config2 = term->val.num;
1092 if (strcmp(term->val.str, "no") &&
1093 parse_branch_str(term->val.str,
1095 parse_events__handle_error(err, term->err_val,
1103 if (term->val.num > 1) {
1104 parse_events__handle_error(err, term->err_val,
1139 if ((unsigned int)term->val.num > 1) {
1140 parse_events__handle_error(err, term->err_val,
1151 if (term->val.num > UINT_MAX) {
1152 parse_events__handle_error(err, term->err_val,
1159 parse_events__handle_error(err, term->err_term,
1160 strdup("unknown term"),
1166 * Check term availbility after basic checking so
1170 * user will see "'<sysfs term>' is not usable in 'perf stat'"
1171 * if an invalid config term is provided for legacy events
1174 if (!config_term_avail(term->type_term, err))
1181 struct parse_events_term *term,
1184 if (term->type_term == PARSE_EVENTS__TERM_TYPE_USER ||
1185 term->type_term == PARSE_EVENTS__TERM_TYPE_DRV_CFG)
1192 return config_term_common(attr, term, err);
1196 struct parse_events_term *term,
1199 switch (term->type_term) {
1210 return config_term_common(attr, term, err);
1213 parse_events__handle_error(err, term->err_term,
1214 strdup("unknown term"),
1228 struct parse_events_term *term;
1230 list_for_each_entry(term, head, list)
1231 if (config_term(attr, term, err))
1269 struct parse_events_term *term;
1271 list_for_each_entry(term, head_config, list) {
1272 switch (term->type_term) {
1274 ADD_CONFIG_TERM_VAL(PERIOD, period, term->val.num, term->weak);
1277 ADD_CONFIG_TERM_VAL(FREQ, freq, term->val.num, term->weak);
1280 ADD_CONFIG_TERM_VAL(TIME, time, term->val.num, term->weak);
1283 ADD_CONFIG_TERM_STR(CALLGRAPH, term->val.str, term->weak);
1286 ADD_CONFIG_TERM_STR(BRANCH, term->val.str, term->weak);
1290 term->val.num, term->weak);
1294 term->val.num ? 1 : 0, term->weak);
1298 term->val.num ? 0 : 1, term->weak);
1302 term->val.num, term->weak);
1306 term->val.num, term->weak);
1310 term->val.num ? 1 : 0, term->weak);
1314 term->val.num ? 0 : 1, term->weak);
1317 ADD_CONFIG_TERM_STR(DRV_CFG, term->val.str, term->weak);
1321 term->val.num ? true : false, term->weak);
1325 term->val.num ? 1 : 0, term->weak);
1329 term->val.num, term->weak);
1345 struct parse_events_term *term;
1349 list_for_each_entry(term, head_config, list) {
1350 switch (term->type_term) {
1352 type = perf_pmu__format_type(&pmu->format, term->config);
1355 bits |= perf_pmu__format_bits(&pmu->format, term->config);
1427 struct evsel_config_term *term;
1429 list_for_each_entry(term, config_terms, list) {
1430 if (term->type == EVSEL__CONFIG_TERM_PERCORE)
1431 return term->val.percore;
1457 struct parse_events_term *term;
1459 list_for_each_entry(term, head_config, list) {
1460 fprintf(stderr, "%s,", term->config);
1505 struct parse_events_term *term;
1507 list_for_each_entry(term, head_config, list) {
1508 fprintf(stderr, "%s,", term->config);
1568 struct parse_events_term *term;
1594 if (parse_events_term__num(&term,
1602 list_add_tail(&term->list, head);
2046 * This function injects special term in
2926 int parse_events__is_hardcoded_term(struct parse_events_term *term)
2928 return term->type_term != PARSE_EVENTS__TERM_TYPE_USER;
2935 struct parse_events_term *term;
2937 term = malloc(sizeof(*term));
2938 if (!term)
2941 *term = *temp;
2942 INIT_LIST_HEAD(&term->list);
2943 term->weak = false;
2945 switch (term->type_val) {
2947 term->val.num = num;
2950 term->val.str = str;
2953 free(term);
2957 *_term = term;
2961 int parse_events_term__num(struct parse_events_term **term,
2978 return new_term(term, &temp, NULL, num);
2981 int parse_events_term__str(struct parse_events_term **term,
2996 return new_term(term, &temp, str, 0);
2999 int parse_events_term__sym_hw(struct parse_events_term **term,
3021 return new_term(term, &temp, str, 0);
3025 struct parse_events_term *term)
3029 .type_val = term->type_val,
3030 .type_term = term->type_term,
3032 .err_term = term->err_term,
3033 .err_val = term->err_val,
3036 if (term->config) {
3037 temp.config = strdup(term->config);
3041 if (term->type_val == PARSE_EVENTS__TERM_TYPE_NUM)
3042 return new_term(new, &temp, NULL, term->val.num);
3044 str = strdup(term->val.str);
3050 void parse_events_term__delete(struct parse_events_term *term)
3052 if (term->array.nr_ranges)
3053 zfree(&term->array.ranges);
3055 if (term->type_val != PARSE_EVENTS__TERM_TYPE_NUM)
3056 zfree(&term->val.str);
3058 zfree(&term->config);
3059 free(term);
3065 struct parse_events_term *term, *n;
3078 list_for_each_entry (term, old, list) {
3079 ret = parse_events_term__clone(&n, term);
3089 struct parse_events_term *term, *h;
3091 list_for_each_entry_safe(term, h, terms, list) {
3092 list_del_init(&term->list);
3093 parse_events_term__delete(term);