aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/trace-event-read.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/trace-event-read.c')
-rw-r--r--tools/perf/util/trace-event-read.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/tools/perf/util/trace-event-read.c b/tools/perf/util/trace-event-read.c
index 44889c9b5630..43f19c1fed3a 100644
--- a/tools/perf/util/trace-event-read.c
+++ b/tools/perf/util/trace-event-read.c
@@ -51,6 +51,7 @@ static int long_size;
51static unsigned long page_size; 51static unsigned long page_size;
52 52
53static ssize_t calc_data_size; 53static ssize_t calc_data_size;
54static bool repipe;
54 55
55static int do_read(int fd, void *buf, int size) 56static int do_read(int fd, void *buf, int size)
56{ 57{
@@ -62,6 +63,13 @@ static int do_read(int fd, void *buf, int size)
62 if (ret <= 0) 63 if (ret <= 0)
63 return -1; 64 return -1;
64 65
66 if (repipe) {
67 int retw = write(STDOUT_FILENO, buf, ret);
68
69 if (retw <= 0 || retw != ret)
70 die("repiping input file");
71 }
72
65 size -= ret; 73 size -= ret;
66 buf += ret; 74 buf += ret;
67 } 75 }
@@ -116,6 +124,13 @@ static char *read_string(void)
116 if (!r) 124 if (!r)
117 die("no data"); 125 die("no data");
118 126
127 if (repipe) {
128 int retw = write(STDOUT_FILENO, &c, 1);
129
130 if (retw <= 0 || retw != r)
131 die("repiping input file string");
132 }
133
119 buf[size++] = c; 134 buf[size++] = c;
120 135
121 if (!c) 136 if (!c)
@@ -454,7 +469,7 @@ struct record *trace_read_data(int cpu)
454 return data; 469 return data;
455} 470}
456 471
457ssize_t trace_report(int fd) 472ssize_t trace_report(int fd, bool __repipe)
458{ 473{
459 char buf[BUFSIZ]; 474 char buf[BUFSIZ];
460 char test[] = { 23, 8, 68 }; 475 char test[] = { 23, 8, 68 };
@@ -465,6 +480,7 @@ ssize_t trace_report(int fd)
465 ssize_t size; 480 ssize_t size;
466 481
467 calc_data_size = 1; 482 calc_data_size = 1;
483 repipe = __repipe;
468 484
469 input_fd = fd; 485 input_fd = fd;
470 486
@@ -499,6 +515,7 @@ ssize_t trace_report(int fd)
499 515
500 size = calc_data_size - 1; 516 size = calc_data_size - 1;
501 calc_data_size = 0; 517 calc_data_size = 0;
518 repipe = false;
502 519
503 if (show_funcs) { 520 if (show_funcs) {
504 print_funcs(); 521 print_funcs();