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 <ppranjal@nvidia.com>
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 <buildbot_gerritrpt@nvidia.com>
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Reviewed-by: Evgeny Kornev <ekornev@nvidia.com>
This commit is contained in:
Pushpesh Pranjal
2024-11-04 12:45:05 +00:00
committed by Jon Hunter
parent 1ad8bfcf97
commit cbf1e15fdc

View File

@@ -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,