lkml.org 
[lkml]   [2021]   [Aug]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 06/17] cpumask: use find_first_and_bit()
    Date
    Now we have an efficient implementation for find_first_and_bit(),
    so switch cpumask to use it where appropriate.

    Signed-off-by: Yury Norov <yury.norov@gmail.com>
    Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    ---
    include/linux/cpumask.h | 30 ++++++++++++++++++++----------
    1 file changed, 20 insertions(+), 10 deletions(-)

    diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
    index f3689a52bfd0..4a03f6636e6c 100644
    --- a/include/linux/cpumask.h
    +++ b/include/linux/cpumask.h
    @@ -123,6 +123,12 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp)
    return 0;
    }

    +static inline unsigned int cpumask_first_and(const struct cpumask *srcp1,
    + const struct cpumask *srcp2)
    +{
    + return 0;
    +}
    +
    static inline unsigned int cpumask_last(const struct cpumask *srcp)
    {
    return 0;
    @@ -167,7 +173,7 @@ static inline unsigned int cpumask_local_spread(unsigned int i, int node)

    static inline int cpumask_any_and_distribute(const struct cpumask *src1p,
    const struct cpumask *src2p) {
    - return cpumask_next_and(-1, src1p, src2p);
    + return cpumask_first_and(src1p, src2p);
    }

    static inline int cpumask_any_distribute(const struct cpumask *srcp)
    @@ -195,6 +201,19 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp)
    return find_first_bit(cpumask_bits(srcp), nr_cpumask_bits);
    }

    +/**
    + * cpumask_first_and - return the first cpu from *srcp1 & *srcp2
    + * @src1p: the first input
    + * @src2p: the second input
    + *
    + * Returns >= nr_cpu_ids if no cpus set in both. See also cpumask_next_and().
    + */
    +static inline
    +unsigned int cpumask_first_and(const struct cpumask *srcp1, const struct cpumask *srcp2)
    +{
    + return find_first_and_bit(cpumask_bits(srcp1), cpumask_bits(srcp2), nr_cpumask_bits);
    +}
    +
    /**
    * cpumask_last - get the last CPU in a cpumask
    * @srcp: - the cpumask pointer
    @@ -585,15 +604,6 @@ static inline void cpumask_copy(struct cpumask *dstp,
    */
    #define cpumask_any(srcp) cpumask_first(srcp)

    -/**
    - * cpumask_first_and - return the first cpu from *srcp1 & *srcp2
    - * @src1p: the first input
    - * @src2p: the second input
    - *
    - * Returns >= nr_cpu_ids if no cpus set in both. See also cpumask_next_and().
    - */
    -#define cpumask_first_and(src1p, src2p) cpumask_next_and(-1, (src1p), (src2p))
    -
    /**
    * cpumask_any_and - pick a "random" cpu from *mask1 & *mask2
    * @mask1: the first input cpumask
    --
    2.30.2
    \
     
     \ /
      Last update: 2021-08-14 23:19    [W:4.811 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site