Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

tracing: Add init callback to trace remotes

Add a .init call back so the trace remote callers can add entries to the
tracefs directory.

Link: https://patch.msgid.link/20260309162516.2623589-9-vdonnefort@google.com
Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Vincent Donnefort <vdonnefort@google.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>

authored by

Vincent Donnefort and committed by
Steven Rostedt (Google)
bf2ba0f8 330b0cce

+10 -1
+4
include/linux/trace_remote.h
··· 3 3 #ifndef _LINUX_TRACE_REMOTE_H 4 4 #define _LINUX_TRACE_REMOTE_H 5 5 6 + #include <linux/dcache.h> 6 7 #include <linux/ring_buffer.h> 7 8 8 9 /** 9 10 * struct trace_remote_callbacks - Callbacks used by Tracefs to control the remote 11 + * @init: Called once the remote has been registered. Allows the 12 + * caller to extend the Tracefs remote directory 10 13 * @load_trace_buffer: Called before Tracefs accesses the trace buffer for the first 11 14 * time. Must return a &trace_buffer_desc 12 15 * (most likely filled with trace_remote_alloc_buffer()) ··· 25 22 * new reader-page from the @cpu ring-buffer. 26 23 */ 27 24 struct trace_remote_callbacks { 25 + int (*init)(struct dentry *d, void *priv); 28 26 struct trace_buffer_desc *(*load_trace_buffer)(unsigned long size, void *priv); 29 27 void (*unload_trace_buffer)(struct trace_buffer_desc *desc, void *priv); 30 28 int (*enable_tracing)(bool enable, void *priv);
+6 -1
kernel/trace/trace_remote.c
··· 863 863 int trace_remote_register(const char *name, struct trace_remote_callbacks *cbs, void *priv) 864 864 { 865 865 struct trace_remote *remote; 866 + int ret; 866 867 867 868 remote = kzalloc_obj(*remote); 868 869 if (!remote) ··· 881 880 return -ENOMEM; 882 881 } 883 882 884 - return 0; 883 + ret = cbs->init ? cbs->init(remote->dentry, priv) : 0; 884 + if (ret) 885 + pr_err("Init failed for trace remote '%s' (%d)\n", name, ret); 886 + 887 + return ret; 885 888 } 886 889 EXPORT_SYMBOL_GPL(trace_remote_register); 887 890