STRUCT CEC_LOG_ADDRS(9)
π struct cec_log_addrs(9) π
ok so this is a page from the Kernel API Manual and bestie, we're diving into struct cec_log_addrs β the CEC logical addresses structure. yes it's a struct. yes it's important. let's go π
β¨ NAME β¨
struct cec_log_addrs β the CEC logical addresses structure, periodt.
πΈ SYNOPSIS πΈ
struct cec_log_addrs {
__u8 log_addr[CEC_MAX_LOG_ADDRS];
__u16 log_addr_mask;
__u8 cec_version;
__u8 num_log_addrs;
__u32 vendor_id;
__u32 flags;
char osd_name[15];
__u8 primary_device_type[CEC_MAX_LOG_ADDRS];
__u8 log_addr_type[CEC_MAX_LOG_ADDRS];
__u8 all_device_types[CEC_MAX_LOG_ADDRS];
__u8 features[CEC_MAX_LOG_ADDRS][12];
};
look at her. iconic. every field copied exactly, no cap π«Ά
π¦ Members π¦
okay so now we go field by field, and each one tells you who's allowed to touch it (that's the "set by" bit, and it's literally the whole vibe check of this struct) β¨
log_addrβ the claimed logical addresses. set by the driver π₯log_addr_maskβ the current logical address mask. set by the driver π₯cec_versionβ the CEC version that the adapter should implement. set by the caller πnum_log_addrsβ how many logical addresses should be claimed. set by the caller πvendor_idβ the vendor ID of the device. set by the caller πflagsβ flags. (that's it, that's the description, short and mysterious, main character energy honestly π)osd_nameβ the OSD name of the device. set by the caller πprimary_device_typeβ the primary device type for each logical address. set by the caller πlog_addr_typeβ the logical address types. set by the caller πall_device_typesβ CEC 2.0: all device types represented by the logical address. set by the caller πfeaturesβ CEC 2.0: the logical address features. set by the caller π
ngl the driver/caller split is the thing to remember here β driver fills inlog_addrandlog_addr_mask, you (the caller) fill in literally everything else π
π SEE ALSO π
go read these next, bestie, they're all in the kernel file ./include/uapi/linux/cec.h and they all ate:
struct cec_msg(9), cec_msg_initiator(9), cec_msg_destination(9), cec_msg_opcode(9), cec_msg_is_broadcast(9), cec_msg_init(9), cec_msg_set_reply_to(9), cec_msg_recv_is_tx_result(9), cec_msg_recv_is_rx_result(9), struct cec_caps(9), struct cec_drm_connector_info(9), struct cec_connector_info(9), struct cec_event_state_change(9), struct cec_event_lost_msgs(9), struct cec_event(9)
and that's the whole page!! π this one lives in ./include/uapi/linux, dated October 2026, and that's your sign-off bestie β go claim those logical addresses, slay, and remember: driver does two fields, you do the rest ππβ¨
π¦ 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