Message ID | 867ba9728179ba21ff8f8aca97d416b72ccd63d9.1736248242.git.viresh.kumar@linaro.org |
---|---|
State | New |
Headers | show |
Series | Rust bindings for cpufreq and OPP core + sample driver | expand |
On 07-01-25, 12:59, Greg KH wrote: > On Tue, Jan 07, 2025 at 04:51:35PM +0530, Viresh Kumar wrote: > > Add a function to calculate number of entries in the cpufreq table. This > > will be used by the Rust implementation. > > Again, why is Rust unique here? Why wouldn't the C code also need this? How about this: cpufreq: Add cpufreq_table_len() The last entry of a cpufreq table is marked by setting the frequency field to a special value: CPUFREQ_TABLE_END. The C code manages to traverse the table by checking the frequency field, until it reaches CPUFREQ_TABLE_END. The Rust cpufreq bindings though will need to know the length of the cpufreq table in advance, for example to check against an invalid index value. Provide a helper to calculate number of entries in the cpufreq table. will be used by the Rust implementation. > > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> > > --- > > include/linux/cpufreq.h | 11 +++++++++++ > > 1 file changed, 11 insertions(+) > > > > diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h > > index 7fe0981a7e46..6b882ff4dc24 100644 > > --- a/include/linux/cpufreq.h > > +++ b/include/linux/cpufreq.h > > @@ -783,6 +783,17 @@ bool cpufreq_boost_enabled(void); > > int cpufreq_enable_boost_support(void); > > bool policy_has_boost_freq(struct cpufreq_policy *policy); > > > > +static inline unsigned int cpufreq_table_len(struct cpufreq_frequency_table *freq_table) > > +{ > > + struct cpufreq_frequency_table *pos; > > + unsigned int count = 0; > > + > > + cpufreq_for_each_entry(pos, freq_table) > > + count++; > > No locking is needed? No, the cpufreq table is implemented as an array and is never altered once created.
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index 7fe0981a7e46..6b882ff4dc24 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h @@ -783,6 +783,17 @@ bool cpufreq_boost_enabled(void); int cpufreq_enable_boost_support(void); bool policy_has_boost_freq(struct cpufreq_policy *policy); +static inline unsigned int cpufreq_table_len(struct cpufreq_frequency_table *freq_table) +{ + struct cpufreq_frequency_table *pos; + unsigned int count = 0; + + cpufreq_for_each_entry(pos, freq_table) + count++; + + return count; +} + /* Find lowest freq at or above target in a table in ascending order */ static inline int cpufreq_table_find_index_al(struct cpufreq_policy *policy, unsigned int target_freq,
Add a function to calculate number of entries in the cpufreq table. This will be used by the Rust implementation. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> --- include/linux/cpufreq.h | 11 +++++++++++ 1 file changed, 11 insertions(+)