v4l2_s_ext_ctrls(9)
π v4l2_s_ext_ctrls(9) β from the Kernel API Manual, bestie β¨
okay so picture this: you're deep in the kernel, you're doing V4L2 things, and you need a little helper. that's her. that's the main character. this page lives in the Kernel API Manual and she's here to make your ioctl dreams come true π«Ά
πΈ NAME πΈ
v4l2_s_ext_ctrls β the helper function that implements the :ref:VIDIOC_S_EXT_CTRLS <vidioc_g_ext_ctrls> ioctl. literally her whole job. iconic π
β¨ SYNOPSIS β¨
int v4l2_s_ext_ctrls (struct v4l2_fh *fh , struct v4l2_ctrl_handler *hdl
, struct video_device *vdev , struct media_device *mdev , struct
v4l2_ext_controls *c );
that's five pointers and an int, and yes you have to pass all of them, no skipping, no shortcuts π
π ARGUMENTS π
fhβ pointer tostruct v4l2_fh. the file handle vibe β¨hdlβ pointer tostruct v4l2_ctrl_handler. the control handler herself, keep an eye on this one πvdevβ pointer tostruct video_device. your video device bestie πΉmdevβ pointer tostruct media_device. media device, also a pointer, also invited to the party π¦cβ pointer tostruct v4l2_ext_controls. the extended controls crew, all bundled up π
π₯ DESCRIPTION π₯
so like, real talk: if hdl == NULL then they will all return -EINVAL. that's it. that's the lore. no cap, that's the documented behaviour β null handler? -EINVAL for everybody, no exceptions, the end π
lowkey a vibe check on your handler pointer before you even call this. just saying. π
π SEE ALSO π
the friend group is huge and every single one of them is invited, so buckle up bestie π
- 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_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_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)
like I said. huge friend group. every single one linked, none left on read π
okay that's the whole page, you ate that π this little beauty ships out of ./include/media and the version stamp on her is October 2026 β so she's, like, extremely current. go forth and set those extended controls, bestie, and remember: check your hdl first ππ
π¦ 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