Lines Matching defs:pev

422 				       struct perf_probe_event *pev,
427 memcpy(tmp, &pev->point, sizeof(*tmp));
428 memset(&pev->point, 0, sizeof(pev->point));
429 ret = find_alternative_probe_point(dinfo, tmp, &pev->point, pev->target,
430 pev->nsi, pev->uprobes);
432 memcpy(&pev->point, tmp, sizeof(*tmp));
861 arch__post_process_probe_trace_events(struct perf_probe_event *pev __maybe_unused,
867 static int post_process_probe_trace_events(struct perf_probe_event *pev,
876 pev->nsi);
885 arch__post_process_probe_trace_events(pev, ntevs);
891 static int try_to_find_probe_trace_events(struct perf_probe_event *pev,
894 bool need_dwarf = perf_probe_event_need_dwarf(pev);
899 dinfo = open_debuginfo(pev->target, pev->nsi, !need_dwarf);
909 ntevs = debuginfo__find_trace_events(dinfo, pev, tevs);
912 ret = get_alternative_probe_event(dinfo, pev, &tmp);
914 ntevs = debuginfo__find_trace_events(dinfo, pev, tevs);
919 clear_perf_probe_point(&pev->point);
920 memcpy(&pev->point, &tmp, sizeof(tmp));
926 ret = post_process_probe_trace_events(pev, *tevs, ntevs,
927 pev->target, pev->uprobes, dinfo);
940 synthesize_perf_probe_point(&pev->point));
1119 struct perf_probe_event *pev,
1129 buf = synthesize_perf_probe_point(&pev->point);
1134 ret = debuginfo__find_available_vars_at(dinfo, pev, &vls);
1136 ret = get_alternative_probe_event(dinfo, pev, &tmp);
1138 ret = debuginfo__find_available_vars_at(dinfo, pev,
1226 static int try_to_find_probe_trace_events(struct perf_probe_event *pev,
1229 if (perf_probe_event_need_dwarf(pev)) {
1383 static int parse_perf_probe_event_name(char **arg, struct perf_probe_event *pev)
1390 if (!pev->sdt && !is_c_func_name(*arg))
1392 pev->group = strdup_esc(*arg);
1393 if (!pev->group)
1397 pev->group = NULL;
1399 pev->event = strdup_esc(*arg);
1400 if (pev->event == NULL)
1403 if (!pev->sdt && !is_c_func_name(pev->event)) {
1404 zfree(&pev->event);
1406 zfree(&pev->group);
1415 static int parse_perf_probe_point(char *arg, struct perf_probe_event *pev)
1417 struct perf_probe_point *pp = &pev->point;
1433 pev->sdt = true;
1439 if (pev->sdt) {
1449 pev->target = build_id_cache__origname(tmp);
1452 pev->target = strdup_esc(ptr + 1);
1453 if (!pev->target)
1457 ret = parse_perf_probe_event_name(&arg, pev);
1459 if (asprintf(&pev->point.function, "%%%s", pev->event) < 0)
1468 ret = parse_perf_probe_event_name(&arg, pev);
1739 int parse_perf_probe_command(const char *cmd, struct perf_probe_event *pev)
1755 ret = parse_perf_probe_point(argv[0], pev);
1760 if (!pev->event && pev->point.function && pev->point.line
1761 && !pev->point.lazy_line && !pev->point.offset) {
1762 if (asprintf(&pev->event, "%s_L%d", pev->point.function,
1763 pev->point.line) < 0) {
1770 pev->nargs = argc - 1;
1771 pev->args = zalloc(sizeof(struct perf_probe_arg) * pev->nargs);
1772 if (pev->args == NULL) {
1776 for (i = 0; i < pev->nargs && ret >= 0; i++) {
1777 ret = parse_perf_probe_arg(argv[i + 1], &pev->args[i]);
1779 is_c_varname(pev->args[i].var) && pev->point.retprobe) {
1792 bool perf_probe_with_var(struct perf_probe_event *pev)
1796 for (i = 0; i < pev->nargs; i++)
1797 if (is_c_varname(pev->args[i].var) ||
1798 !strcmp(pev->args[i].var, PROBE_ARG_PARAMS) ||
1799 !strcmp(pev->args[i].var, PROBE_ARG_VARS))
1805 bool perf_probe_event_need_dwarf(struct perf_probe_event *pev)
1807 if (pev->point.file || pev->point.line || pev->point.lazy_line)
1810 if (perf_probe_with_var(pev))
2026 char *synthesize_perf_probe_command(struct perf_probe_event *pev)
2034 if (pev->event)
2035 if (strbuf_addf(&buf, "%s:%s=", pev->group ?: PERFPROBE_GROUP,
2036 pev->event) < 0)
2039 tmp = synthesize_perf_probe_point(&pev->point);
2044 for (i = 0; i < pev->nargs; i++) {
2045 tmp = synthesize_perf_probe_arg(pev->args + i);
2262 struct perf_probe_event *pev, bool is_kprobe)
2268 pev->event = strdup(tev->event);
2269 pev->group = strdup(tev->group);
2270 if (pev->event == NULL || pev->group == NULL)
2274 ret = convert_to_perf_probe_point(&tev->point, &pev->point, is_kprobe);
2279 pev->nargs = tev->nargs;
2280 pev->args = zalloc(sizeof(struct perf_probe_arg) * pev->nargs);
2281 if (pev->args == NULL)
2285 pev->args[i].name = strdup(tev->args[i].name);
2290 pev->args[i].name = strbuf_detach(&buf, NULL);
2292 if (pev->args[i].name == NULL && ret >= 0)
2297 clear_perf_probe_event(pev);
2302 void clear_perf_probe_event(struct perf_probe_event *pev)
2307 zfree(&pev->event);
2308 zfree(&pev->group);
2309 zfree(&pev->target);
2310 clear_perf_probe_point(&pev->point);
2312 for (i = 0; i < pev->nargs; i++) {
2313 zfree(&pev->args[i].name);
2314 zfree(&pev->args[i].var);
2315 zfree(&pev->args[i].type);
2316 field = pev->args[i].field;
2324 pev->nargs = 0;
2325 zfree(&pev->args);
2537 struct perf_probe_event *pev,
2552 buf = synthesize_perf_probe_point(&pev->point);
2561 if (!ret && pev->nargs > 0) {
2563 for (i = 0; !ret && i < pev->nargs; i++) {
2564 buf = synthesize_perf_probe_arg(&pev->args[i]);
2579 struct perf_probe_event *pev,
2585 ret = perf_probe_event__sprintf(group, event, pev, module, &buf);
2617 struct perf_probe_event pev;
2622 memset(&pev, 0, sizeof(pev));
2633 ret = convert_to_perf_probe_event(&tev, &pev,
2637 ret = show_perf_probe_event(pev.group, pev.event,
2638 &pev, tev.point.module,
2642 clear_perf_probe_event(&pev);
2780 struct perf_probe_event *pev,
2789 if (pev->event && !pev->sdt)
2790 event = pev->event;
2795 if (pev->point.function &&
2796 (strncmp(pev->point.function, "0x", 2) != 0) &&
2797 !strisglob(pev->point.function))
2798 event = pev->point.function;
2802 if (pev->group && !pev->sdt)
2803 group = pev->group;
2851 static int __add_probe_trace_events(struct perf_probe_event *pev,
2861 up = pev->uprobes ? 1 : 0;
2877 if (!tev->point.symbol && !pev->uprobes)
2881 ret = probe_trace_event__set_name(tev, pev, namelist[up],
2886 nsinfo__mountns_enter(pev->nsi, &nsc);
2900 if (ret == -EINVAL && pev->uprobes)
2903 cache = probe_cache__new(pev->target, pev->nsi);
2905 probe_cache__add_entry(cache, pev, tevs, ntevs) < 0 ||
2965 void __weak arch__fix_tev_from_maps(struct perf_probe_event *pev __maybe_unused,
2974 static int find_probe_trace_events_from_map(struct perf_probe_event *pev,
2982 struct perf_probe_point *pp = &pev->point;
2988 map = get_target_map(pev->target, pev->nsi, pev->uprobes);
3007 pev->target ? : "kernel");
3012 pev->target ? : "kernel");
3018 if (!pev->uprobes && !pev->target &&
3071 if (!pev->uprobes && !pev->target &&
3085 if (pev->target) {
3086 if (pev->uprobes) {
3087 tev->point.module = strdup_or_goto(pev->target,
3090 mod_name = find_module_name(pev->target);
3092 strdup(mod_name ? mod_name : pev->target);
3098 tev->uprobes = pev->uprobes;
3099 tev->nargs = pev->nargs;
3107 if (pev->args[i].name)
3109 strdup_or_goto(pev->args[i].name,
3112 tev->args[i].value = strdup_or_goto(pev->args[i].var,
3114 if (pev->args[i].type)
3116 strdup_or_goto(pev->args[i].type,
3119 arch__fix_tev_from_maps(pev, tev, map, sym);
3139 static int try_to_find_absolute_address(struct perf_probe_event *pev,
3142 struct perf_probe_point *pp = &pev->point;
3147 if (!(pev->point.function && !strncmp(pev->point.function, "0x", 2)))
3149 if (perf_probe_event_need_dwarf(pev))
3170 tp->address = pev->point.abs_address;
3172 tev->uprobes = pev->uprobes;
3194 if (pev->target) {
3195 tp->module = strdup(pev->target);
3201 tev->group = strdup(pev->group);
3206 if (pev->event) {
3207 tev->event = strdup(pev->event);
3212 tev->nargs = pev->nargs;
3218 copy_to_probe_trace_arg(&tev->args[i], &pev->args[i]);
3280 static int find_cached_events(struct perf_probe_event *pev,
3290 cache = probe_cache__new(target, pev->nsi);
3297 if (!entry->pev.event || !entry->pev.group)
3299 if ((!pev->group || strglobmatch(entry->pev.group, pev->group)) &&
3300 strglobmatch(entry->pev.event, pev->event)) {
3316 pev->uprobes = true;
3323 static int find_cached_events_all(struct perf_probe_event *pev,
3344 ret = find_cached_events(pev, &tmp_tevs, pathname);
3364 static int find_probe_trace_events_from_cache(struct perf_probe_event *pev,
3373 if (pev->sdt) {
3375 if (!pev->target)
3376 return find_cached_events_all(pev, tevs);
3378 return find_cached_events(pev, tevs, pev->target);
3380 cache = probe_cache__new(pev->target, pev->nsi);
3384 entry = probe_cache__find(cache, pev);
3387 ret = pev->sdt ? -ENOENT : 0;
3394 pev->target ? : "kernel");
3412 tev->uprobes = pev->uprobes;
3421 static int convert_to_probe_trace_events(struct perf_probe_event *pev,
3426 if (!pev->group && !pev->sdt) {
3428 if (!pev->uprobes) {
3429 pev->group = strdup(PERFPROBE_GROUP);
3430 ret = pev->group ? 0 : -ENOMEM;
3432 ret = convert_exec_to_group(pev->target, &pev->group);
3439 ret = try_to_find_absolute_address(pev, tevs);
3444 ret = find_probe_trace_events_from_cache(pev, tevs);
3445 if (ret > 0 || pev->sdt) /* SDT can be found only in the cache */
3449 ret = try_to_find_probe_trace_events(pev, tevs);
3453 return find_probe_trace_events_from_map(pev, tevs);
3497 struct perf_probe_event *pev;
3504 pev = &pevs[j];
3505 for (i = 0; i < pev->ntevs && !ret; i++) {
3506 tev = &pev->tevs[i];
3508 if (!tev->point.symbol && !pev->uprobes)
3512 ret = probe_trace_event__set_name(tev, pev,
3541 struct perf_probe_event *pev;
3545 pev = &pevs[i];
3550 nsinfo__zput(pev->nsi);