vb2_core_qbuf(9)
π vb2_core_qbuf(9) π
okay bestie, welcome to the Kernel API Manual entry for vb2_core_qbuf β yes that's the full name, the manual page title up top literally says vb2_core_qbuf(9) twice and we're not gonna pretend otherwise π
β¨ NAME β¨
vb2_core_qbuf β Queue a buffer from userspace π¦
β¨ SYNOPSIS β¨
int vb2_core_qbuf (struct vb2_queue *q , struct vb2_buffer *vb , void *pb , struct media_request *req );
πΈ ARGUMENTS πΈ
qβ pointer tostruct vb2_queuewith the videobuf2 queue. the whole vibe container, basically πvbβ pointer tostruct vb2_buffer. the buffer in question, main character energy πpbβ the buffer structure passed from userspace to thev4l2_ioctl_ops->vidioc_qbufhandler in your driver. so this is the thing userspace literally handed over π«Άreqβ pointer tostruct media_request, and heads up: it may be NULL. no cap, NULL is allowed here π
π DESCRIPTION π
This is the Videobuf2 core helper that implements the VIDIOC_QBUF operation. It gets called internally by VB2 through an API-specific handler, like videobuf2-v4l2.h β iykyk, it's an inside job β¨
Here's the tea, this function does these things:
- If
reqis non-NULL, then the buffer will be bound to this media request and it returns. The buffer will be prepared and queued to the driver (i.e. the next two steps) when the request itself is queued. β so it clocks out early and finishes the job later, iconic behaviour tbh - if necessary, calls the
vb2_ops->buf_preparecallback in the driver (if provided), in which driver-specific buffer initialization can be performed. π this is where your driver gets to do its little pre-game routine - if streaming is on, queues the buffer in the driver by the means of the
vb2_ops->buf_queuecallback for processing. π₯ and now it's actually off to get processed
β RETURN β
returns zero on success; an error code otherwise. that's it, that's the whole personality check π
π‘ reminder: zero = slay, anything else = not slay. no in-between.
π SEE ALSO π
Kernel file ./include/media/videobuf2-core.h and also these besties:
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_prepare_buf(9)vb2_core_remove_bufs(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 whole page, bestie!! mwah π this one came from ./include/media, version dated October 2026, and the page you just read is vb2_core_qbuf(9). go queue a buffer, u 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