Lines Matching defs:pev
432 struct perf_probe_event *pev,
437 memcpy(tmp, &pev->point, sizeof(*tmp));
438 memset(&pev->point, 0, sizeof(pev->point));
439 ret = find_alternative_probe_point(dinfo, tmp, &pev->point, pev->target,
440 pev->nsi, pev->uprobes);
442 memcpy(&pev->point, tmp, sizeof(*tmp));
878 arch__post_process_probe_trace_events(struct perf_probe_event *pev __maybe_unused,
884 static int post_process_probe_trace_events(struct perf_probe_event *pev,
893 pev->nsi);
902 arch__post_process_probe_trace_events(pev, ntevs);
908 static int try_to_find_probe_trace_events(struct perf_probe_event *pev,
911 bool need_dwarf = perf_probe_event_need_dwarf(pev);
923 if (pev->point.retprobe)
926 dinfo = open_debuginfo(pev->target, pev->nsi, !need_dwarf);
936 ntevs = debuginfo__find_trace_events(dinfo, pev, tevs);
939 ret = get_alternative_probe_event(dinfo, pev, &tmp);
941 ntevs = debuginfo__find_trace_events(dinfo, pev, tevs);
946 clear_perf_probe_point(&pev->point);
947 memcpy(&pev->point, &tmp, sizeof(tmp));
953 ret = post_process_probe_trace_events(pev, *tevs, ntevs,
954 pev->target, pev->uprobes, dinfo);
966 char *probe_point = synthesize_perf_probe_point(&pev->point);
1147 struct perf_probe_event *pev,
1157 buf = synthesize_perf_probe_point(&pev->point);
1162 ret = debuginfo__find_available_vars_at(dinfo, pev, &vls);
1164 ret = get_alternative_probe_event(dinfo, pev, &tmp);
1166 ret = debuginfo__find_available_vars_at(dinfo, pev,
1254 static int try_to_find_probe_trace_events(struct perf_probe_event *pev,
1257 if (perf_probe_event_need_dwarf(pev)) {
1411 static int parse_perf_probe_event_name(char **arg, struct perf_probe_event *pev)
1418 if (!pev->sdt && !is_c_func_name(*arg))
1420 pev->group = strdup_esc(*arg);
1421 if (!pev->group)
1425 pev->group = NULL;
1427 pev->event = strdup_esc(*arg);
1428 if (pev->event == NULL)
1431 if (!pev->sdt && !is_c_func_name(pev->event)) {
1432 zfree(&pev->event);
1434 zfree(&pev->group);
1443 static int parse_perf_probe_point(char *arg, struct perf_probe_event *pev)
1445 struct perf_probe_point *pp = &pev->point;
1461 pev->sdt = true;
1467 if (pev->sdt) {
1477 pev->target = build_id_cache__origname(tmp);
1480 pev->target = strdup_esc(ptr + 1);
1481 if (!pev->target)
1485 ret = parse_perf_probe_event_name(&arg, pev);
1487 if (asprintf(&pev->point.function, "%%%s", pev->event) < 0)
1496 ret = parse_perf_probe_event_name(&arg, pev);
1767 int parse_perf_probe_command(const char *cmd, struct perf_probe_event *pev)
1783 ret = parse_perf_probe_point(argv[0], pev);
1788 if (!pev->event && pev->point.function && pev->point.line
1789 && !pev->point.lazy_line && !pev->point.offset) {
1790 if (asprintf(&pev->event, "%s_L%d", pev->point.function,
1791 pev->point.line) < 0) {
1798 pev->nargs = argc - 1;
1799 pev->args = zalloc(sizeof(struct perf_probe_arg) * pev->nargs);
1800 if (pev->args == NULL) {
1804 for (i = 0; i < pev->nargs && ret >= 0; i++) {
1805 ret = parse_perf_probe_arg(argv[i + 1], &pev->args[i]);
1807 is_c_varname(pev->args[i].var) && pev->point.retprobe) {
1820 bool perf_probe_with_var(struct perf_probe_event *pev)
1824 for (i = 0; i < pev->nargs; i++)
1825 if (is_c_varname(pev->args[i].var) ||
1826 !strcmp(pev->args[i].var, PROBE_ARG_PARAMS) ||
1827 !strcmp(pev->args[i].var, PROBE_ARG_VARS))
1833 bool perf_probe_event_need_dwarf(struct perf_probe_event *pev)
1835 if (pev->point.file || pev->point.line || pev->point.lazy_line)
1838 if (perf_probe_with_var(pev))
2054 char *synthesize_perf_probe_command(struct perf_probe_event *pev)
2062 if (pev->event)
2063 if (strbuf_addf(&buf, "%s:%s=", pev->group ?: PERFPROBE_GROUP,
2064 pev->event) < 0)
2067 tmp = synthesize_perf_probe_point(&pev->point);
2074 for (i = 0; i < pev->nargs; i++) {
2075 tmp = synthesize_perf_probe_arg(pev->args + i);
2306 struct perf_probe_event *pev, bool is_kprobe)
2312 pev->event = strdup(tev->event);
2313 pev->group = strdup(tev->group);
2314 if (pev->event == NULL || pev->group == NULL)
2318 ret = convert_to_perf_probe_point(&tev->point, &pev->point, is_kprobe);
2323 pev->nargs = tev->nargs;
2324 pev->args = zalloc(sizeof(struct perf_probe_arg) * pev->nargs);
2325 if (pev->args == NULL)
2329 pev->args[i].name = strdup(tev->args[i].name);
2334 pev->args[i].name = strbuf_detach(&buf, NULL);
2336 if (pev->args[i].name == NULL && ret >= 0)
2341 clear_perf_probe_event(pev);
2346 void clear_perf_probe_event(struct perf_probe_event *pev)
2351 zfree(&pev->event);
2352 zfree(&pev->group);
2353 zfree(&pev->target);
2354 clear_perf_probe_point(&pev->point);
2356 for (i = 0; i < pev->nargs; i++) {
2357 zfree(&pev->args[i].name);
2358 zfree(&pev->args[i].var);
2359 zfree(&pev->args[i].type);
2360 field = pev->args[i].field;
2368 pev->nargs = 0;
2369 zfree(&pev->args);
2580 struct perf_probe_event *pev,
2595 buf = synthesize_perf_probe_point(&pev->point);
2604 if (!ret && pev->nargs > 0) {
2606 for (i = 0; !ret && i < pev->nargs; i++) {
2607 buf = synthesize_perf_probe_arg(&pev->args[i]);
2622 struct perf_probe_event *pev,
2628 ret = perf_probe_event__sprintf(group, event, pev, module, &buf);
2660 struct perf_probe_event pev;
2665 memset(&pev, 0, sizeof(pev));
2676 ret = convert_to_perf_probe_event(&tev, &pev,
2680 ret = show_perf_probe_event(pev.group, pev.event,
2681 &pev, tev.point.module,
2685 clear_perf_probe_event(&pev);
2828 struct perf_probe_event *pev,
2837 if (pev->event && !pev->sdt)
2838 event = pev->event;
2843 if (pev->point.function &&
2844 (strncmp(pev->point.function, "0x", 2) != 0) &&
2845 !strisglob(pev->point.function))
2846 event = pev->point.function;
2850 if (pev->group && !pev->sdt)
2851 group = pev->group;
2899 static int __add_probe_trace_events(struct perf_probe_event *pev,
2909 up = pev->uprobes ? 1 : 0;
2925 if (!tev->point.symbol && !pev->uprobes)
2929 ret = probe_trace_event__set_name(tev, pev, namelist[up],
2934 nsinfo__mountns_enter(pev->nsi, &nsc);
2948 if (ret == -EINVAL && pev->uprobes)
2951 cache = probe_cache__new(pev->target, pev->nsi);
2953 probe_cache__add_entry(cache, pev, tevs, ntevs) < 0 ||
3013 void __weak arch__fix_tev_from_maps(struct perf_probe_event *pev __maybe_unused,
3033 static int find_probe_trace_events_from_map(struct perf_probe_event *pev,
3041 struct perf_probe_point *pp = &pev->point;
3047 map = get_target_map(pev->target, pev->nsi, pev->uprobes);
3067 pev->target ?: "/proc/kallsyms");
3068 if (pev->target)
3074 pev->target ? : "kernel");
3079 pev->target ? : "kernel");
3085 if (!pev->uprobes && !pev->target &&
3141 if (!pev->uprobes && !pev->target &&
3155 if (pev->target) {
3156 if (pev->uprobes) {
3157 tev->point.module = strdup_or_goto(pev->target,
3160 mod_name = find_module_name(pev->target);
3162 strdup(mod_name ? mod_name : pev->target);
3168 tev->uprobes = pev->uprobes;
3169 tev->nargs = pev->nargs;
3177 if (pev->args[i].name)
3179 strdup_or_goto(pev->args[i].name,
3182 tev->args[i].value = strdup_or_goto(pev->args[i].var,
3184 if (pev->args[i].type)
3186 strdup_or_goto(pev->args[i].type,
3189 arch__fix_tev_from_maps(pev, tev, map, sym);
3209 static int try_to_find_absolute_address(struct perf_probe_event *pev,
3212 struct perf_probe_point *pp = &pev->point;
3217 if (!(pev->point.function && !strncmp(pev->point.function, "0x", 2)))
3219 if (perf_probe_event_need_dwarf(pev))
3240 tp->address = pev->point.abs_address;
3242 tev->uprobes = pev->uprobes;
3264 if (pev->target) {
3265 tp->module = strdup(pev->target);
3271 tev->group = strdup(pev->group);
3276 if (pev->event) {
3277 tev->event = strdup(pev->event);
3282 tev->nargs = pev->nargs;
3288 copy_to_probe_trace_arg(&tev->args[i], &pev->args[i]);
3350 static int find_cached_events(struct perf_probe_event *pev,
3360 cache = probe_cache__new(target, pev->nsi);
3367 if (!entry->pev.event || !entry->pev.group)
3369 if ((!pev->group || strglobmatch(entry->pev.group, pev->group)) &&
3370 strglobmatch(entry->pev.event, pev->event)) {
3386 pev->uprobes = true;
3393 static int find_cached_events_all(struct perf_probe_event *pev,
3414 ret = find_cached_events(pev, &tmp_tevs, pathname);
3434 static int find_probe_trace_events_from_cache(struct perf_probe_event *pev,
3443 if (pev->sdt) {
3445 if (!pev->target)
3446 return find_cached_events_all(pev, tevs);
3448 return find_cached_events(pev, tevs, pev->target);
3450 cache = probe_cache__new(pev->target, pev->nsi);
3454 entry = probe_cache__find(cache, pev);
3457 ret = pev->sdt ? -ENOENT : 0;
3464 pev->target ? : "kernel");
3482 tev->uprobes = pev->uprobes;
3491 static int convert_to_probe_trace_events(struct perf_probe_event *pev,
3496 if (!pev->group && !pev->sdt) {
3498 if (!pev->uprobes) {
3499 pev->group = strdup(PERFPROBE_GROUP);
3500 ret = pev->group ? 0 : -ENOMEM;
3502 ret = convert_exec_to_group(pev->target, &pev->group);
3509 ret = try_to_find_absolute_address(pev, tevs);
3514 ret = find_probe_trace_events_from_cache(pev, tevs);
3515 if (ret > 0 || pev->sdt) /* SDT can be found only in the cache */
3519 ret = try_to_find_probe_trace_events(pev, tevs);
3523 return find_probe_trace_events_from_map(pev, tevs);
3567 struct perf_probe_event *pev;
3574 pev = &pevs[j];
3575 for (i = 0; i < pev->ntevs && !ret; i++) {
3576 tev = &pev->tevs[i];
3578 if (!tev->point.symbol && !pev->uprobes)
3582 ret = probe_trace_event__set_name(tev, pev,
3622 struct perf_probe_event *pev;
3630 pev = &pevs[j];
3631 if (pev->group && strcmp(pev->group, "probe"))
3632 pr_warning("WARN: Group name %s is ignored\n", pev->group);
3633 if (pev->uprobes) {
3638 for (i = 0; i < pev->ntevs && !ret; i++) {
3639 tev = &pev->tevs[i];
3641 if (!tev->point.symbol && !pev->uprobes)
3645 ret = probe_trace_event__set_name(tev, pev,
3683 struct perf_probe_event *pev;
3687 pev = &pevs[i];
3692 nsinfo__zput(pev->nsi);