Re: [PATCH v10 13/30] tracing: Introduce simple_ring_buffer
From: Steven Rostedt <rostedt@goodmis.org>
Date: 2026-01-28 23:18:43
Also in:
kvmarm, linux-trace-kernel, lkml
On Mon, 26 Jan 2026 10:44:02 +0000 Vincent Donnefort [off-list ref] wrote:
+ +/** + * simple_ring_buffer_init - Init @cpu_buffer based on @desc + * + * @cpu_buffer: A simple_rb_per_cpu buffer to init, allocated by the caller. + * @bpages: Array of simple_buffer_pages, with as many elements as @desc->nr_page_va + * @desc: A ring_buffer_desc + * + * Returns: 0 on success or -EINVAL if the content of @desc is invalid + */
Again, kerneldoc goes with the function and not the prototype. Especially helps with review, as I like to see the kerneldoc what reading the function. -- Steve
+int simple_ring_buffer_init(struct simple_rb_per_cpu *cpu_buffer, struct simple_buffer_page *bpages, + const struct ring_buffer_desc *desc); + +/** + * simple_ring_buffer_unload - Prepare @cpu_buffer for deletion + * + * @cpu_buffer: A simple_rb_per_cpu that will be deleted. + */ +void simple_ring_buffer_unload(struct simple_rb_per_cpu *cpu_buffer); + +/** + * simple_ring_buffer_reserve - Reserve an entry in @cpu_buffer + * + * @cpu_buffer: A simple_rb_per_cpu + * @length: Size of the entry in bytes + * @timestamp: Timestamp of the entry + * + * Returns the address of the entry where to write data or NULL + */ +void *simple_ring_buffer_reserve(struct simple_rb_per_cpu *cpu_buffer, unsigned long length, + u64 timestamp); + +/** + * simple_ring_buffer_commit - Commit the entry reserved with simple_ring_buffer_reserve() + * + * @cpu_buffer: The simple_rb_per_cpu where the entry has been reserved + */ +void simple_ring_buffer_commit(struct simple_rb_per_cpu *cpu_buffer); + +/** + * simple_ring_buffer_enable_tracing - Enable or disable writing to @cpu_buffer + * + * @cpu_buffer: A simple_rb_per_cpu + * @enable: True to enable tracing, False to disable it + * + * Returns 0 on success or -ENODEV if @cpu_buffer was unloaded + */ +int simple_ring_buffer_enable_tracing(struct simple_rb_per_cpu *cpu_buffer, bool enable); + +/** + * simple_ring_buffer_reset - Reset @cpu_buffer + * + * @cpu_buffer: A simple_rb_per_cpu + * + * This will not clear the content of the data, only reset counters and pointers + * + * Returns 0 on success or -ENODEV if @cpu_buffer was unloaded. + */ +int simple_ring_buffer_reset(struct simple_rb_per_cpu *cpu_buffer); + +/** + * simple_ring_buffer_swap_reader_page - Swap ring-buffer head with the reader + * + * This function enables consuming reading. It ensures the current head page will not be overwritten + * and can be safely read. + * + * @cpu_buffer: A simple_rb_per_cpu + * + * Returns 0 on success, -ENODEV if @cpu_buffer was unloaded or -EBUSY if we failed to catch the + * head page. + */ +int simple_ring_buffer_swap_reader_page(struct simple_rb_per_cpu *cpu_buffer); + +#endif