vb2_fileio_is_active(9)
π vb2_fileio_is_active β like, the Kernel API Manual girlies know β¨
okay so bestie, welcome to the vb2_fileio_is_active(9) page from the Kernel API Manual. yes it's a whole mouthful, no i will not be pronouncing it out loud at a party. but it's actually such a tiny icon and it does exactly one little job, and it does it slayfully. let's go π«Ά
β¨ NAME β¨
vb2_fileio_is_active β returns true if fileio is active. that's it. that's the whole vibe check.
π¦ SYNOPSIS π¦
bool vb2_fileio_is_active (struct vb2_queue *q );
π ARGUMENTS π
qβ pointer tostruct vb2_queuewith your videobuf2 queue in it. literally just the queue. hand it over π
πΈ DESCRIPTION πΈ
so this function returns true if read or write is used to stream the data, as opposed to stream I/O. two different streaming energy sources, and this is how you tell which one you're dealing with π
lowkey? it's almost never an important distinction. like, the vast majority of the time you can simply not care. but there ARE rare cases where it matters a lot, and one of those cases is a whole thing:
using read or write to stream a format that uses V4L2_FIELD_ALTERNATE is not allowed, because there's genuinely no way for you to pass the field information of each buffer to/from userspace. like, the plumbing just isn't there, bestie. it's giving "we don't have the infrastructure for that." π
so if you're writing a driver that supports this field format, you should check for this in the vb2_ops->queue_setup op, and reject it if this function returns true. main character driver behavior: know your limits, set your boundaries π
ngl, this is one of those "check before you commit" functions. the check is cheap, the consequences of skipping it are not π¨
π SEE ALSO π
the whole friend group, fr fr. also the Kernel file ./include/media/videobuf2-core.h β go say hi π§
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_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_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!! πβ¨π this little legend lives over in ./include/media, and it was dated October 2026 β so yeah, she's timestamped and everything. go forth and check your queue_setup, bestie, ily, bye π¦ππΈ
π¦ 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