mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-15 22:31:47 -04:00
ring-buffer: Add ring_buffer_record_is_on_cpu()
Add the function ring_buffer_record_is_on_cpu() that returns true if the ring buffer for a give CPU is writable and false otherwise. Also add tracer_tracing_is_on_cpu() to return if the ring buffer for a given CPU is writeable for a given trace_array. 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://lore.kernel.org/20250505212236.059853898@goodmis.org Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
This commit is contained in:
committed by
Steven Rostedt (Google)
parent
969043af15
commit
092a38565e
@@ -192,6 +192,7 @@ void ring_buffer_record_off(struct trace_buffer *buffer);
|
||||
void ring_buffer_record_on(struct trace_buffer *buffer);
|
||||
bool ring_buffer_record_is_on(struct trace_buffer *buffer);
|
||||
bool ring_buffer_record_is_set_on(struct trace_buffer *buffer);
|
||||
bool ring_buffer_record_is_on_cpu(struct trace_buffer *buffer, int cpu);
|
||||
void ring_buffer_record_disable_cpu(struct trace_buffer *buffer, int cpu);
|
||||
void ring_buffer_record_enable_cpu(struct trace_buffer *buffer, int cpu);
|
||||
|
||||
|
||||
@@ -4882,6 +4882,24 @@ bool ring_buffer_record_is_set_on(struct trace_buffer *buffer)
|
||||
return !(atomic_read(&buffer->record_disabled) & RB_BUFFER_OFF);
|
||||
}
|
||||
|
||||
/**
|
||||
* ring_buffer_record_is_on_cpu - return true if the ring buffer can write
|
||||
* @buffer: The ring buffer to see if write is enabled
|
||||
* @cpu: The CPU to test if the ring buffer can write too
|
||||
*
|
||||
* Returns true if the ring buffer is in a state that it accepts writes
|
||||
* for a particular CPU.
|
||||
*/
|
||||
bool ring_buffer_record_is_on_cpu(struct trace_buffer *buffer, int cpu)
|
||||
{
|
||||
struct ring_buffer_per_cpu *cpu_buffer;
|
||||
|
||||
cpu_buffer = buffer->buffers[cpu];
|
||||
|
||||
return ring_buffer_record_is_set_on(buffer) &&
|
||||
!atomic_read(&cpu_buffer->record_disabled);
|
||||
}
|
||||
|
||||
/**
|
||||
* ring_buffer_record_disable_cpu - stop all writes into the cpu_buffer
|
||||
* @buffer: The ring buffer to stop writes to.
|
||||
|
||||
@@ -673,6 +673,21 @@ struct dentry *trace_create_file(const char *name,
|
||||
void *data,
|
||||
const struct file_operations *fops);
|
||||
|
||||
|
||||
/**
|
||||
* tracer_tracing_is_on_cpu - show real state of ring buffer enabled on for a cpu
|
||||
* @tr : the trace array to know if ring buffer is enabled
|
||||
* @cpu: The cpu buffer to check if enabled
|
||||
*
|
||||
* Shows real state of the per CPU buffer if it is enabled or not.
|
||||
*/
|
||||
static inline bool tracer_tracing_is_on_cpu(struct trace_array *tr, int cpu)
|
||||
{
|
||||
if (tr->array_buffer.buffer)
|
||||
return ring_buffer_record_is_on_cpu(tr->array_buffer.buffer, cpu);
|
||||
return false;
|
||||
}
|
||||
|
||||
int tracing_init_dentry(void);
|
||||
|
||||
struct ring_buffer_event;
|
||||
|
||||
Reference in New Issue
Block a user