Re: [PATCH v5 7/8] cpumask: Mark functions as pure
On Tue, Feb 09, 2021 at 02:16:52PM -0800, Nadav Amit wrote: > @@ -235,7 +235,7 @@ static inline unsigned int cpumask_last(const struct > cpumask *srcp) > return find_last_bit(cpumask_bits(srcp), nr_cpumask_bits); > } > > -unsigned int cpumask_next(int n, const struct cpumask *srcp); > +unsigned int __pure cpumask_next(int n, const struct cpumask *srcp); > > /** > * cpumask_next_zero - get the next unset cpu in a cpumask I've changed it to: __pure unsigned int cpumask_next(...); to be consistent with these: > @@ -252,8 +252,8 @@ static inline unsigned int cpumask_next_zero(int n, const > struct cpumask *srcp) > return find_next_zero_bit(cpumask_bits(srcp), nr_cpumask_bits, n+1); > } > > -int cpumask_next_and(int n, const struct cpumask *, const struct cpumask *); > -int cpumask_any_but(const struct cpumask *mask, unsigned int cpu); > +__pure int cpumask_next_and(int n, const struct cpumask *, const struct > cpumask *); > +__pure int cpumask_any_but(const struct cpumask *mask, unsigned int cpu); > unsigned int cpumask_local_spread(unsigned int i, int node); > int cpumask_any_and_distribute(const struct cpumask *src1p, > const struct cpumask *src2p);
[PATCH v5 7/8] cpumask: Mark functions as pure
From: Nadav Amit cpumask_next_and() and cpumask_any_but() are pure, and marking them as such seems to generate different and presumably better code for native_flush_tlb_multi(). Reviewed-by: Dave Hansen Signed-off-by: Nadav Amit --- include/linux/cpumask.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index 383684e30f12..e86b7d027cfb 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h @@ -235,7 +235,7 @@ static inline unsigned int cpumask_last(const struct cpumask *srcp) return find_last_bit(cpumask_bits(srcp), nr_cpumask_bits); } -unsigned int cpumask_next(int n, const struct cpumask *srcp); +unsigned int __pure cpumask_next(int n, const struct cpumask *srcp); /** * cpumask_next_zero - get the next unset cpu in a cpumask @@ -252,8 +252,8 @@ static inline unsigned int cpumask_next_zero(int n, const struct cpumask *srcp) return find_next_zero_bit(cpumask_bits(srcp), nr_cpumask_bits, n+1); } -int cpumask_next_and(int n, const struct cpumask *, const struct cpumask *); -int cpumask_any_but(const struct cpumask *mask, unsigned int cpu); +__pure int cpumask_next_and(int n, const struct cpumask *, const struct cpumask *); +__pure int cpumask_any_but(const struct cpumask *mask, unsigned int cpu); unsigned int cpumask_local_spread(unsigned int i, int node); int cpumask_any_and_distribute(const struct cpumask *src1p, const struct cpumask *src2p); -- 2.25.1