builtin-inject.c (cd10b289520577a56c5d369b9a2e7bbee5698a4b) builtin-inject.c (e31f0d017ea19fce9f12f084e1c750a0e3b43680)
1/*
2 * builtin-inject.c
3 *
4 * Builtin inject command: Examine the live mode (stdin) event stream
5 * and repipe it to stdout while optionally injecting additional
6 * events into it.
7 */
8#include "builtin.h"

--- 39 unchanged lines hidden (view full) ---

48 size = perf_data_file__write(&inject->output, buf, sz);
49 if (size < 0)
50 return -errno;
51
52 inject->bytes_written += size;
53 return 0;
54}
55
1/*
2 * builtin-inject.c
3 *
4 * Builtin inject command: Examine the live mode (stdin) event stream
5 * and repipe it to stdout while optionally injecting additional
6 * events into it.
7 */
8#include "builtin.h"

--- 39 unchanged lines hidden (view full) ---

48 size = perf_data_file__write(&inject->output, buf, sz);
49 if (size < 0)
50 return -errno;
51
52 inject->bytes_written += size;
53 return 0;
54}
55
56static int copy_bytes(struct perf_inject *inject, int fd, off_t size)
57{
58 char buf[4096];
59 ssize_t ssz;
60 int ret;
61
62 while (size > 0) {
63 ssz = read(fd, buf, min(size, (off_t)sizeof(buf)));
64 if (ssz < 0)
65 return -errno;
66 ret = output_bytes(inject, buf, ssz);
67 if (ret)
68 return ret;
69 size -= ssz;
70 }
71
72 return 0;
73}
74
75static int perf_event__repipe_synth(struct perf_tool *tool,
76 union perf_event *event)
77{
78 struct perf_inject *inject = container_of(tool, struct perf_inject,
79 tool);
80
81 return output_bytes(inject, event, event->header.size);
82}

--- 26 unchanged lines hidden (view full) ---

109 return ret;
110
111 if (!inject->output.is_pipe)
112 return 0;
113
114 return perf_event__repipe_synth(tool, event);
115}
116
56static int perf_event__repipe_synth(struct perf_tool *tool,
57 union perf_event *event)
58{
59 struct perf_inject *inject = container_of(tool, struct perf_inject,
60 tool);
61
62 return output_bytes(inject, event, event->header.size);
63}

--- 26 unchanged lines hidden (view full) ---

90 return ret;
91
92 if (!inject->output.is_pipe)
93 return 0;
94
95 return perf_event__repipe_synth(tool, event);
96}
97
98#ifdef HAVE_AUXTRACE_SUPPORT
99
100static int copy_bytes(struct perf_inject *inject, int fd, off_t size)
101{
102 char buf[4096];
103 ssize_t ssz;
104 int ret;
105
106 while (size > 0) {
107 ssz = read(fd, buf, min(size, (off_t)sizeof(buf)));
108 if (ssz < 0)
109 return -errno;
110 ret = output_bytes(inject, buf, ssz);
111 if (ret)
112 return ret;
113 size -= ssz;
114 }
115
116 return 0;
117}
118
117static s64 perf_event__repipe_auxtrace(struct perf_tool *tool,
118 union perf_event *event,
119 struct perf_session *session
120 __maybe_unused)
121{
122 struct perf_inject *inject = container_of(tool, struct perf_inject,
123 tool);
124 int ret;

--- 23 unchanged lines hidden (view full) ---

148 event->header.size + event->auxtrace.size);
149 }
150 if (ret < 0)
151 return ret;
152
153 return event->auxtrace.size;
154}
155
119static s64 perf_event__repipe_auxtrace(struct perf_tool *tool,
120 union perf_event *event,
121 struct perf_session *session
122 __maybe_unused)
123{
124 struct perf_inject *inject = container_of(tool, struct perf_inject,
125 tool);
126 int ret;

--- 23 unchanged lines hidden (view full) ---

150 event->header.size + event->auxtrace.size);
151 }
152 if (ret < 0)
153 return ret;
154
155 return event->auxtrace.size;
156}
157
158#else
159
160static s64
161perf_event__repipe_auxtrace(struct perf_tool *tool __maybe_unused,
162 union perf_event *event __maybe_unused,
163 struct perf_session *session __maybe_unused)
164{
165 pr_err("AUX area tracing not supported\n");
166 return -EINVAL;
167}
168
169#endif
170
156static int perf_event__repipe(struct perf_tool *tool,
157 union perf_event *event,
158 struct perf_sample *sample __maybe_unused,
159 struct machine *machine __maybe_unused)
160{
161 return perf_event__repipe_synth(tool, event);
162}
163

--- 460 unchanged lines hidden ---
171static int perf_event__repipe(struct perf_tool *tool,
172 union perf_event *event,
173 struct perf_sample *sample __maybe_unused,
174 struct machine *machine __maybe_unused)
175{
176 return perf_event__repipe_synth(tool, event);
177}
178

--- 460 unchanged lines hidden ---