diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
commit | ada47b5fe13d89735805b566185f4885f5a3f750 (patch) | |
tree | 644b88f8a71896307d71438e9b3af49126ffb22b /tools/perf/util/trace-event-read.c | |
parent | 43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff) | |
parent | 3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff) |
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'tools/perf/util/trace-event-read.c')
-rw-r--r-- | tools/perf/util/trace-event-read.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/tools/perf/util/trace-event-read.c b/tools/perf/util/trace-event-read.c index 1b5c847d2c22..7cd1193918c7 100644 --- a/tools/perf/util/trace-event-read.c +++ b/tools/perf/util/trace-event-read.c | |||
@@ -18,7 +18,7 @@ | |||
18 | * | 18 | * |
19 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 19 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
20 | */ | 20 | */ |
21 | #define _LARGEFILE64_SOURCE | 21 | #define _FILE_OFFSET_BITS 64 |
22 | 22 | ||
23 | #include <dirent.h> | 23 | #include <dirent.h> |
24 | #include <stdio.h> | 24 | #include <stdio.h> |
@@ -83,7 +83,7 @@ static char *read_string(void) | |||
83 | char *str = NULL; | 83 | char *str = NULL; |
84 | int size = 0; | 84 | int size = 0; |
85 | int i; | 85 | int i; |
86 | int r; | 86 | off_t r; |
87 | 87 | ||
88 | for (;;) { | 88 | for (;;) { |
89 | r = read(input_fd, buf, BUFSIZ); | 89 | r = read(input_fd, buf, BUFSIZ); |
@@ -118,7 +118,7 @@ static char *read_string(void) | |||
118 | 118 | ||
119 | /* move the file descriptor to the end of the string */ | 119 | /* move the file descriptor to the end of the string */ |
120 | r = lseek(input_fd, -(r - i), SEEK_CUR); | 120 | r = lseek(input_fd, -(r - i), SEEK_CUR); |
121 | if (r < 0) | 121 | if (r == (off_t)-1) |
122 | die("lseek"); | 122 | die("lseek"); |
123 | 123 | ||
124 | if (str) { | 124 | if (str) { |
@@ -145,8 +145,9 @@ static void read_proc_kallsyms(void) | |||
145 | if (!size) | 145 | if (!size) |
146 | return; | 146 | return; |
147 | 147 | ||
148 | buf = malloc_or_die(size); | 148 | buf = malloc_or_die(size + 1); |
149 | read_or_die(buf, size); | 149 | read_or_die(buf, size); |
150 | buf[size] = '\0'; | ||
150 | 151 | ||
151 | parse_proc_kallsyms(buf, size); | 152 | parse_proc_kallsyms(buf, size); |
152 | 153 | ||
@@ -281,8 +282,8 @@ static void update_cpu_data_index(int cpu) | |||
281 | 282 | ||
282 | static void get_next_page(int cpu) | 283 | static void get_next_page(int cpu) |
283 | { | 284 | { |
284 | off64_t save_seek; | 285 | off_t save_seek; |
285 | off64_t ret; | 286 | off_t ret; |
286 | 287 | ||
287 | if (!cpu_data[cpu].page) | 288 | if (!cpu_data[cpu].page) |
288 | return; | 289 | return; |
@@ -297,17 +298,17 @@ static void get_next_page(int cpu) | |||
297 | update_cpu_data_index(cpu); | 298 | update_cpu_data_index(cpu); |
298 | 299 | ||
299 | /* other parts of the code may expect the pointer to not move */ | 300 | /* other parts of the code may expect the pointer to not move */ |
300 | save_seek = lseek64(input_fd, 0, SEEK_CUR); | 301 | save_seek = lseek(input_fd, 0, SEEK_CUR); |
301 | 302 | ||
302 | ret = lseek64(input_fd, cpu_data[cpu].offset, SEEK_SET); | 303 | ret = lseek(input_fd, cpu_data[cpu].offset, SEEK_SET); |
303 | if (ret < 0) | 304 | if (ret == (off_t)-1) |
304 | die("failed to lseek"); | 305 | die("failed to lseek"); |
305 | ret = read(input_fd, cpu_data[cpu].page, page_size); | 306 | ret = read(input_fd, cpu_data[cpu].page, page_size); |
306 | if (ret < 0) | 307 | if (ret < 0) |
307 | die("failed to read page"); | 308 | die("failed to read page"); |
308 | 309 | ||
309 | /* reset the file pointer back */ | 310 | /* reset the file pointer back */ |
310 | lseek64(input_fd, save_seek, SEEK_SET); | 311 | lseek(input_fd, save_seek, SEEK_SET); |
311 | 312 | ||
312 | return; | 313 | return; |
313 | } | 314 | } |
@@ -458,9 +459,8 @@ struct record *trace_read_data(int cpu) | |||
458 | return data; | 459 | return data; |
459 | } | 460 | } |
460 | 461 | ||
461 | void trace_report(void) | 462 | void trace_report(int fd) |
462 | { | 463 | { |
463 | const char *input_file = "trace.info"; | ||
464 | char buf[BUFSIZ]; | 464 | char buf[BUFSIZ]; |
465 | char test[] = { 23, 8, 68 }; | 465 | char test[] = { 23, 8, 68 }; |
466 | char *version; | 466 | char *version; |
@@ -468,17 +468,15 @@ void trace_report(void) | |||
468 | int show_funcs = 0; | 468 | int show_funcs = 0; |
469 | int show_printk = 0; | 469 | int show_printk = 0; |
470 | 470 | ||
471 | input_fd = open(input_file, O_RDONLY); | 471 | input_fd = fd; |
472 | if (input_fd < 0) | ||
473 | die("opening '%s'\n", input_file); | ||
474 | 472 | ||
475 | read_or_die(buf, 3); | 473 | read_or_die(buf, 3); |
476 | if (memcmp(buf, test, 3) != 0) | 474 | if (memcmp(buf, test, 3) != 0) |
477 | die("not an trace data file"); | 475 | die("no trace data in the file"); |
478 | 476 | ||
479 | read_or_die(buf, 7); | 477 | read_or_die(buf, 7); |
480 | if (memcmp(buf, "tracing", 7) != 0) | 478 | if (memcmp(buf, "tracing", 7) != 0) |
481 | die("not a trace file (missing tracing)"); | 479 | die("not a trace file (missing 'tracing' tag)"); |
482 | 480 | ||
483 | version = read_string(); | 481 | version = read_string(); |
484 | if (show_version) | 482 | if (show_version) |