From cbf1e15fdc25a2a16f1d0dde59788c565da418c2 Mon Sep 17 00:00:00 2001 From: Pushpesh Pranjal Date: Mon, 4 Nov 2024 12:45:05 +0000 Subject: [PATCH] kernel: nvidia-oot: adding use case to discard existing traces - Add usecase to discard existing traces, using a write call, that sets last read event index to header's next event index. Jira CAMERASW-29336 Change-Id: Ibfc94cf5f5484b5a4ad9c2cc6f9eaeb4937ac564 Signed-off-by: Pushpesh Pranjal Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3242168 (cherry picked from commit 148495ac64e645aff04abdf1d0334e7ea6400982) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3248850 GVS: buildbot_gerritrpt Reviewed-by: Sachin Nikam Reviewed-by: Evgeny Kornev --- .../platform/tegra/rtcpu/tegra-rtcpu-trace.c | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/platform/tegra/rtcpu/tegra-rtcpu-trace.c b/drivers/platform/tegra/rtcpu/tegra-rtcpu-trace.c index 55a14307..b5f3874b 100644 --- a/drivers/platform/tegra/rtcpu/tegra-rtcpu-trace.c +++ b/drivers/platform/tegra/rtcpu/tegra-rtcpu-trace.c @@ -1493,6 +1493,31 @@ rtcpu_raw_trace_read(struct file *file, char __user *user_buffer, size_t buffer_ return events_copied * sizeof(struct camrtc_event_struct); } +static ssize_t rtcpu_raw_trace_write( + struct file *file, const char __user *user_buffer, size_t buffer_size, loff_t *ppos) +{ + struct rtcpu_raw_trace_context *fd_context = file->private_data; + + if (!fd_context) { + pr_err("file descriptor context is not set in private data\n"); + return -ENODEV; + } + + struct tegra_rtcpu_trace *tracer = fd_context->tracer; + + if (!tracer) { + pr_err("Tracer is not set in file descriptor context\n"); + return -ENODEV; + } + + const struct camrtc_trace_memory_header *header = tracer->trace_memory; + + fd_context->raw_trace_last_read_event_idx = header->event_next_idx; + file->private_data = fd_context; + + return buffer_size; +} + unsigned int rtcpu_raw_trace_poll(struct file *file, poll_table *wait) { unsigned int ret = 0; @@ -1575,6 +1600,7 @@ static const struct file_operations rtcpu_raw_trace_fops = { .owner = THIS_MODULE, .llseek = no_llseek, .read = rtcpu_raw_trace_read, + .write = rtcpu_raw_trace_write, .poll = rtcpu_raw_trace_poll, .open = rtcpu_raw_trace_open, .release = rtcpu_raw_trace_release,