Skip to content

Commit

Permalink
perf probe: Export init/exit_probe_symbol_maps()
Browse files Browse the repository at this point in the history
The init/exit_symbols_maps() functions are to setup and cleanup
necessary info for probe events.  But they need to be called from out of
the probe code now, so this patch exports them.

However the names are too generic, so change them to have 'probe'. :)

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1441852026-28974-2-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
  • Loading branch information
Namhyung Kim authored and Arnaldo Carvalho de Melo committed Sep 15, 2015
1 parent a43aac2 commit 9bae1e8
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 16 deletions.
5 changes: 5 additions & 0 deletions tools/perf/builtin-probe.c
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,10 @@ static int perf_add_probe_events(struct perf_probe_event *pevs, int npevs)
int i, k;
const char *event = NULL, *group = NULL;

ret = init_probe_symbol_maps(pevs->uprobes);
if (ret < 0)
return ret;

ret = convert_perf_probe_events(pevs, npevs);
if (ret < 0)
goto out_cleanup;
Expand Down Expand Up @@ -354,6 +358,7 @@ static int perf_add_probe_events(struct perf_probe_event *pevs, int npevs)

out_cleanup:
cleanup_perf_probe_events(pevs, npevs);
exit_probe_symbol_maps();
return ret;
}

Expand Down
31 changes: 15 additions & 16 deletions tools/perf/util/probe-event.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ static char *synthesize_perf_probe_point(struct perf_probe_point *pp);
static struct machine *host_machine;

/* Initialize symbol maps and path of vmlinux/modules */
static int init_symbol_maps(bool user_only)
int init_probe_symbol_maps(bool user_only)
{
int ret;

Expand Down Expand Up @@ -101,7 +101,7 @@ static int init_symbol_maps(bool user_only)
return ret;
}

static void exit_symbol_maps(void)
void exit_probe_symbol_maps(void)
{
if (host_machine) {
machine__delete(host_machine);
Expand Down Expand Up @@ -859,11 +859,11 @@ int show_line_range(struct line_range *lr, const char *module, bool user)
{
int ret;

ret = init_symbol_maps(user);
ret = init_probe_symbol_maps(user);
if (ret < 0)
return ret;
ret = __show_line_range(lr, module, user);
exit_symbol_maps();
exit_probe_symbol_maps();

return ret;
}
Expand Down Expand Up @@ -941,7 +941,7 @@ int show_available_vars(struct perf_probe_event *pevs, int npevs,
int i, ret = 0;
struct debuginfo *dinfo;

ret = init_symbol_maps(pevs->uprobes);
ret = init_probe_symbol_maps(pevs->uprobes);
if (ret < 0)
return ret;

Expand All @@ -958,7 +958,7 @@ int show_available_vars(struct perf_probe_event *pevs, int npevs,

debuginfo__delete(dinfo);
out:
exit_symbol_maps();
exit_probe_symbol_maps();
return ret;
}

Expand Down Expand Up @@ -2262,7 +2262,7 @@ int show_perf_probe_events(struct strfilter *filter)

setup_pager();

ret = init_symbol_maps(false);
ret = init_probe_symbol_maps(false);
if (ret < 0)
return ret;

Expand All @@ -2278,7 +2278,7 @@ int show_perf_probe_events(struct strfilter *filter)
close(kp_fd);
if (up_fd > 0)
close(up_fd);
exit_symbol_maps();
exit_probe_symbol_maps();

return ret;
}
Expand Down Expand Up @@ -2746,10 +2746,6 @@ int convert_perf_probe_events(struct perf_probe_event *pevs, int npevs)
{
int i, ret;

ret = init_symbol_maps(pevs->uprobes);
if (ret < 0)
return ret;

/* Loop 1: convert all events */
for (i = 0; i < npevs; i++) {
/* Init kprobe blacklist if needed */
Expand Down Expand Up @@ -2794,20 +2790,23 @@ void cleanup_perf_probe_events(struct perf_probe_event *pevs, int npevs)
pevs[i].ntevs = 0;
clear_perf_probe_event(&pevs[i]);
}

exit_symbol_maps();
}

int add_perf_probe_events(struct perf_probe_event *pevs, int npevs)
{
int ret;

ret = init_probe_symbol_maps(pevs->uprobes);
if (ret < 0)
return ret;

ret = convert_perf_probe_events(pevs, npevs);
if (ret == 0)
ret = apply_perf_probe_events(pevs, npevs);

cleanup_perf_probe_events(pevs, npevs);

exit_probe_symbol_maps();
return ret;
}

Expand Down Expand Up @@ -2867,7 +2866,7 @@ int show_available_funcs(const char *target, struct strfilter *_filter,
struct map *map;
int ret;

ret = init_symbol_maps(user);
ret = init_probe_symbol_maps(user);
if (ret < 0)
return ret;

Expand Down Expand Up @@ -2897,7 +2896,7 @@ int show_available_funcs(const char *target, struct strfilter *_filter,
if (user) {
map__put(map);
}
exit_symbol_maps();
exit_probe_symbol_maps();

return ret;
}
Expand Down
2 changes: 2 additions & 0 deletions tools/perf/util/probe-event.h
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ struct variable_list {
};

struct map;
int init_probe_symbol_maps(bool user_only);
void exit_probe_symbol_maps(void);

/* Command string to events */
extern int parse_perf_probe_command(const char *cmd,
Expand Down

0 comments on commit 9bae1e8

Please sign in to comment.