[PATCH v4 15/18] tracing/remotes: Add poll_ms tracefs file
Vincent Donnefort <[email protected]> Tue, 4 Aug 2026 15:03:30 +0100
| Newsgroups | org.kernel.vger.linux-trace-kernel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Add a tracefs file to configure the trace remote polling period. Keep the default value to 100ms. Signed-off-by: Vincent Donnefort <[email protected]> diff --git a/kernel/trace/trace_remote.c b/kernel/trace/trace_remote.c index 9077b488e584..ccdac9fa106a 100644 --- a/kernel/trace/trace_remote.c +++ b/kernel/trace/trace_remote.c @@ -1135,6 +1135,40 @@ static int dump_on_panic_show(struct seq_file *s, void *unused) } DEFINE_TRACE_REMOTE_ATTRIBUTE(dump_on_panic); +static ssize_t poll_ms_write(struct file *filp, const char __user *ubuf, size_t cnt, loff_t *ppos) +{ + struct seq_file *seq = filp->private_data; + struct trace_remote *remote = seq->private; + unsigned int val; + int ret; + + ret = kstrtouint_from_user(ubuf, cnt, 10, &val); + if (ret) + return ret; + + if (!val) + return -EINVAL; + + guard(mutex)(&remote->lock); + + if (val < remote->poll_ms && remote->poll_cnt) + mod_delayed_work(system_percpu_wq, &remote->poll_work, msecs_to_jiffies(val)); + + remote->poll_ms = val; + + return cnt; +} + +static int poll_ms_show(struct seq_file *s, void *unused) +{ + struct trace_remote *remote = s->private; + + seq_printf(s, "%u\n", remote->poll_ms); + + return 0; +} +DEFINE_TRACE_REMOTE_ATTRIBUTE(poll_ms); + static int trace_remote_init_tracefs(const char *name, struct trace_remote *remote) { struct dentry *remote_d, *percpu_d, *d; @@ -1167,6 +1201,10 @@ static int trace_remote_init_tracefs(const char *name, struct trace_remote *remo if (!d) goto err; + d = trace_create_file("poll_ms", TRACEFS_MODE_WRITE, remote_d, remote, &poll_ms_fops); + if (!d) + goto err; + d = trace_create_file("buffer_size_kb", TRACEFS_MODE_WRITE, remote_d, remote, &buffer_size_kb_fops); if (!d) -- 2.55.0.571.g244d577d93-goog