v4l2_queryctrl(9)
π NAME π
okay so bestie, welcome to v4l2_queryctrl β and yes, you're on the v4l2_queryctrl(9) page of the Kernel API Manual, we're doing kernel things today β¨
v4l2_queryctrl is literally just the helper function you use to implement the :ref:VIDIOC_QUERYCTRL <vidioc_queryctrl>`` ioctl. that's the whole job. it's giving "supporting character who carries the entire plot" energy π
πΈ SYNOPSIS πΈ
int v4l2_queryctrl (struct v4l2_ctrl_handler *hdl , struct v4l2_queryctrl *qc );
like, look at her. she returns an int, she takes two pointers, she's iconic. no cap π«Ά
π ARGUMENTS π
hdlβ pointer tostruct v4l2_ctrl_handlerπqcβ pointer tostruct v4l2_queryctrlπ¦
that's it. two pointers. you got this fr fr.
π§ DESCRIPTION π§
here's the tea, and it's short and honestly a little ominous:
if hdl == NULL then they will all return -EINVAL.
yes bestie, the manpage really says "they will all return" β plural, vague, mysterious, main character energy π i'm not the author, i'm just the messenger. the rule is:hdl == NULLβ-EINVAL. periodt.
π SEE ALSO π
okay so this is the part where the page lists literally every single control-related function and type and struct in the whole neighborhood, and i'm not skipping a single one because that would be a crime against your education π€
Kernel file: ./include/media/v4l2-ctrls.h
union v4l2_ctrl_ptr(9)v4l2_ctrl_ptr_create(9)struct v4l2_ctrl_ops(9)struct v4l2_ctrl_type_ops(9)v4l2_ctrl_notify_fnc(9)struct v4l2_ctrl(9)struct v4l2_ctrl_ref(9)struct v4l2_ctrl_handler(9)struct v4l2_ctrl_config(9)v4l2_ctrl_fill(9)v4l2_ctrl_handler_init_class(9)v4l2_ctrl_handler_init(9)v4l2_ctrl_handler_free(9)v4l2_ctrl_lock(9)v4l2_ctrl_unlock(9)__v4l2_ctrl_handler_setup(9)v4l2_ctrl_handler_setup(9)v4l2_ctrl_handler_log_status(9)v4l2_ctrl_new_custom(9)v4l2_ctrl_new_std(9)v4l2_ctrl_new_std_menu(9)v4l2_ctrl_new_std_menu_items(9)v4l2_ctrl_new_std_compound(9)v4l2_ctrl_new_int_menu(9)v4l2_ctrl_filter(9)v4l2_ctrl_add_handler(9)v4l2_ctrl_radio_filter(9)v4l2_ctrl_cluster(9)v4l2_ctrl_auto_cluster(9)v4l2_ctrl_find(9)v4l2_ctrl_activate(9)__v4l2_ctrl_grab(9)v4l2_ctrl_grab(9)__v4l2_ctrl_modify_range(9)v4l2_ctrl_modify_range(9)__v4l2_ctrl_modify_dimensions(9)v4l2_ctrl_modify_dimensions(9)v4l2_ctrl_notify(9)v4l2_ctrl_get_name(9)v4l2_ctrl_get_menu(9)v4l2_ctrl_get_int_menu(9)v4l2_ctrl_g_ctrl(9)__v4l2_ctrl_s_ctrl(9)v4l2_ctrl_s_ctrl(9)v4l2_ctrl_g_ctrl_int64(9)__v4l2_ctrl_s_ctrl_int64(9)v4l2_ctrl_s_ctrl_int64(9)__v4l2_ctrl_s_ctrl_string(9)v4l2_ctrl_s_ctrl_string(9)__v4l2_ctrl_s_ctrl_compound(9)v4l2_ctrl_s_ctrl_compound(9)v4l2_ctrl_replace(9)v4l2_ctrl_merge(9)v4l2_ctrl_log_status(9)v4l2_ctrl_subscribe_event(9)v4l2_ctrl_poll(9)v4l2_ctrl_request_setup(9)v4l2_ctrl_request_complete(9)v4l2_ctrl_request_hdl_find(9)v4l2_ctrl_request_hdl_put(9)v4l2_ctrl_request_hdl_ctrl_find(9)v4l2_query_ext_ctrl_to_v4l2_queryctrl(9)v4l2_query_ext_ctrl(9)v4l2_querymenu(9)v4l2_g_ctrl(9)v4l2_s_ctrl(9)v4l2_g_ext_ctrls(9)v4l2_try_ext_ctrls(9)v4l2_s_ext_ctrls(9)v4l2_ctrl_subdev_subscribe_event(9)v4l2_ctrl_subdev_log_status(9)v4l2_ctrl_new_fwnode_properties(9)v4l2_ctrl_type_op_equal(9)v4l2_ctrl_type_op_init(9)v4l2_ctrl_type_op_log(9)v4l2_ctrl_type_op_validate(9)
look at that list. she ate and left no crumbs π₯ read them, love them, they're family now.
and that's the whole page bestie!! this masterpiece lives in ./include/media and it's dated October 2026 β go forth, pass hdl, don't pass NULL, and slay ππβ¨
π¦ 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