STRUCT ICC_NODE(9)
β¨ 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,u8bitfield of size1, 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.u32average bandwidth, aggregated, from everyone who asked πpeak_bwβ aggregated value of peak bandwidth requests from all consumers.u32peak 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
- 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