mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 10:04:04 +02:00
tracing: Add tracer_tracing_disable/enable() functions
Allow a tracer to disable writing to its buffer for a temporary amount of time and re-enable it. The tracer_tracing_disable() will disable writing to the trace array buffer, and requires a tracer_tracing_enable() to re-enable it. The difference between tracer_tracing_disable() and tracer_tracing_off() is that the disable version can nest, and requires as many enable() calls as disable() calls to re-enable the buffer. Where as the off() function can be called multiple times and only requires a singe tracer_tracing_on() to re-enable the buffer. Cc: Jason Wessel <jason.wessel@windriver.com> 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> Cc: Daniel Thompson <danielt@kernel.org> Reviewed-by: Douglas Anderson <dianders@chromium.org> Link: https://lore.kernel.org/20250505212235.210330010@goodmis.org Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
This commit is contained in:
parent
1577683a92
commit
dbecef68ad
|
|
@ -1582,6 +1582,39 @@ void tracer_tracing_off(struct trace_array *tr)
|
|||
smp_wmb();
|
||||
}
|
||||
|
||||
/**
|
||||
* tracer_tracing_disable() - temporary disable the buffer from write
|
||||
* @tr: The trace array to disable its buffer for
|
||||
*
|
||||
* Expects trace_tracing_enable() to re-enable tracing.
|
||||
* The difference between this and tracer_tracing_off() is that this
|
||||
* is a counter and can nest, whereas, tracer_tracing_off() can
|
||||
* be called multiple times and a single trace_tracing_on() will
|
||||
* enable it.
|
||||
*/
|
||||
void tracer_tracing_disable(struct trace_array *tr)
|
||||
{
|
||||
if (WARN_ON_ONCE(!tr->array_buffer.buffer))
|
||||
return;
|
||||
|
||||
ring_buffer_record_disable(tr->array_buffer.buffer);
|
||||
}
|
||||
|
||||
/**
|
||||
* tracer_tracing_enable() - counter part of tracer_tracing_disable()
|
||||
* @tr: The trace array that had tracer_tracincg_disable() called on it
|
||||
*
|
||||
* This is called after tracer_tracing_disable() has been called on @tr,
|
||||
* when it's safe to re-enable tracing.
|
||||
*/
|
||||
void tracer_tracing_enable(struct trace_array *tr)
|
||||
{
|
||||
if (WARN_ON_ONCE(!tr->array_buffer.buffer))
|
||||
return;
|
||||
|
||||
ring_buffer_record_enable(tr->array_buffer.buffer);
|
||||
}
|
||||
|
||||
/**
|
||||
* tracing_off - turn off tracing buffers
|
||||
*
|
||||
|
|
|
|||
|
|
@ -665,6 +665,8 @@ bool tracing_is_disabled(void);
|
|||
bool tracer_tracing_is_on(struct trace_array *tr);
|
||||
void tracer_tracing_on(struct trace_array *tr);
|
||||
void tracer_tracing_off(struct trace_array *tr);
|
||||
void tracer_tracing_disable(struct trace_array *tr);
|
||||
void tracer_tracing_enable(struct trace_array *tr);
|
||||
struct dentry *trace_create_file(const char *name,
|
||||
umode_t mode,
|
||||
struct dentry *parent,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user