STRUCT ICC_NODE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct icc_node(9) ✨

omg hi bestie πŸ’– okay so this is the Kernel API Manual entry for struct icc_node and it's lowkey the main character of interconnect topology. it's literally the entity that is part of the interconnect topology, periodt. this is from the Kernel API Manual, section 9 β€” iykyk.

the way that this struct is just a whole vibe β€” it's giving "I'm a node in a graph and I know it." no cap, every field is here for a reason and we're gonna go through ALL of them because that's what besties do 🫢


πŸ¦‹ SYNOPSIS πŸ¦‹

struct icc_node {
    int id;
    const char              *name;
    struct icc_node         **links;
    size_t num_links;
    struct icc_provider     *provider;
    struct list_head        node_list;
    struct list_head        search_list;
    struct icc_node         *reverse;
    u8 is_traversed:1;
    struct hlist_head       req_list;
    u32 avg_bw;
    u32 peak_bw;
    u32 init_avg;
    u32 init_peak;
    void *data;
 };

like, look at her. iconic. πŸ’…


πŸŽ€ Members πŸŽ€

okay so this is the part where we go field by field and I hype each one up, but also tell you exactly what it does because facts are facts bestie:

  • id β€” platform specific node id. that's it, that's the tea. it's the ID your platform gives it ✨
  • name β€” node name used in debugfs. so when you're poking around in debugfs you'll see this and be like "oh hey bestie" 🌸
  • links β€” a list of targets pointing to where we can go next when traversing. it's literally the friend group of this node β€” where you can hop to next πŸ”₯
  • num_links β€” number of links to other interconnect nodes. the count. the quantity. how many friends this node has fr fr πŸ‘‘
  • provider β€” points to the interconnect provider of this node. like, this node's parent/provider energy. main character needs a supporting cast πŸ’œ
  • node_list β€” the list entry in the parent provider's "nodes" list. this is how we keep track of who belongs where πŸŽ€
  • search_list β€” list used when walking the nodes graph. graph traversal bestie, we love to see it 🌈
  • reverse β€” pointer to previous node when walking the nodes graph. like a "go back" button but make it pointer ⭐
  • is_traversed β€” flag that is used when walking the nodes graph. one little bit, u8 bitfield of size 1, doing the most πŸ’€
  • req_list β€” a list of QoS constraint requests associated with this node. QoS stands for Quality of Service and this list is holding all the requests okay πŸ™ˆ
  • avg_bw β€” aggregated value of average bandwidth requests from all consumers. u32 average bandwidth, aggregated, from everyone who asked πŸ“
  • peak_bw β€” aggregated value of peak bandwidth requests from all consumers. u32 peak bandwidth, same deal, aggregated from all consumers 🧚
  • init_avg β€” average bandwidth value that is read from the hardware during init. hardware says "this is my average" at init time πŸ’–
  • init_peak β€” peak bandwidth value that is read from the hardware during init. hardware says "this is my peak" at init time ✨
  • data β€” pointer to private data. void * because it can be literally anything, mysterious and flexible, we stan πŸ¦‹

πŸ” SEE ALSO πŸ”

  • Kernel file ./include/linux/interconnect-provider.h
  • struct icc_node_data(9)
  • struct icc_onecell_data(9)
  • struct icc_provider(9)

like go read those too bestie, they're all connected, it's a whole ecosystem πŸ’–


okay that's the whole page! this was ./include/linux and the date on this one is October 2026 β€” so basically it's from the future and it's still iconic. go forth and traverse those nodes, bestie. you got this. slay πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from