STRUCT ICC_PROVIDER(9)
πΈ struct icc_provider(9) πΈ
okay so you picked up the Kernel API Manual bestie, and we're doing the interconnect provider today β no cap, this one's a baddie π
β¨ NAME β¨
struct icc_provider β the interconnect provider (controller) entity that might provide multiple interconnect controls π«Ά
Like, might. It's giving "provider energy," not "provider guarantee." π
π¦ SYNOPSIS π¦
struct icc_provider {
struct list_head provider_list;
struct list_head nodes;
int (*set)(struct icc_node *src, struct icc_node *dst);
int (*aggregate)(struct icc_node *node, u32 tag, u32 avg_bw, u32 peak_bw, u32 *agg_avg, u32 *agg_peak);
void (*pre_aggregate)(struct icc_node *node);
int (*get_bw)(struct icc_node *node, u32 *avg, u32 *peak);
struct icc_node* (*xlate)(const struct of_phandle_args *spec, void *data);
struct icc_node_data* (*xlate_extended)(const struct of_phandle_args *spec, void *data);
struct device *dev;
int users;
bool inter_set;
void *data;
};
look at all those function pointers. the way that this struct is literally just a group chat of callbacks π
π§© Members π§©
provider_listβ the list of the registered interconnect providers. it's on the list, she's registered, she's official β¨nodesβ the interconnect provider's internal list of nodes. internal!! not for public consumption, bestie πsetβ pointer to the device specific set operation function. this is the one doing the actual setting π―aggregateβ pointer to the device specific aggregate operation function. it aggregates, it's an icon, it ate πpre_aggregateβ pointer to a device specific function that gets called before the aggregation begins. and it's optional, so if you don't have one, no stress π«Άget_bwβ pointer to a device specific function to get the current bandwidth. it's giving "how much are we working with rn" πxlateβ the provider-specific callback for mapping nodes from phandle arguments. sounds scary, it's just translation, iykyk π¦xlate_extendedβ the vendor-specific callback for mapping node data from phandle arguments. note: node data, not just the node. extended. upgraded. main character energy βdevβ the device this interconnect provider belongs to. every provider needs their home device, periodt πusersβ count of active users. just a number. a little headcount. don't overthink her πinter_setβ whether inter-provider pairs will be configured withset. yes/no, that's the whole vibe πdataβ pointer to private data. private!! respect her privacy π
π SEE ALSO π
- Kernel file
./include/linux/interconnect-provider.h struct icc_node_data(9)struct icc_onecell_data(9)struct icc_node(9)
go read those next, bestie, they're all linked in the group chat π₯
π§ friendly reminder: the function pointers marked optional are optional β everything else is your struct's whole personality. don't skip the boring ones. π
that's the whole page, you absolutely crushed it π mwah π«Ά
./include/linux Β· October 2026 Β· struct icc_provider(9) β that's the source, the date, and the title of the whole thing, so now you know exactly where this lore came from π
β¨
π¦ 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