mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-03-03 18:28:01 +01:00
tracing: Move __trace_buffer_{un}lock_*() functions to trace.h
The file trace.c has become a catchall for most things tracing. Start making it smaller by breaking out various aspects into their own files. Move the __always_inline functions __trace_buffer_lock_reserve(), __trace_buffer_unlock_commit() and trace_event_setup() into trace.h. The trace.c file will be split up and these functions will be used in more than one of these files. As they are already __always_inline they can easily be moved into the trace.h header file. Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Andrew Morton <akpm@linux-foundation.org> Link: https://patch.msgid.link/20260208032449.813550600@kernel.org Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
This commit is contained in:
committed by
Steven Rostedt (Google)
parent
a4f77ffc8e
commit
0e730bc067
@@ -1058,30 +1058,6 @@ static inline void ftrace_trace_stack(struct trace_array *tr,
|
||||
|
||||
#endif
|
||||
|
||||
static __always_inline void
|
||||
trace_event_setup(struct ring_buffer_event *event,
|
||||
int type, unsigned int trace_ctx)
|
||||
{
|
||||
struct trace_entry *ent = ring_buffer_event_data(event);
|
||||
|
||||
tracing_generic_entry_update(ent, type, trace_ctx);
|
||||
}
|
||||
|
||||
static __always_inline struct ring_buffer_event *
|
||||
__trace_buffer_lock_reserve(struct trace_buffer *buffer,
|
||||
int type,
|
||||
unsigned long len,
|
||||
unsigned int trace_ctx)
|
||||
{
|
||||
struct ring_buffer_event *event;
|
||||
|
||||
event = ring_buffer_lock_reserve(buffer, len);
|
||||
if (event != NULL)
|
||||
trace_event_setup(event, type, trace_ctx);
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
void tracer_tracing_on(struct trace_array *tr)
|
||||
{
|
||||
if (tr->array_buffer.buffer)
|
||||
@@ -1109,24 +1085,6 @@ void tracing_on(void)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tracing_on);
|
||||
|
||||
|
||||
static __always_inline void
|
||||
__buffer_unlock_commit(struct trace_buffer *buffer, struct ring_buffer_event *event)
|
||||
{
|
||||
__this_cpu_write(trace_taskinfo_save, true);
|
||||
|
||||
/* If this is the temp buffer, we need to commit fully */
|
||||
if (this_cpu_read(trace_buffered_event) == event) {
|
||||
/* Length is in event->array[0] */
|
||||
ring_buffer_write(buffer, event->array[0], &event->array[1]);
|
||||
/* Release the temp buffer */
|
||||
this_cpu_dec(trace_buffered_event_cnt);
|
||||
/* ring_buffer_unlock_commit() enables preemption */
|
||||
preempt_enable_notrace();
|
||||
} else
|
||||
ring_buffer_unlock_commit(buffer);
|
||||
}
|
||||
|
||||
int __trace_array_puts(struct trace_array *tr, unsigned long ip,
|
||||
const char *str, int size)
|
||||
{
|
||||
|
||||
@@ -1568,6 +1568,47 @@ char *trace_user_fault_read(struct trace_user_buf_info *tinfo,
|
||||
const char __user *ptr, size_t size,
|
||||
trace_user_buf_copy copy_func, void *data);
|
||||
|
||||
static __always_inline void
|
||||
trace_event_setup(struct ring_buffer_event *event,
|
||||
int type, unsigned int trace_ctx)
|
||||
{
|
||||
struct trace_entry *ent = ring_buffer_event_data(event);
|
||||
|
||||
tracing_generic_entry_update(ent, type, trace_ctx);
|
||||
}
|
||||
|
||||
static __always_inline struct ring_buffer_event *
|
||||
__trace_buffer_lock_reserve(struct trace_buffer *buffer,
|
||||
int type,
|
||||
unsigned long len,
|
||||
unsigned int trace_ctx)
|
||||
{
|
||||
struct ring_buffer_event *event;
|
||||
|
||||
event = ring_buffer_lock_reserve(buffer, len);
|
||||
if (event != NULL)
|
||||
trace_event_setup(event, type, trace_ctx);
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
static __always_inline void
|
||||
__buffer_unlock_commit(struct trace_buffer *buffer, struct ring_buffer_event *event)
|
||||
{
|
||||
__this_cpu_write(trace_taskinfo_save, true);
|
||||
|
||||
/* If this is the temp buffer, we need to commit fully */
|
||||
if (this_cpu_read(trace_buffered_event) == event) {
|
||||
/* Length is in event->array[0] */
|
||||
ring_buffer_write(buffer, event->array[0], &event->array[1]);
|
||||
/* Release the temp buffer */
|
||||
this_cpu_dec(trace_buffered_event_cnt);
|
||||
/* ring_buffer_unlock_commit() enables preemption */
|
||||
preempt_enable_notrace();
|
||||
} else
|
||||
ring_buffer_unlock_commit(buffer);
|
||||
}
|
||||
|
||||
static inline void
|
||||
__trace_event_discard_commit(struct trace_buffer *buffer,
|
||||
struct ring_buffer_event *event)
|
||||
|
||||
Reference in New Issue
Block a user