Lines Matching refs:pev

420 				       struct perf_probe_event *pev,  in get_alternative_probe_event()  argument
425 memcpy(tmp, &pev->point, sizeof(*tmp)); in get_alternative_probe_event()
426 memset(&pev->point, 0, sizeof(pev->point)); in get_alternative_probe_event()
427 ret = find_alternative_probe_point(dinfo, tmp, &pev->point, pev->target, in get_alternative_probe_event()
428 pev->nsi, pev->uprobes); in get_alternative_probe_event()
430 memcpy(&pev->point, tmp, sizeof(*tmp)); in get_alternative_probe_event()
866 arch__post_process_probe_trace_events(struct perf_probe_event *pev __maybe_unused, in arch__post_process_probe_trace_events()
872 static int post_process_probe_trace_events(struct perf_probe_event *pev, in post_process_probe_trace_events() argument
881 pev->nsi); in post_process_probe_trace_events()
890 arch__post_process_probe_trace_events(pev, ntevs); in post_process_probe_trace_events()
896 static int try_to_find_probe_trace_events(struct perf_probe_event *pev, in try_to_find_probe_trace_events() argument
899 bool need_dwarf = perf_probe_event_need_dwarf(pev); in try_to_find_probe_trace_events()
911 if (pev->point.retprobe) in try_to_find_probe_trace_events()
914 dinfo = open_debuginfo(pev->target, pev->nsi, !need_dwarf); in try_to_find_probe_trace_events()
924 ntevs = debuginfo__find_trace_events(dinfo, pev, tevs); in try_to_find_probe_trace_events()
927 ret = get_alternative_probe_event(dinfo, pev, &tmp); in try_to_find_probe_trace_events()
929 ntevs = debuginfo__find_trace_events(dinfo, pev, tevs); in try_to_find_probe_trace_events()
934 clear_perf_probe_point(&pev->point); in try_to_find_probe_trace_events()
935 memcpy(&pev->point, &tmp, sizeof(tmp)); in try_to_find_probe_trace_events()
941 ret = post_process_probe_trace_events(pev, *tevs, ntevs, in try_to_find_probe_trace_events()
942 pev->target, pev->uprobes, dinfo); in try_to_find_probe_trace_events()
955 synthesize_perf_probe_point(&pev->point)); in try_to_find_probe_trace_events()
1134 struct perf_probe_event *pev, in show_available_vars_at() argument
1144 buf = synthesize_perf_probe_point(&pev->point); in show_available_vars_at()
1149 ret = debuginfo__find_available_vars_at(dinfo, pev, &vls); in show_available_vars_at()
1151 ret = get_alternative_probe_event(dinfo, pev, &tmp); in show_available_vars_at()
1153 ret = debuginfo__find_available_vars_at(dinfo, pev, in show_available_vars_at()
1241 static int try_to_find_probe_trace_events(struct perf_probe_event *pev, in try_to_find_probe_trace_events() argument
1244 if (perf_probe_event_need_dwarf(pev)) { in try_to_find_probe_trace_events()
1398 static int parse_perf_probe_event_name(char **arg, struct perf_probe_event *pev) in parse_perf_probe_event_name() argument
1405 if (!pev->sdt && !is_c_func_name(*arg)) in parse_perf_probe_event_name()
1407 pev->group = strdup_esc(*arg); in parse_perf_probe_event_name()
1408 if (!pev->group) in parse_perf_probe_event_name()
1412 pev->group = NULL; in parse_perf_probe_event_name()
1414 pev->event = strdup_esc(*arg); in parse_perf_probe_event_name()
1415 if (pev->event == NULL) in parse_perf_probe_event_name()
1418 if (!pev->sdt && !is_c_func_name(pev->event)) { in parse_perf_probe_event_name()
1419 zfree(&pev->event); in parse_perf_probe_event_name()
1421 zfree(&pev->group); in parse_perf_probe_event_name()
1430 static int parse_perf_probe_point(char *arg, struct perf_probe_event *pev) in parse_perf_probe_point() argument
1432 struct perf_probe_point *pp = &pev->point; in parse_perf_probe_point()
1448 pev->sdt = true; in parse_perf_probe_point()
1454 if (pev->sdt) { in parse_perf_probe_point()
1464 pev->target = build_id_cache__origname(tmp); in parse_perf_probe_point()
1467 pev->target = strdup_esc(ptr + 1); in parse_perf_probe_point()
1468 if (!pev->target) in parse_perf_probe_point()
1472 ret = parse_perf_probe_event_name(&arg, pev); in parse_perf_probe_point()
1474 if (asprintf(&pev->point.function, "%%%s", pev->event) < 0) in parse_perf_probe_point()
1483 ret = parse_perf_probe_event_name(&arg, pev); in parse_perf_probe_point()
1754 int parse_perf_probe_command(const char *cmd, struct perf_probe_event *pev) in parse_perf_probe_command() argument
1770 ret = parse_perf_probe_point(argv[0], pev); in parse_perf_probe_command()
1775 if (!pev->event && pev->point.function && pev->point.line in parse_perf_probe_command()
1776 && !pev->point.lazy_line && !pev->point.offset) { in parse_perf_probe_command()
1777 if (asprintf(&pev->event, "%s_L%d", pev->point.function, in parse_perf_probe_command()
1778 pev->point.line) < 0) in parse_perf_probe_command()
1783 pev->nargs = argc - 1; in parse_perf_probe_command()
1784 pev->args = zalloc(sizeof(struct perf_probe_arg) * pev->nargs); in parse_perf_probe_command()
1785 if (pev->args == NULL) { in parse_perf_probe_command()
1789 for (i = 0; i < pev->nargs && ret >= 0; i++) { in parse_perf_probe_command()
1790 ret = parse_perf_probe_arg(argv[i + 1], &pev->args[i]); in parse_perf_probe_command()
1792 is_c_varname(pev->args[i].var) && pev->point.retprobe) { in parse_perf_probe_command()
1805 bool perf_probe_with_var(struct perf_probe_event *pev) in perf_probe_with_var() argument
1809 for (i = 0; i < pev->nargs; i++) in perf_probe_with_var()
1810 if (is_c_varname(pev->args[i].var) || in perf_probe_with_var()
1811 !strcmp(pev->args[i].var, PROBE_ARG_PARAMS) || in perf_probe_with_var()
1812 !strcmp(pev->args[i].var, PROBE_ARG_VARS)) in perf_probe_with_var()
1818 bool perf_probe_event_need_dwarf(struct perf_probe_event *pev) in perf_probe_event_need_dwarf() argument
1820 if (pev->point.file || pev->point.line || pev->point.lazy_line) in perf_probe_event_need_dwarf()
1823 if (perf_probe_with_var(pev)) in perf_probe_event_need_dwarf()
2039 char *synthesize_perf_probe_command(struct perf_probe_event *pev) in synthesize_perf_probe_command() argument
2047 if (pev->event) in synthesize_perf_probe_command()
2048 if (strbuf_addf(&buf, "%s:%s=", pev->group ?: PERFPROBE_GROUP, in synthesize_perf_probe_command()
2049 pev->event) < 0) in synthesize_perf_probe_command()
2052 tmp = synthesize_perf_probe_point(&pev->point); in synthesize_perf_probe_command()
2057 for (i = 0; i < pev->nargs; i++) { in synthesize_perf_probe_command()
2058 tmp = synthesize_perf_probe_arg(pev->args + i); in synthesize_perf_probe_command()
2287 struct perf_probe_event *pev, bool is_kprobe) in convert_to_perf_probe_event() argument
2293 pev->event = strdup(tev->event); in convert_to_perf_probe_event()
2294 pev->group = strdup(tev->group); in convert_to_perf_probe_event()
2295 if (pev->event == NULL || pev->group == NULL) in convert_to_perf_probe_event()
2299 ret = convert_to_perf_probe_point(&tev->point, &pev->point, is_kprobe); in convert_to_perf_probe_event()
2304 pev->nargs = tev->nargs; in convert_to_perf_probe_event()
2305 pev->args = zalloc(sizeof(struct perf_probe_arg) * pev->nargs); in convert_to_perf_probe_event()
2306 if (pev->args == NULL) in convert_to_perf_probe_event()
2310 pev->args[i].name = strdup(tev->args[i].name); in convert_to_perf_probe_event()
2315 pev->args[i].name = strbuf_detach(&buf, NULL); in convert_to_perf_probe_event()
2317 if (pev->args[i].name == NULL && ret >= 0) in convert_to_perf_probe_event()
2322 clear_perf_probe_event(pev); in convert_to_perf_probe_event()
2327 void clear_perf_probe_event(struct perf_probe_event *pev) in clear_perf_probe_event() argument
2332 zfree(&pev->event); in clear_perf_probe_event()
2333 zfree(&pev->group); in clear_perf_probe_event()
2334 zfree(&pev->target); in clear_perf_probe_event()
2335 clear_perf_probe_point(&pev->point); in clear_perf_probe_event()
2337 for (i = 0; i < pev->nargs; i++) { in clear_perf_probe_event()
2338 zfree(&pev->args[i].name); in clear_perf_probe_event()
2339 zfree(&pev->args[i].var); in clear_perf_probe_event()
2340 zfree(&pev->args[i].type); in clear_perf_probe_event()
2341 field = pev->args[i].field; in clear_perf_probe_event()
2349 pev->nargs = 0; in clear_perf_probe_event()
2350 zfree(&pev->args); in clear_perf_probe_event()
2561 struct perf_probe_event *pev, in perf_probe_event__sprintf() argument
2576 buf = synthesize_perf_probe_point(&pev->point); in perf_probe_event__sprintf()
2585 if (!ret && pev->nargs > 0) { in perf_probe_event__sprintf()
2587 for (i = 0; !ret && i < pev->nargs; i++) { in perf_probe_event__sprintf()
2588 buf = synthesize_perf_probe_arg(&pev->args[i]); in perf_probe_event__sprintf()
2603 struct perf_probe_event *pev, in show_perf_probe_event() argument
2609 ret = perf_probe_event__sprintf(group, event, pev, module, &buf); in show_perf_probe_event()
2641 struct perf_probe_event pev; in __show_perf_probe_events() local
2646 memset(&pev, 0, sizeof(pev)); in __show_perf_probe_events()
2657 ret = convert_to_perf_probe_event(&tev, &pev, in __show_perf_probe_events()
2661 ret = show_perf_probe_event(pev.group, pev.event, in __show_perf_probe_events()
2662 &pev, tev.point.module, in __show_perf_probe_events()
2666 clear_perf_probe_event(&pev); in __show_perf_probe_events()
2804 struct perf_probe_event *pev, in probe_trace_event__set_name() argument
2813 if (pev->event && !pev->sdt) in probe_trace_event__set_name()
2814 event = pev->event; in probe_trace_event__set_name()
2819 if (pev->point.function && in probe_trace_event__set_name()
2820 (strncmp(pev->point.function, "0x", 2) != 0) && in probe_trace_event__set_name()
2821 !strisglob(pev->point.function)) in probe_trace_event__set_name()
2822 event = pev->point.function; in probe_trace_event__set_name()
2826 if (pev->group && !pev->sdt) in probe_trace_event__set_name()
2827 group = pev->group; in probe_trace_event__set_name()
2875 static int __add_probe_trace_events(struct perf_probe_event *pev, in __add_probe_trace_events() argument
2885 up = pev->uprobes ? 1 : 0; in __add_probe_trace_events()
2901 if (!tev->point.symbol && !pev->uprobes) in __add_probe_trace_events()
2905 ret = probe_trace_event__set_name(tev, pev, namelist[up], in __add_probe_trace_events()
2910 nsinfo__mountns_enter(pev->nsi, &nsc); in __add_probe_trace_events()
2924 if (ret == -EINVAL && pev->uprobes) in __add_probe_trace_events()
2927 cache = probe_cache__new(pev->target, pev->nsi); in __add_probe_trace_events()
2929 probe_cache__add_entry(cache, pev, tevs, ntevs) < 0 || in __add_probe_trace_events()
2989 void __weak arch__fix_tev_from_maps(struct perf_probe_event *pev __maybe_unused, in arch__fix_tev_from_maps()
3009 static int find_probe_trace_events_from_map(struct perf_probe_event *pev, in find_probe_trace_events_from_map() argument
3017 struct perf_probe_point *pp = &pev->point; in find_probe_trace_events_from_map()
3023 map = get_target_map(pev->target, pev->nsi, pev->uprobes); in find_probe_trace_events_from_map()
3043 pev->target ?: "/proc/kallsyms"); in find_probe_trace_events_from_map()
3044 if (pev->target) in find_probe_trace_events_from_map()
3050 pev->target ? : "kernel"); in find_probe_trace_events_from_map()
3055 pev->target ? : "kernel"); in find_probe_trace_events_from_map()
3061 if (!pev->uprobes && !pev->target && in find_probe_trace_events_from_map()
3114 if (!pev->uprobes && !pev->target && in find_probe_trace_events_from_map()
3128 if (pev->target) { in find_probe_trace_events_from_map()
3129 if (pev->uprobes) { in find_probe_trace_events_from_map()
3130 tev->point.module = strdup_or_goto(pev->target, in find_probe_trace_events_from_map()
3133 mod_name = find_module_name(pev->target); in find_probe_trace_events_from_map()
3135 strdup(mod_name ? mod_name : pev->target); in find_probe_trace_events_from_map()
3141 tev->uprobes = pev->uprobes; in find_probe_trace_events_from_map()
3142 tev->nargs = pev->nargs; in find_probe_trace_events_from_map()
3150 if (pev->args[i].name) in find_probe_trace_events_from_map()
3152 strdup_or_goto(pev->args[i].name, in find_probe_trace_events_from_map()
3155 tev->args[i].value = strdup_or_goto(pev->args[i].var, in find_probe_trace_events_from_map()
3157 if (pev->args[i].type) in find_probe_trace_events_from_map()
3159 strdup_or_goto(pev->args[i].type, in find_probe_trace_events_from_map()
3162 arch__fix_tev_from_maps(pev, tev, map, sym); in find_probe_trace_events_from_map()
3182 static int try_to_find_absolute_address(struct perf_probe_event *pev, in try_to_find_absolute_address() argument
3185 struct perf_probe_point *pp = &pev->point; in try_to_find_absolute_address()
3190 if (!(pev->point.function && !strncmp(pev->point.function, "0x", 2))) in try_to_find_absolute_address()
3192 if (perf_probe_event_need_dwarf(pev)) in try_to_find_absolute_address()
3213 tp->address = pev->point.abs_address; in try_to_find_absolute_address()
3215 tev->uprobes = pev->uprobes; in try_to_find_absolute_address()
3237 if (pev->target) { in try_to_find_absolute_address()
3238 tp->module = strdup(pev->target); in try_to_find_absolute_address()
3244 tev->group = strdup(pev->group); in try_to_find_absolute_address()
3249 if (pev->event) { in try_to_find_absolute_address()
3250 tev->event = strdup(pev->event); in try_to_find_absolute_address()
3255 tev->nargs = pev->nargs; in try_to_find_absolute_address()
3261 copy_to_probe_trace_arg(&tev->args[i], &pev->args[i]); in try_to_find_absolute_address()
3323 static int find_cached_events(struct perf_probe_event *pev, in find_cached_events() argument
3333 cache = probe_cache__new(target, pev->nsi); in find_cached_events()
3340 if (!entry->pev.event || !entry->pev.group) in find_cached_events()
3342 if ((!pev->group || strglobmatch(entry->pev.group, pev->group)) && in find_cached_events()
3343 strglobmatch(entry->pev.event, pev->event)) { in find_cached_events()
3359 pev->uprobes = true; in find_cached_events()
3366 static int find_cached_events_all(struct perf_probe_event *pev, in find_cached_events_all() argument
3387 ret = find_cached_events(pev, &tmp_tevs, pathname); in find_cached_events_all()
3407 static int find_probe_trace_events_from_cache(struct perf_probe_event *pev, in find_probe_trace_events_from_cache() argument
3416 if (pev->sdt) { in find_probe_trace_events_from_cache()
3418 if (!pev->target) in find_probe_trace_events_from_cache()
3419 return find_cached_events_all(pev, tevs); in find_probe_trace_events_from_cache()
3421 return find_cached_events(pev, tevs, pev->target); in find_probe_trace_events_from_cache()
3423 cache = probe_cache__new(pev->target, pev->nsi); in find_probe_trace_events_from_cache()
3427 entry = probe_cache__find(cache, pev); in find_probe_trace_events_from_cache()
3430 ret = pev->sdt ? -ENOENT : 0; in find_probe_trace_events_from_cache()
3437 pev->target ? : "kernel"); in find_probe_trace_events_from_cache()
3455 tev->uprobes = pev->uprobes; in find_probe_trace_events_from_cache()
3464 static int convert_to_probe_trace_events(struct perf_probe_event *pev, in convert_to_probe_trace_events() argument
3469 if (!pev->group && !pev->sdt) { in convert_to_probe_trace_events()
3471 if (!pev->uprobes) { in convert_to_probe_trace_events()
3472 pev->group = strdup(PERFPROBE_GROUP); in convert_to_probe_trace_events()
3473 ret = pev->group ? 0 : -ENOMEM; in convert_to_probe_trace_events()
3475 ret = convert_exec_to_group(pev->target, &pev->group); in convert_to_probe_trace_events()
3482 ret = try_to_find_absolute_address(pev, tevs); in convert_to_probe_trace_events()
3487 ret = find_probe_trace_events_from_cache(pev, tevs); in convert_to_probe_trace_events()
3488 if (ret > 0 || pev->sdt) /* SDT can be found only in the cache */ in convert_to_probe_trace_events()
3492 ret = try_to_find_probe_trace_events(pev, tevs); in convert_to_probe_trace_events()
3496 return find_probe_trace_events_from_map(pev, tevs); in convert_to_probe_trace_events()
3540 struct perf_probe_event *pev; in show_probe_trace_events() local
3547 pev = &pevs[j]; in show_probe_trace_events()
3548 for (i = 0; i < pev->ntevs && !ret; i++) { in show_probe_trace_events()
3549 tev = &pev->tevs[i]; in show_probe_trace_events()
3551 if (!tev->point.symbol && !pev->uprobes) in show_probe_trace_events()
3555 ret = probe_trace_event__set_name(tev, pev, in show_probe_trace_events()
3595 struct perf_probe_event *pev; in show_bootconfig_events() local
3603 pev = &pevs[j]; in show_bootconfig_events()
3604 if (pev->group && strcmp(pev->group, "probe")) in show_bootconfig_events()
3605 pr_warning("WARN: Group name %s is ignored\n", pev->group); in show_bootconfig_events()
3606 if (pev->uprobes) { in show_bootconfig_events()
3611 for (i = 0; i < pev->ntevs && !ret; i++) { in show_bootconfig_events()
3612 tev = &pev->tevs[i]; in show_bootconfig_events()
3614 if (!tev->point.symbol && !pev->uprobes) in show_bootconfig_events()
3618 ret = probe_trace_event__set_name(tev, pev, in show_bootconfig_events()
3656 struct perf_probe_event *pev; in cleanup_perf_probe_events() local
3660 pev = &pevs[i]; in cleanup_perf_probe_events()
3665 nsinfo__zput(pev->nsi); in cleanup_perf_probe_events()