diff options
author | Lukasz Luba <lukasz.luba@arm.com> | 2024-02-08 11:55:46 +0000 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2024-02-08 15:00:31 +0100 |
commit | ee1a19873ce1234a3c2e6f84af3624fc73bfbd9c (patch) | |
tree | 0ac37f4197e20900a963935e5b8f0175a4baf7a0 /include/linux/energy_model.h | |
parent | 977230d5d50314f9920d3ee6348773d8babbfb58 (diff) | |
download | linux-ee1a19873ce1234a3c2e6f84af3624fc73bfbd9c.tar.gz linux-ee1a19873ce1234a3c2e6f84af3624fc73bfbd9c.tar.bz2 linux-ee1a19873ce1234a3c2e6f84af3624fc73bfbd9c.zip |
PM: EM: Add em_perf_state_from_pd() to get performance states table
Introduce a wrapper to get the performance states table of the performance
domain. The function should be called within the RCU read critical
section.
Reviewed-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Tested-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'include/linux/energy_model.h')
-rw-r--r-- | include/linux/energy_model.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/include/linux/energy_model.h b/include/linux/energy_model.h index 324a3a8e0a2d..158dad6ea313 100644 --- a/include/linux/energy_model.h +++ b/include/linux/energy_model.h @@ -338,6 +338,23 @@ static inline int em_pd_nr_perf_states(struct em_perf_domain *pd) return pd->nr_perf_states; } +/** + * em_perf_state_from_pd() - Get the performance states table of perf. + * domain + * @pd : performance domain for which this must be done + * + * To use this function the rcu_read_lock() should be hold. After the usage + * of the performance states table is finished, the rcu_read_unlock() should + * be called. + * + * Return: the pointer to performance states table of the performance domain + */ +static inline +struct em_perf_state *em_perf_state_from_pd(struct em_perf_domain *pd) +{ + return rcu_dereference(pd->em_table)->state; +} + #else struct em_data_callback {}; #define EM_ADV_DATA_CB(_active_power_cb, _cost_cb) { } @@ -384,6 +401,11 @@ int em_dev_update_perf_domain(struct device *dev, { return -EINVAL; } +static inline +struct em_perf_state *em_perf_state_from_pd(struct em_perf_domain *pd) +{ + return NULL; +} #endif #endif |