__v4l2_ctrl_s_ctrl(9)
π
__v4l2_ctrl_s_ctrl(9) β unlocked variant of v4l2_ctrl_s_ctrl() π
okay bestie, welcome to the Kernel API Manual, grab a boba, because this one's a little β¨spicyβ¨ β it's the unlocked sibling of v4l2_ctrl_s_ctrl(), and the whole personality of this function is "I'm trusting you to already hold the lock, don't make it weird." π«Ά
β¨ SYNOPSIS β¨
int __v4l2_ctrl_s_ctrl (struct v4l2_ctrl *ctrl , s32 val );
πΈ ARGUMENTS πΈ
ctrlβ the control. π the main character, literally.valβ the new value. the glow-up you're applying to it. s32, no cap.
π¦ DESCRIPTION π¦
so what does it do? It sets the control's new value safely by going through the control framework β like, it doesn't just yeet a number into a struct, it does the whole proper pipeline. very demure, very mindful. π
But here's the catch, and it's giving big energy: this function assumes the control's handler is already locked. π That's the whole point β that's why it's the __ version. Because of that assumption, it can be called from within the v4l2_ctrl_ops functions. iykyk. π§
β οΈ warning bestie: if the handler is not locked when you call this, that's on you. the function did not agree to that. read the room (and the lock state). π
Also, hard vibe check: this function is for integer type controls only. integer. that's it. that's the whole menu. don't come at it with strings or compounds, it will not eat that. π
π SEE ALSO π
the whole extended friend group, no gatekeeping β starting with the 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_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_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)
and that's the whole page, bestie, you ate that πβ¨ this lil' drop came straight out of the source dir ./include/media, dated October 2026 β so go forth, hold that lock, set that integer, 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