Lines Matching refs:tev
1817 int parse_probe_trace_command(const char *cmd, struct probe_trace_event *tev)
1819 struct probe_trace_point *tp = &tev->point;
1853 tev->group = strdup(fmt2_str);
1854 tev->event = strdup(fmt3_str);
1855 if (tev->group == NULL || tev->event == NULL) {
1859 pr_debug("Group:%s Event:%s probe:%c\n", tev->group, tev->event, pr);
1871 tev->uprobes = (tp->module[0] == '/');
1914 if (tev->uprobes) {
1920 tev->nargs = argc - 2;
1921 tev->args = zalloc(sizeof(struct probe_trace_arg) * tev->nargs);
1922 if (tev->args == NULL) {
1926 for (i = 0; i < tev->nargs; i++) {
1932 tev->args[i].name = strdup(argv[i + 2]);
1934 tev->args[i].value = strdup(p);
1935 if (tev->args[i].name == NULL || tev->args[i].value == NULL) {
2117 synthesize_uprobe_trace_def(struct probe_trace_event *tev, struct strbuf *buf)
2119 struct probe_trace_point *tp = &tev->point;
2132 char *synthesize_probe_trace_command(struct probe_trace_event *tev)
2134 struct probe_trace_point *tp = &tev->point;
2140 if (tev->uprobes && !tp->module)
2147 tev->group, tev->event) < 0)
2155 if (tev->uprobes && !tp->address) {
2161 if (tev->uprobes) {
2162 err = synthesize_uprobe_trace_def(tev, &buf);
2175 for (i = 0; i < tev->nargs; i++)
2176 if (synthesize_probe_trace_arg(&tev->args[i], &buf) < 0)
2261 static int convert_to_perf_probe_event(struct probe_trace_event *tev,
2268 pev->event = strdup(tev->event);
2269 pev->group = strdup(tev->group);
2274 ret = convert_to_perf_probe_point(&tev->point, &pev->point, is_kprobe);
2279 pev->nargs = tev->nargs;
2283 for (i = 0; i < tev->nargs && ret >= 0; i++) {
2284 if (tev->args[i].name)
2285 pev->args[i].name = strdup(tev->args[i].name);
2289 ret = synthesize_probe_trace_arg(&tev->args[i], &buf);
2401 void clear_probe_trace_event(struct probe_trace_event *tev)
2406 zfree(&tev->event);
2407 zfree(&tev->group);
2408 zfree(&tev->point.symbol);
2409 zfree(&tev->point.realname);
2410 zfree(&tev->point.module);
2411 for (i = 0; i < tev->nargs; i++) {
2412 zfree(&tev->args[i].name);
2413 zfree(&tev->args[i].value);
2414 zfree(&tev->args[i].type);
2415 ref = tev->args[i].ref;
2422 zfree(&tev->args);
2423 tev->nargs = 0;
2597 static bool filter_probe_trace_event(struct probe_trace_event *tev,
2603 if (strfilter__compare(filter, tev->event))
2607 if (e_snprintf(tmp, 128, "%s:%s", tev->group, tev->event) < 0)
2616 struct probe_trace_event tev;
2621 memset(&tev, 0, sizeof(tev));
2629 ret = parse_probe_trace_command(ent->s, &tev);
2631 if (!filter_probe_trace_event(&tev, filter))
2633 ret = convert_to_perf_probe_event(&tev, &pev,
2638 &pev, tev.point.module,
2643 clear_probe_trace_event(&tev);
2751 static void warn_uprobe_event_compat(struct probe_trace_event *tev)
2754 char *buf = synthesize_probe_trace_command(tev);
2755 struct probe_trace_point *tp = &tev->point;
2760 tev->group, tev->event);
2764 if (!tev->uprobes || tev->nargs == 0 || !buf)
2767 for (i = 0; i < tev->nargs; i++)
2768 if (strglobmatch(tev->args[i].value, "[$@+-]*")) {
2771 tev->args[i].value);
2779 static int probe_trace_event__set_name(struct probe_trace_event *tev,
2791 else if (tev->event)
2792 event = tev->event;
2800 event = tev->point.realname;
2804 else if (tev->group)
2805 group = tev->group;
2811 tev->point.retprobe, allow_suffix);
2817 tev->event = strdup(event);
2818 tev->group = strdup(group);
2819 if (tev->event == NULL || tev->group == NULL)
2856 struct probe_trace_event *tev = NULL;
2868 tev = &tevs[i];
2869 up = tev->uprobes ? 1 : 0;
2877 if (!tev->point.symbol && !pev->uprobes)
2880 /* Set new name for tev (and update namelist) */
2881 ret = probe_trace_event__set_name(tev, pev, namelist[up],
2887 ret = probe_file__add_event(fd[up], tev);
2901 warn_uprobe_event_compat(tev);
2966 struct probe_trace_event *tev __maybe_unused,
2981 struct probe_trace_event *tev;
3029 *tevs = zalloc(sizeof(*tev) * num_matched_functions);
3053 tev = (*tevs) + ret;
3054 tp = &tev->point;
3087 tev->point.module = strdup_or_goto(pev->target,
3091 tev->point.module =
3094 if (!tev->point.module)
3098 tev->uprobes = pev->uprobes;
3099 tev->nargs = pev->nargs;
3100 if (tev->nargs) {
3101 tev->args = zalloc(sizeof(struct probe_trace_arg) *
3102 tev->nargs);
3103 if (tev->args == NULL)
3106 for (i = 0; i < tev->nargs; i++) {
3108 tev->args[i].name =
3112 tev->args[i].value = strdup_or_goto(pev->args[i].var,
3115 tev->args[i].type =
3119 arch__fix_tev_from_maps(pev, tev, map, sym);
3143 struct probe_trace_event *tev;
3156 * Only one tev can be generated by this.
3158 *tevs = zalloc(sizeof(*tev));
3162 tev = *tevs;
3163 tp = &tev->point;
3172 tev->uprobes = pev->uprobes;
3184 if ((!tev->uprobes) &&
3185 (kprobe_warn_out_range(tev->point.symbol,
3186 tev->point.address))) {
3200 if (tev->group) {
3201 tev->group = strdup(pev->group);
3202 if (!tev->group)
3207 tev->event = strdup(pev->event);
3208 if (!tev->event)
3212 tev->nargs = pev->nargs;
3213 tev->args = zalloc(sizeof(struct probe_trace_arg) * tev->nargs);
3214 if (!tev->args)
3217 for (i = 0; i < tev->nargs; i++)
3218 copy_to_probe_trace_arg(&tev->args[i], &pev->args[i]);
3369 struct probe_trace_event *tev;
3399 *tevs = zalloc(ret * sizeof(*tev));
3407 tev = &(*tevs)[i++];
3408 ret = parse_probe_trace_command(node->s, tev);
3412 tev->uprobes = pev->uprobes;
3477 static int show_probe_trace_event(struct probe_trace_event *tev)
3479 char *buf = synthesize_probe_trace_command(tev);
3496 struct probe_trace_event *tev;
3506 tev = &pev->tevs[i];
3508 if (!tev->point.symbol && !pev->uprobes)
3511 /* Set new name for tev (and update namelist) */
3512 ret = probe_trace_event__set_name(tev, pev,
3515 ret = show_probe_trace_event(tev);