ring_buffer_wait(9)
π ring_buffer_wait(9) β the kernel API manual β¨
okay bestie, so this is a page from the Kernel API Manual, and today's main character is ring_buffer_wait(9). yes it's a whole function, yes it's about waiting, and yes it's iconic. let's get into it π
π¦ NAME π¦
ring_buffer_wait β literally just wait for input to show up in the ring buffer, that's it, that's the vibe π«Ά
β¨ SYNOPSIS β¨
int ring_buffer_wait (struct trace_buffer *buffer , int cpu , int full ,
ring_buffer_cond_fn cond , void *data );
look at her. five whole arguments. she's living her best life πΈ
π ARGUMENTS π
bufferβ the buffer you're waiting on. your fave. your chosen one.cpuβ which cpu buffer you're waiting on. like, be specific about it.fullβ wait until the percentage of pages are available β but only ifcpu != RING_BUFFER_ALL_CPUS. iykyk πcondβ the condition function that lets you break out of the wait. passNULLto run once, like a one-and-done situation πdataβ the data you hand off tocond. give it something nice.
π DESCRIPTION π
so here's the tea. if cpu == RING_BUFFER_ALL_CPUS, the task wakes up the instant data gets added to any of the buffer's cpu buffers. any of them. no cap. it's giving "main character who's friends with everyone" π
otherwise β like, when you actually named a specific cpu β it waits for data to be added to that specific cpu buffer. loyal. committed. obsessed with one cpu only. periodt. π
π SEE ALSO π
the whole friend group, gathered for the group chat π«Ά also shoutout to the kernel file ./kernel/trace/ring_buffer.c:
ring_buffer_event_length(9)ring_buffer_event_data(9)rb_page_capacity(9)rb_subbuf_capacity(9)rb_subbuf_max_data_size(9)rb_subbuf_start(9)ring_buffer_event_time_stamp(9)ring_buffer_nr_dirty_pages(9)ring_buffer_wake_waiters(9)ring_buffer_poll_wait(9)rb_check_pages(9)rb_validate_buffer(9)__ring_buffer_alloc(9)__ring_buffer_alloc_range(9)__ring_buffer_alloc_remote(9)ring_buffer_free(9)ring_buffer_resize(9)rb_update_event(9)ring_buffer_nest_start(9)ring_buffer_nest_end(9)ring_buffer_unlock_commit(9)ring_buffer_lock_reserve(9)ring_buffer_discard_commit(9)ring_buffer_write(9)ring_buffer_record_disable(9)ring_buffer_record_enable(9)ring_buffer_record_off(9)ring_buffer_record_on(9)ring_buffer_record_is_on(9)ring_buffer_record_is_set_on(9)ring_buffer_record_is_on_cpu(9)ring_buffer_record_disable_cpu(9)ring_buffer_record_enable_cpu(9)ring_buffer_oldest_event_ts(9)ring_buffer_bytes_cpu(9)ring_buffer_entries_cpu(9)ring_buffer_overrun_cpu(9)ring_buffer_commit_overrun_cpu(9)ring_buffer_dropped_events_cpu(9)ring_buffer_read_events_cpu(9)ring_buffer_entries(9)ring_buffer_overruns(9)ring_buffer_iter_reset(9)ring_buffer_iter_empty(9)ring_buffer_peek(9)ring_buffer_iter_peek(9)ring_buffer_consume(9)ring_buffer_read_start(9)ring_buffer_read_finish(9)ring_buffer_iter_advance(9)ring_buffer_size(9)ring_buffer_max_event_size(9)ring_buffer_reset_cpu(9)ring_buffer_reset_online_cpus(9)ring_buffer_reset(9)ring_buffer_empty(9)ring_buffer_empty_cpu(9)ring_buffer_swap_cpu(9)ring_buffer_alloc_read_page(9)ring_buffer_free_read_page(9)ring_buffer_read_page(9)ring_buffer_read_page_data(9)ring_buffer_read_page_size(9)ring_buffer_subbuf_size_get(9)ring_buffer_subbuf_order_get(9)ring_buffer_subbuf_order_set(9)
that's the whole squad, no one left behind π
ok that's the page!! this cutie came out of ./kernel/trace and it's dated October 2026 β so yeah, future-fresh β¨π go wait on that ring buffer bestie, you got this π«Άπ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms