STRUCT PDS_CORE_COMPONENT_TBL(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

struct pds_core_component_tbl β€” the component table details, bestie ✨

This one lives in the Kernel API Manual (section 9, kernel-space gang πŸ‘‘), and it's honestly giving "backend paperwork that makes the whole firmware update thing work."


πŸŽ€ SYNOPSIS πŸŽ€

struct pds_core_component_tbl {
    __le32 comparison_stamp;
    __le16 classification;
    __le16 identifier;
    u8 transfer_flag;
    u8 version_str_type;
    u8 version_str_len;
    u8 version_str[];
};

Look at that flexible array member at the end β€” version_str[] β€” she's literally built different, no cap. 🌈


🧩 Members 🧩

okay so let's go field by field, and yes we're doing all of them πŸ’…

  • comparison_stamp β€” the comparison stamp used for component version checks πŸ•΅οΈβ€β™€οΈ like, this is how the kernel figures out whether your component is the version it thinks it is.
  • classification β€” vendor specific classification info 🏷️ it's your vendor's business what goes here, iykyk.
  • identifier β€” the component's ID πŸ†” so everybody knows which component we're talking about.
  • transfer_flag β€” part of the component table this request represents 🚩 lowkey the "which chunk are we shipping" marker.
  • version_str_type β€” the types of strings used πŸ”€ (yes, plural "types" β€” that's what it says, don't come for me).
  • version_str_len β€” length of version_str πŸ“ so the kernel knows how much of that flexible array is real.
  • version_str β€” component version information πŸ“ the actual version juice itself.

πŸ¦‹ SEE ALSO πŸ¦‹

Everything in this little family, and bestie there are so many of them β€” go read them, they're all in the kernel file ./include/linux/pds/pds_core_if.h:

  • struct pds_core_drv_identity(9)
  • enum pds_core_dev_capability(9)
  • struct pds_core_dev_identity(9)
  • struct pds_core_dev_identify_cmd(9)
  • struct pds_core_dev_identify_comp(9)
  • struct pds_core_dev_reset_cmd(9)
  • struct pds_core_dev_reset_comp(9)
  • struct pds_core_dev_init_cmd(9)
  • struct pds_core_dev_init_comp(9)
  • struct pds_core_fw_download_cmd(9)
  • struct pds_core_fw_download_comp(9)
  • enum pds_core_fw_control_oper(9)
  • enum pds_core_fw_slot(9)
  • struct pds_core_fw_control_cmd(9)
  • struct pds_core_fw_control_comp(9)
  • enum pds_core_vf_link_status(9)
  • struct pds_core_vf_setattr_cmd(9)
  • struct pds_core_vf_getattr_cmd(9)
  • struct pds_core_vf_ctrl_cmd(9)
  • struct pds_core_vf_ctrl_comp(9)
  • struct pds_core_send_pkg_data_cmd(9)
  • struct pds_core_send_pkg_data_comp(9)
  • struct pds_core_send_component_tbl_cmd(9)
  • struct pds_core_send_component_tbl_comp(9)
  • enum pds_core_send_component_op(9)
  • struct pds_core_flash_component(9)
  • struct pds_core_send_component_cmd(9)
  • struct pds_core_send_component_comp(9)
  • enum pds_core_fw_component_type(9)
  • enum pds_core_component_info_flags(9)
  • struct pds_core_fw_component_info(9)
  • struct pds_core_component_list_info(9)
  • struct pds_core_get_component_info_cmd(9)
  • struct pds_core_get_component_info_comp(9)
  • struct pds_core_finalize_update_cmd(9)
  • struct pds_core_finalize_update_comp(9)
  • struct pds_core_match_record_desc_cmd(9)
  • struct pds_core_match_record_desc_comp(9)
  • enum pds_core_host_mem_oper(9)
  • struct pds_core_host_mem_cmd(9)
  • struct pds_core_host_mem_comp(9)
  • struct pds_core_dev_hwstamp_regs(9)
  • struct pds_core_dev_info_regs(9)
  • struct pds_core_dev_cmd_regs(9)
  • struct pds_core_dev_regs(9)

bestie reminder 🫢 the __le32 and __le16 types are little-endian, so don't go memcpy-ing them around all willy-nilly and then act surprised. byte order is real and she will humble you. πŸ’€

okay that's the whole page, mwah πŸ’‹ this one came out of ./include/linux/pds, and she's dated October 2026 β€” so yeah, future icon behavior πŸ‘‘βœ¨ periodt.

πŸ“¦ where this page comes from