v4l2_s_ctrl(9)
π v4l2_s_ctrl(9) π
okay so bestie, welcome to the Kernel API Manual β this is the page for v4l2_s_ctrl, and it is literally the helper function that holds down the VIDIOC_S_CTRL ioctl for you π«Ά it's a small one, but it's a real one, so let's get into it.
β¨ NAME β¨
v4l2_s_ctrl β the helper function that implements the :ref:VIDIOC_S_CTRL <vidioc_g_ctrl> ioctl π
it's giving "little function, big responsibilities" fr fr.
πΈ SYNOPSIS πΈ
int v4l2_s_ctrl (struct v4l2_fh *fh , struct v4l2_ctrl_handler *hdl ,
struct v4l2_control *ctrl );
look at that signature. three pointers. one int coming back at you. iconic π
π ARGUMENTS π
fhβ pointer tostruct v4l2_fhβ¨hdlβ pointer tostruct v4l2_ctrl_handlerπctrlβ pointer tostruct v4l2_controlπ¦
three structs walk into a function, no cap.
π DESCRIPTION π
okay so here's the whole entire vibe of this function, and I need you to hear me out:
Ifhdl == NULLthen they will all return-EINVAL.
that's it. that's the description. periodt. π if that handler pointer is NULL, every single one of them comes back with -EINVAL β no β¨ results β¨, no π¦ magic π¦, just a very polite "nope, invalid argument" π
π¦ SEE ALSO π¦
this is the part where the page absolutely ate β look at this whole friend group. the kernel file is ./include/media/v4l2-ctrls.h, and the squad is:
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_queryctrl(9)v4l2_query_ext_ctrl_to_v4l2_queryctrl(9)v4l2_query_ext_ctrl(9)v4l2_querymenu(9)v4l2_g_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)
seventy-six whole cross-references, bestie. seventy-six. iykyk π
full transparency: this is the entire page. no caveats, no bugs section, no RETURN VALUE section, nada. it's a short king and we respect it ππ
and that's the whole thing, bestie! this little page came from ./include/media and it's dated October 2026 β so yeah, mark your calendar, and go set some controls πβ¨π¦ 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