Lines Matching full:traces
601 predicate, &trace->traces[i])) in parse_trace()
606 if (trace->traces[i].base_arg == KSNOOP_RETURN) in parse_trace()
619 * mode where arg traces are stored on entry and not in parse_trace()
630 memcpy(trace->traces, func->args, sizeof(trace->traces)); in parse_trace()
632 trace->traces[i].base_arg = i; in parse_trace()
639 static int parse_traces(int argc, char **argv, struct trace **traces) in parse_traces() argument
647 p_err("A maximum of %d traces are supported", MAX_FUNC_TRACES); in parse_traces()
650 *traces = calloc(argc, sizeof(struct trace)); in parse_traces()
651 if (!*traces) { in parse_traces()
652 p_err("Could not allocate %d traces", argc); in parse_traces()
656 if (parse_trace(argv[i], &((*traces)[i]))) in parse_traces()
661 (*traces)[i].prev_ip = (*traces)[i-1].func.ip; in parse_traces()
662 (*traces)[i-1].next_ip = (*traces)[i].func.ip; in parse_traces()
669 struct trace *traces = NULL; in cmd_info() local
674 nr_traces = parse_traces(argc, argv, &traces); in cmd_info()
679 struct func *func = &traces[i].func; in cmd_info()
682 value_to_str(traces[i].btf, &func->args[KSNOOP_RETURN], in cmd_info()
688 printf("%s", value_to_str(traces[i].btf, &func->args[j], in cmd_info()
696 free(traces); in cmd_info()
717 struct value *val = &trace->traces[i]; in trace_handler()
783 static int add_traces(struct bpf_map *func_map, struct trace *traces, in add_traces() argument
791 p_err("Could not allocate memory for %d traces", nr_traces); in add_traces()
796 memcpy(&map_traces[j], &traces[i], in add_traces()
800 &traces[i].func.ip, in add_traces()
805 traces[i].func.name, strerror(-ret)); in add_traces()
813 static int attach_traces(struct ksnoop_bpf *skel, struct trace *traces, in attach_traces() argument
819 traces[i].links[0] = in attach_traces()
822 traces[i].func.name); in attach_traces()
823 if (!traces[i].links[0]) { in attach_traces()
826 traces[i].func.name, strerror(-ret)); in attach_traces()
829 p_debug("Attached kprobe for '%s'", traces[i].func.name); in attach_traces()
831 traces[i].links[1] = in attach_traces()
834 traces[i].func.name); in attach_traces()
835 if (!traces[i].links[1]) { in attach_traces()
838 traces[i].func.name, strerror(-ret)); in attach_traces()
841 p_debug("Attached kretprobe for '%s'", traces[i].func.name); in attach_traces()
852 struct trace *traces = NULL; in cmd_trace() local
854 nr_traces = parse_traces(argc, argv, &traces); in cmd_trace()
876 if (add_traces(func_map, traces, nr_traces)) { in cmd_trace()
877 p_err("Could not add traces to '%s'", "ksnoop_func_map"); in cmd_trace()
881 if (attach_traces(skel, traces, nr_traces)) { in cmd_trace()
882 p_err("Could not attach %d traces", nr_traces); in cmd_trace()
914 bpf_link__destroy(traces[i].links[0]); in cmd_trace()
915 bpf_link__destroy(traces[i].links[1]); in cmd_trace()
917 free(traces); in cmd_trace()