diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/perf.c | 44 | ||||
-rw-r--r-- | tools/perf/util/parse-events.c | 17 |
2 files changed, 10 insertions, 51 deletions
diff --git a/tools/perf/perf.c b/tools/perf/perf.c index 624e62d9d1e0..601f403fbdac 100644 --- a/tools/perf/perf.c +++ b/tools/perf/perf.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include "util/run-command.h" | 14 | #include "util/run-command.h" |
15 | #include "util/parse-events.h" | 15 | #include "util/parse-events.h" |
16 | #include "util/string.h" | 16 | #include "util/string.h" |
17 | #include "util/debugfs.h" | ||
17 | 18 | ||
18 | const char perf_usage_string[] = | 19 | const char perf_usage_string[] = |
19 | "perf [--version] [--help] COMMAND [ARGS]"; | 20 | "perf [--version] [--help] COMMAND [ARGS]"; |
@@ -382,45 +383,12 @@ static int run_argv(int *argcp, const char ***argv) | |||
382 | /* mini /proc/mounts parser: searching for "^blah /mount/point debugfs" */ | 383 | /* mini /proc/mounts parser: searching for "^blah /mount/point debugfs" */ |
383 | static void get_debugfs_mntpt(void) | 384 | static void get_debugfs_mntpt(void) |
384 | { | 385 | { |
385 | FILE *file; | 386 | const char *path = debugfs_find_mountpoint(); |
386 | char fs_type[100]; | ||
387 | char debugfs[MAXPATHLEN]; | ||
388 | 387 | ||
389 | /* | 388 | if (path) |
390 | * try the standard location | 389 | strncpy(debugfs_mntpt, path, sizeof(debugfs_mntpt)); |
391 | */ | 390 | else |
392 | if (valid_debugfs_mount("/sys/kernel/debug/") == 0) { | 391 | debugfs_mntpt[0] = '\0'; |
393 | strcpy(debugfs_mntpt, "/sys/kernel/debug/"); | ||
394 | return; | ||
395 | } | ||
396 | |||
397 | /* | ||
398 | * try the sane location | ||
399 | */ | ||
400 | if (valid_debugfs_mount("/debug/") == 0) { | ||
401 | strcpy(debugfs_mntpt, "/debug/"); | ||
402 | return; | ||
403 | } | ||
404 | |||
405 | /* | ||
406 | * give up and parse /proc/mounts | ||
407 | */ | ||
408 | file = fopen("/proc/mounts", "r"); | ||
409 | if (file == NULL) | ||
410 | return; | ||
411 | |||
412 | while (fscanf(file, "%*s %" | ||
413 | STR(MAXPATHLEN) | ||
414 | "s %99s %*s %*d %*d\n", | ||
415 | debugfs, fs_type) == 2) { | ||
416 | if (strcmp(fs_type, "debugfs") == 0) | ||
417 | break; | ||
418 | } | ||
419 | fclose(file); | ||
420 | if (strcmp(fs_type, "debugfs") == 0) { | ||
421 | strncpy(debugfs_mntpt, debugfs, MAXPATHLEN); | ||
422 | debugfs_mntpt[MAXPATHLEN - 1] = '\0'; | ||
423 | } | ||
424 | } | 392 | } |
425 | 393 | ||
426 | int main(int argc, const char **argv) | 394 | int main(int argc, const char **argv) |
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 31baa5a60365..097938a96d74 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include "string.h" | 7 | #include "string.h" |
8 | #include "cache.h" | 8 | #include "cache.h" |
9 | #include "header.h" | 9 | #include "header.h" |
10 | #include "debugfs.h" | ||
10 | 11 | ||
11 | int nr_counters; | 12 | int nr_counters; |
12 | 13 | ||
@@ -149,16 +150,6 @@ static int tp_event_has_id(struct dirent *sys_dir, struct dirent *evt_dir) | |||
149 | 150 | ||
150 | #define MAX_EVENT_LENGTH 512 | 151 | #define MAX_EVENT_LENGTH 512 |
151 | 152 | ||
152 | int valid_debugfs_mount(const char *debugfs) | ||
153 | { | ||
154 | struct statfs st_fs; | ||
155 | |||
156 | if (statfs(debugfs, &st_fs) < 0) | ||
157 | return -ENOENT; | ||
158 | else if (st_fs.f_type != (long) DEBUGFS_MAGIC) | ||
159 | return -ENOENT; | ||
160 | return 0; | ||
161 | } | ||
162 | 153 | ||
163 | struct tracepoint_path *tracepoint_id_to_path(u64 config) | 154 | struct tracepoint_path *tracepoint_id_to_path(u64 config) |
164 | { | 155 | { |
@@ -171,7 +162,7 @@ struct tracepoint_path *tracepoint_id_to_path(u64 config) | |||
171 | char evt_path[MAXPATHLEN]; | 162 | char evt_path[MAXPATHLEN]; |
172 | char dir_path[MAXPATHLEN]; | 163 | char dir_path[MAXPATHLEN]; |
173 | 164 | ||
174 | if (valid_debugfs_mount(debugfs_path)) | 165 | if (debugfs_valid_mountpoint(debugfs_path)) |
175 | return NULL; | 166 | return NULL; |
176 | 167 | ||
177 | sys_dir = opendir(debugfs_path); | 168 | sys_dir = opendir(debugfs_path); |
@@ -510,7 +501,7 @@ static enum event_result parse_tracepoint_event(const char **strp, | |||
510 | char sys_name[MAX_EVENT_LENGTH]; | 501 | char sys_name[MAX_EVENT_LENGTH]; |
511 | unsigned int sys_length, evt_length; | 502 | unsigned int sys_length, evt_length; |
512 | 503 | ||
513 | if (valid_debugfs_mount(debugfs_path)) | 504 | if (debugfs_valid_mountpoint(debugfs_path)) |
514 | return 0; | 505 | return 0; |
515 | 506 | ||
516 | evt_name = strchr(*strp, ':'); | 507 | evt_name = strchr(*strp, ':'); |
@@ -788,7 +779,7 @@ static void print_tracepoint_events(void) | |||
788 | char evt_path[MAXPATHLEN]; | 779 | char evt_path[MAXPATHLEN]; |
789 | char dir_path[MAXPATHLEN]; | 780 | char dir_path[MAXPATHLEN]; |
790 | 781 | ||
791 | if (valid_debugfs_mount(debugfs_path)) | 782 | if (debugfs_valid_mountpoint(debugfs_path)) |
792 | return; | 783 | return; |
793 | 784 | ||
794 | sys_dir = opendir(debugfs_path); | 785 | sys_dir = opendir(debugfs_path); |