diff options
author | Steven Rostedt (Google) <rostedt@goodmis.org> | 2023-01-06 13:39:21 -0500 |
---|---|---|
committer | Steven Rostedt (Google) <rostedt@goodmis.org> | 2023-01-09 13:12:37 -0500 |
commit | 85f75900c2fb12b4d91dc9e0685cbeec8a9a11c6 (patch) | |
tree | f32b11cbdde4a083dcd662c63452843aac3486b0 | |
parent | 422d37425a0861b5b932f850752b2ac0f2f4b050 (diff) | |
download | trace-cmd-85f75900c2fb12b4d91dc9e0685cbeec8a9a11c6.tar.gz |
trace-cmd library: Set recorder to nonblock when finished
When the recorder is signaled to stop, make sure it only reads in
non-blocking mode.
Link: https://lore.kernel.org/linux-trace-devel/20230106183930.12565-2-rostedt@goodmis.org
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
-rw-r--r-- | lib/trace-cmd/trace-recorder.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/trace-cmd/trace-recorder.c b/lib/trace-cmd/trace-recorder.c index f387091f..bb02f7b8 100644 --- a/lib/trace-cmd/trace-recorder.c +++ b/lib/trace-cmd/trace-recorder.c @@ -317,11 +317,12 @@ static inline void update_fd(struct tracecmd_recorder *recorder, int size) */ static long read_data(struct tracecmd_recorder *recorder) { + bool nonblock = recorder->stop; char buf[recorder->subbuf_size]; long left; long r, w; - r = tracefs_cpu_read(recorder->tcpu, buf, false); + r = tracefs_cpu_read(recorder->tcpu, buf, nonblock); left = r; do { @@ -344,11 +345,13 @@ static long read_data(struct tracecmd_recorder *recorder) */ static long direct_splice_data(struct tracecmd_recorder *recorder) { - return tracefs_cpu_pipe(recorder->tcpu, recorder->fd, false); + bool nonblock = recorder->stop; + return tracefs_cpu_pipe(recorder->tcpu, recorder->fd, nonblock); } static long move_data(struct tracecmd_recorder *recorder) { + bool nonblock = recorder->stop; long ret; if (recorder->flags & TRACECMD_RECORD_NOSPLICE) @@ -357,7 +360,7 @@ static long move_data(struct tracecmd_recorder *recorder) if (recorder->flags & TRACECMD_RECORD_NOBRASS) return direct_splice_data(recorder); - ret = tracefs_cpu_write(recorder->tcpu, recorder->fd, false); + ret = tracefs_cpu_write(recorder->tcpu, recorder->fd, nonblock); if (ret > 0) update_fd(recorder, ret); return ret; |