STRUCT MEDIA_GOBJ(9)
π struct media_gobj(9) β the Kernel API Manual moment
okay bestie, buckle up, because we're talking about struct media_gobj from the β¨ Kernel API Manual β¨ β it's giving "small struct, huge responsibilities" and honestly? iconic.
πΈ NAME πΈ
struct media_gobj β Define a graph object. that's it, that's the whole vibe. it defines a graph object π«Ά
β¨ SYNOPSIS β¨
struct media_gobj {
struct media_device *mdev;
u32 id;
struct list_head list;
};
no cap, that's the whole struct. three little members, living their best life π
π¦ Members π¦
mdevβ a pointer to thestruct media_devicethat owns this object. every gobj has a parent device, it's giving family energy πidβ the non-zero object ID identifier. lowkey important: the ID should be unique inside amedia_device, because it's composed byMEDIA_BITS_PER_TYPE(to store the type) plusMEDIA_BITS_PER_ID(to store the ID). so yeah, it's a bit-packing situation and it's serving π§listβ list entry stored in one of the per-type mdev object lists. that's where it lives, that's its home π
π Description π
All objects on the media graph should have this struct embedded. that's the rule, periodt. every single object on the media graph? needs this struct embedded. no exceptions, bestie π
π₯ SEE ALSO π₯
the friend group is massive, so here's every single one of them, in the original order, no one left behind π«Ά
Kernel file ./include/media/media-entity.henum media_gobj_type(9)struct media_entity_enum(9)struct media_graph(9)struct media_pipeline(9)struct media_pipeline_pad(9)struct media_pipeline_pad_iter(9)struct media_pipeline_entity_iter(9)struct media_link(9)enum media_pad_signal_type(9)struct media_pad(9)struct media_entity_operations(9)enum media_entity_type(9)struct media_entity(9)media_entity_for_each_pad(9)struct media_interface(9)struct media_intf_devnode(9)media_entity_id(9)media_type(9)media_id(9)media_gobj_gen_id(9)is_media_entity_v4l2_video_device(9)is_media_entity_v4l2_subdev(9)media_entity_enum_init(9)media_entity_enum_cleanup(9)media_entity_enum_zero(9)media_entity_enum_set(9)media_entity_enum_clear(9)media_entity_enum_test(9)media_entity_enum_test_and_set(9)media_entity_enum_empty(9)media_entity_enum_intersects(9)gobj_to_entity(9)gobj_to_pad(9)gobj_to_link(9)gobj_to_intf(9)intf_to_devnode(9)media_gobj_create(9)media_gobj_destroy(9)media_entity_pads_init(9)media_entity_cleanup(9)media_get_pad_index(9)media_create_pad_link(9)media_create_pad_links(9)media_entity_remove_links(9)__media_entity_setup_link(9)media_entity_setup_link(9)media_entity_find_link(9)media_pad_remote_pad_first(9)media_pad_remote_pad_unique(9)media_entity_remote_pad_unique(9)media_entity_remote_source_pad_unique(9)media_pad_is_streaming(9)media_entity_is_streaming(9)media_entity_pipeline(9)media_pad_pipeline(9)media_entity_get_fwnode_pad(9)media_graph_walk_init(9)media_graph_walk_cleanup(9)media_graph_walk_start(9)media_graph_walk_next(9)media_pipeline_start(9)__media_pipeline_start(9)media_pipeline_stop(9)__media_pipeline_stop(9)media_pipeline_for_each_pad(9)media_pipeline_entity_iter_init(9)media_pipeline_entity_iter_cleanup(9)media_pipeline_for_each_entity(9)media_pipeline_alloc_start(9)media_devnode_create(9)media_devnode_remove(9)media_create_intf_link(9)__media_remove_intf_link(9)media_remove_intf_link(9)__media_remove_intf_links(9)media_remove_intf_links(9)media_entity_call(9)media_create_ancillary_link(9)__media_entity_next_link(9)for_each_media_entity_data_link(9)
and that's the whole page, bestie!! πβ¨ this little icon lives over in ./include/media and the docs are stamped October 2026 β so if anyone asks, you now know struct media_gobj better than you know your own sleep schedule. go embed it in everything (the media graph objects, specifically). mwah ππ
π¦ 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