vb2_core_create_bufs(9)
π vb2_core_create_bufs(9) β the buffer-making one
okay bestie, welcome to the Kernel API Manual β¨ this one's a function page from the videobuf2 world, and honestly? it's kind of a big deal. sit down, grab a strawberry π, and let's get into it.
πΈ NAME πΈ
vb2_core_create_bufs β literally just: allocate buffers and any required auxiliary structs. that's it, that's the vibe. π
β¨ SYNOPSIS β¨
int vb2_core_create_bufs (struct vb2_queue *q , enum vb2_memory memory ,
unsigned int flags , unsigned int *count , unsigned int requested_planes
, const unsigned int requested_sizes[] , unsigned int *first_index );
look at all those params π she's high-maintenance but she delivers.
π¦ ARGUMENTS π¦
qβ pointer tostruct vb2_queuewith the videobuf2 queue. your queue. your main character. πmemoryβ the memory type, as defined byenum vb2_memory.flagsβ auxiliary queue/buffer management flags. little toggles, big responsibilities.countβ the requested buffer count. how many you want, bestie.requested_planesβ number of planes requested.requested_sizesβ array with the size of the planes. one size per plane, don't skip βfirst_indexβ index of the first created buffer. and here's the cute math bit: all allocated buffers have indices in the range[first_index..first_index+count-1]π
π DESCRIPTION π
so this is the Videobuf2 core helper that implements the VIDIOC_CREATE_BUFS operation. it gets called internally by VB2 through an API-specific handler, like videobuf2-v4l2.h. iykyk π§
what does this function actually do? three things, and she does them in order:
- verifies parameter sanity (vibe check β )
- calls the
vb2_ops->queue_setupqueue operation - performs any necessary memory allocations
periodt. that's the whole pipeline. π
π₯ RETURN π₯
returns zero on success; an error code otherwise. no cap β zero means slay, anything else means something went sideways π
β SEE ALSO β
okay this list is long but we're not skipping a single one, that would be disrespectful fr fr. here's the whole squad:
Kernel file ./include/media/videobuf2-core.h along with 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_prepare_buf(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) π«Ά
go read all of them. or at least the ones you need. no pressure π
and that's the page!! π this cutie lives in ./include/media, dated October 2026, straight from the Kernel API Manual β mwah, bye bestie, go allocate 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