STRUCT DEVFREQ_COOLING_DEVICE(9)
π struct devfreq_cooling_device(9)
okay bestie, welcome to the Kernel API Manual β¨ this one's all about struct devfreq_cooling_device, and honestly? it's giving "the blueprint of thermal chill". stay with me, we're gonna go through every single member, no skipping, no cap π«Ά
πΈ NAME πΈ
struct devfreq_cooling_device β Devfreq cooling device
and also, like, devfreq_cooling_device registered. π (yes that's literally what it says, we don't gatekeep the name section, we reproduce it in full, periodt)
β¨ SYNOPSIS β¨
struct devfreq_cooling_device {
struct thermal_cooling_device *cdev;
struct thermal_cooling_device_ops cooling_ops;
struct devfreq *devfreq;
unsigned long cooling_state;
u32 *freq_table;
size_t max_state;
struct devfreq_cooling_power *power_ops;
u32 res_util;
int capped_state;
struct dev_pm_qos_request req_max_freq;
struct em_perf_domain *em_pd;
};
like, look at her. eleven members. main character energy from top to bottom π
π Members π
okay so here's the full cast, one by one, and yes we're doing all of them:
cdevβ Pointer to associated thermal cooling device. that's her bestie, the thermal cooling device she's linked up with π«cooling_opsβ devfreq callbacks to thermal cooling device ops. literally the little callbacks that go talk to the thermal cooling device ops π₯devfreqβ Pointer to associated devfreq device. the devfreq device she's associated with, iconic pairing πcooling_stateβ Current cooling state. the state of the cooling rn, present tense, living in the moment βfreq_tableβ Pointer to a table with the frequencies sorted in descending order. You can index the table by cooling device state. so the table goes biggest β smallest, and you index it by cooling device state. easy. slay πmax_stateβ It is the last index, that is, one less than the number of the OPPs. yes bestie, last index,number of OPPs - 1, classic off-by-one lifestyle πpower_opsβ Pointer todevfreq_cooling_power, a more precised model. more precised. more detailed. more accurate. she said precised and honestly? valid πres_utilβ Resource utilization scaling factor for the power. It is multiplied by 100 to minimize the error. It is used for estimation of the power budget instead of using The'res_util'range is from 100 to power * 100 for the corresponding'state'. okay so: it's the scaling factor for the power, times 100 to keep the error tiny, used for estimating the power budget instead of using The (yes, "The" with a capital T, we don't edit the lore), and the'res_util'range is100topower * 100for the corresponding'state'π¦capped_stateβ index to cooling state with in dynamic power budget. index into the cooling state, inside the dynamic power budget, that's the whole vibe π₯req_max_freqβ PM QoS request for limiting the maximum frequency of the devfreq device. it's the PM QoS request that caps the max frequency of the devfreq device, no cap (well, actually, all cap) πem_pdβ Energy Model for the associated Devfreq device. the Energy Model for the devfreq device she's associated with, gorgeous, energy-conscious queen π§
π₯ SEE ALSO π₯
go read these next, iykyk π
- Kernel file
./drivers/thermal/devfreq_cooling.cget_perf_idx(9) devfreq_cooling_gen_tables(9)of_devfreq_cooling_register_power(9)of_devfreq_cooling_register(9)devfreq_cooling_register(9)devfreq_cooling_em_register(9)devfreq_cooling_unregister(9)
that's the whole page babes, you ate it up π this came at you from ./drivers/thermal, dated October 2026, and the header/footer vibe was pure struct devfreq_cooling_device(9) all along. go forth and cool those devices responsibly πβ¨
π¦ 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