vb2_core_prepare_buf(9)
π vb2_core_prepare_buf(9) π
okay bestie, so this one lives in the Kernel API Manual section, and it's basically the handoff moment β where a buffer stops being userspace's problem and becomes the kernel's problem. iconic, honestly.
β¨ NAME β¨
vb2_core_prepare_buf β Pass ownership of a buffer from userspace to the kernel.
like, literally passing the aux cord. no cap π
πΈ SYNOPSIS πΈ
int vb2_core_prepare_buf (struct vb2_queue *q , struct vb2_buffer *vb ,
void *pb );
π¦ ARGUMENTS π¦
qβ pointer tostruct vb2_queuewith videobuf2 queue. yes, the whole queue. main character energy πvbβ pointer tostruct vb2_buffer. the buffer itself, hi bestie π«Άpbβ buffer structure passed from userspace to thev4l2_ioctl_ops->vidioc_prepare_bufhandler in the driver. this is the one that travelled all the way from userspace, so be nice to it β¨
π DESCRIPTION π
Videobuf2 core helper to implement the VIDIOC_PREPARE_BUF operation. It's called internally by VB2 by an API-specific handler, like videobuf2-v4l2.h. so you're not usually the one calling it β VB2 is, through one of its little API-specific middlemen. iykyk π«
The passed buffer should have been verified. that's the vibe check, and it already happened before you got here π
This function calls the vb2_ops->buf_prepare callback in the driver (if provided), in which driver-specific buffer initialization can be performed. so if your driver has opinions about how a buffer should get set up, this is where it gets to say them. slay π₯
ngl, the "if provided" is doing real work there β the callback is optional, so don't go assuming it'll always fire.
β RETURN β
returns zero on success; an error code otherwise. zero is the good one, obviously. anything else? not the vibe π
π SEE ALSO π
Kernel file ./include/media/videobuf2-core.h, plus honestly the entire extended universe:
enum vb2_memory(9)struct vb2_mem_ops(9)struct vb2_plane(9)enum vb2_io_modes(9)enum vb2_buffer_state(9)struct vb2_buffer(9)struct vb2_ops(9)struct vb2_buf_ops(9)struct vb2_queue(9)vb2_queue_allows_cache_hints(9)vb2_plane_vaddr(9)vb2_plane_cookie(9)vb2_buffer_done(9)vb2_discard_done(9)vb2_wait_for_all_buffers(9)vb2_core_querybuf(9)vb2_core_reqbufs(9)vb2_core_create_bufs(9)vb2_core_remove_bufs(9)vb2_core_qbuf(9)vb2_core_dqbuf(9)vb2_core_streamon(9)vb2_core_streamoff(9)vb2_core_expbuf(9)vb2_core_queue_init(9)vb2_core_queue_release(9)vb2_queue_error(9)vb2_mmap(9)vb2_get_unmapped_area(9)vb2_core_poll(9)vb2_read(9)vb2_write(9)vb2_thread_fnc(9)vb2_thread_start(9)vb2_thread_stop(9)vb2_is_streaming(9)vb2_fileio_is_active(9)vb2_get_num_buffers(9)vb2_is_busy(9)vb2_get_drv_priv(9)vb2_set_plane_payload(9)vb2_get_plane_payload(9)vb2_plane_size(9)vb2_start_streaming_called(9)vb2_clear_last_buffer_dequeued(9)vb2_get_buffer(9)vb2_buffer_in_use(9)vb2_verify_memory_type(9)vb2_request_object_is_buffer(9)vb2_request_buffer_cnt(9)
and that's the page, bestie!! π it shipped from the ./include/media source directory in October 2026, so go forth and prepare those buffers responsibly πππ¦
π¦ 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