aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf
diff options
context:
space:
mode:
authorMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>2014-02-06 00:32:11 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2014-02-18 07:34:50 -0500
commit2df58634cd2ad33d7c7ca2e02e1a44db6c8cf68d (patch)
tree831c979e6f830a324cee463c368e5bec3cfe04bd /tools/perf
parent5a62257a3ddd1a09cf278eae0697fcbe20897447 (diff)
perf probe: Unify show_available_functions for uprobes/kprobes
Unify show_available_functions for uprobes/kprobes to cleanup and reduce the code. This also improves error messages. Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Cc: David Ahern <dsahern@gmail.com> Cc: "David A. Long" <dave.long@linaro.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: yrl.pp-manager.tt@hitachi.com Link: http://lkml.kernel.org/r/20140206053211.29635.20563.stgit@kbuild-fedora.yrl.intra.hitachi.co.jp Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
-rw-r--r--tools/perf/util/probe-event.c72
1 files changed, 26 insertions, 46 deletions
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index f70fd08f00b7..ace3ba37c880 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -2323,66 +2323,46 @@ static int filter_available_functions(struct map *map __maybe_unused,
2323 return 1; 2323 return 1;
2324} 2324}
2325 2325
2326static int __show_available_funcs(struct map *map) 2326int show_available_funcs(const char *target, struct strfilter *_filter,
2327{ 2327 bool user)
2328 if (map__load(map, filter_available_functions)) {
2329 pr_err("Failed to load map.\n");
2330 return -EINVAL;
2331 }
2332 if (!dso__sorted_by_name(map->dso, map->type))
2333 dso__sort_by_name(map->dso, map->type);
2334
2335 dso__fprintf_symbols_by_name(map->dso, map->type, stdout);
2336 return 0;
2337}
2338
2339static int available_kernel_funcs(const char *module)
2340{ 2328{
2341 struct map *map; 2329 struct map *map;
2342 int ret; 2330 int ret;
2343 2331
2344 ret = init_symbol_maps(false); 2332 ret = init_symbol_maps(user);
2345 if (ret < 0) 2333 if (ret < 0)
2346 return ret; 2334 return ret;
2347 2335
2348 map = kernel_get_module_map(module); 2336 /* Get a symbol map */
2337 if (user)
2338 map = dso__new_map(target);
2339 else
2340 map = kernel_get_module_map(target);
2349 if (!map) { 2341 if (!map) {
2350 pr_err("Failed to find %s map.\n", (module) ? : "kernel"); 2342 pr_err("Failed to get a map for %s\n", (target) ? : "kernel");
2351 return -EINVAL; 2343 return -EINVAL;
2352 } 2344 }
2353 ret = __show_available_funcs(map);
2354 exit_symbol_maps();
2355
2356 return ret;
2357}
2358
2359static int available_user_funcs(const char *target)
2360{
2361 struct map *map;
2362 int ret;
2363 2345
2364 ret = init_symbol_maps(true); 2346 /* Load symbols with given filter */
2365 if (ret < 0)
2366 return ret;
2367
2368 map = dso__new_map(target);
2369 ret = __show_available_funcs(map);
2370 dso__delete(map->dso);
2371 map__delete(map);
2372 exit_symbol_maps();
2373 return ret;
2374}
2375
2376int show_available_funcs(const char *target, struct strfilter *_filter,
2377 bool user)
2378{
2379 setup_pager();
2380 available_func_filter = _filter; 2347 available_func_filter = _filter;
2348 if (map__load(map, filter_available_functions)) {
2349 pr_err("Failed to load symbols in %s\n", (target) ? : "kernel");
2350 goto end;
2351 }
2352 if (!dso__sorted_by_name(map->dso, map->type))
2353 dso__sort_by_name(map->dso, map->type);
2381 2354
2382 if (!user) 2355 /* Show all (filtered) symbols */
2383 return available_kernel_funcs(target); 2356 setup_pager();
2357 dso__fprintf_symbols_by_name(map->dso, map->type, stdout);
2358end:
2359 if (user) {
2360 dso__delete(map->dso);
2361 map__delete(map);
2362 }
2363 exit_symbol_maps();
2384 2364
2385 return available_user_funcs(target); 2365 return ret;
2386} 2366}
2387 2367
2388/* 2368/*