There is no need to write max_vruntime() and min_vruntime() functions,
we can use max_t() and min_t() instead.
Signed-off-by: Yajun Deng <[email protected]>
---
kernel/sched/fair.c | 24 +++---------------------
1 file changed, 3 insertions(+), 21 deletions(-)
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index e4a0b8bd941c..bba8e0c43d59 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -562,24 +562,6 @@ void account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec);
* Scheduling class tree data structure manipulation methods:
*/
-static inline u64 max_vruntime(u64 max_vruntime, u64 vruntime)
-{
- s64 delta = (s64)(vruntime - max_vruntime);
- if (delta > 0)
- max_vruntime = vruntime;
-
- return max_vruntime;
-}
-
-static inline u64 min_vruntime(u64 min_vruntime, u64 vruntime)
-{
- s64 delta = (s64)(vruntime - min_vruntime);
- if (delta < 0)
- min_vruntime = vruntime;
-
- return min_vruntime;
-}
-
static inline bool entity_before(struct sched_entity *a,
struct sched_entity *b)
{
@@ -609,12 +591,12 @@ static void update_min_vruntime(struct cfs_rq *cfs_rq)
if (!curr)
vruntime = se->vruntime;
else
- vruntime = min_vruntime(vruntime, se->vruntime);
+ vruntime = min_t(u64, vruntime, se->vruntime);
}
/* ensure we never gain time by being placed backwards. */
u64_u32_store(cfs_rq->min_vruntime,
- max_vruntime(cfs_rq->min_vruntime, vruntime));
+ max_t(u64, cfs_rq->min_vruntime, vruntime));
}
static inline bool __entity_less(struct rb_node *a, const struct rb_node *b)
@@ -4543,7 +4525,7 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial)
}
/* ensure we never gain time by being placed backwards. */
- se->vruntime = max_vruntime(se->vruntime, vruntime);
+ se->vruntime = max_t(u64, se->vruntime, vruntime);
}
static void check_enqueue_throttle(struct cfs_rq *cfs_rq);
--
2.25.1
On Thu, Oct 27, 2022 at 09:54:09AM +0200, Peter Zijlstra wrote:
> On Thu, Oct 27, 2022 at 09:53:51AM +0800, Yajun Deng wrote:
> > There is no need to write max_vruntime() and min_vruntime() functions,
> > we can use max_t() and min_t() instead.
>
> Here; I did your homework for you:
>
> /* max.c */
> #include <stdio.h>
> #include <stdint.h>
> #include <stdlib.h>
>
> typedef unsigned long long u64;
> typedef unsigned long long s64;
This should obviously be just 'long long', but the result doesn't
change.
/me goes goes get more wake-up juice.
>
> static u64 max_vruntime(u64 max_vruntime, u64 vruntime)
> {
> s64 delta = (s64)(vruntime - max_vruntime);
> if (delta > 0)
> max_vruntime = vruntime;
> return max_vruntime;
> }
>
> static u64 max(u64 a, u64 b)
> {
> return a > b ? a : b;
> }
>
> int main(int argc, char **argv)
> {
> u64 a, b;
>
> if (argc < 3)
> return 0;
>
> a = strtoll(argv[1], NULL, 10);
> b = strtoll(argv[2], NULL, 10);
> printf(" max(%lu, %lu) = %lu\n", a, b, max(a,b));
> printf("max_vruntime(%lu, %lu) = %lu\n", a, b, max_vruntime(a,b));
>
> return 0;
> }
>
> $ ./max -1 0
> max(18446744073709551615, 0) = 18446744073709551615
> max_vruntime(18446744073709551615, 0) = 0
October 27, 2022 3:55 PM, "Peter Zijlstra" <[email protected]> wrote:
> On Thu, Oct 27, 2022 at 09:54:09AM +0200, Peter Zijlstra wrote:
>
>> On Thu, Oct 27, 2022 at 09:53:51AM +0800, Yajun Deng wrote:
>> There is no need to write max_vruntime() and min_vruntime() functions,
>> we can use max_t() and min_t() instead.
>>
>> Here; I did your homework for you:
>>
Thanks for your guidance.
>> /* max.c */
>> #include <stdio.h>
>> #include <stdint.h>
>> #include <stdlib.h>
>>
>> typedef unsigned long long u64;
>> typedef unsigned long long s64;
>
> This should obviously be just 'long long', but the result doesn't
> change.
>
> /me goes goes get more wake-up juice.
>
>> static u64 max_vruntime(u64 max_vruntime, u64 vruntime)
>> {
>> s64 delta = (s64)(vruntime - max_vruntime);
>> if (delta > 0)
>> max_vruntime = vruntime;
>> return max_vruntime;
>> }
>>
>> static u64 max(u64 a, u64 b)
>> {
>> return a > b ? a : b;
>> }
>>
>> int main(int argc, char **argv)
>> {
>> u64 a, b;
>>
>> if (argc < 3)
>> return 0;
>>
>> a = strtoll(argv[1], NULL, 10);
>> b = strtoll(argv[2], NULL, 10);
>> printf(" max(%lu, %lu) = %lu\n", a, b, max(a,b));
>> printf("max_vruntime(%lu, %lu) = %lu\n", a, b, max_vruntime(a,b));
>>
>> return 0;
>> }
>>
>> $ ./max -1 0
>> max(18446744073709551615, 0) = 18446744073709551615
>> max_vruntime(18446744073709551615, 0) = 0
On Thu, Oct 27, 2022 at 09:53:51AM +0800, Yajun Deng wrote:
> There is no need to write max_vruntime() and min_vruntime() functions,
> we can use max_t() and min_t() instead.
Here; I did your homework for you:
/* max.c */
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
typedef unsigned long long u64;
typedef unsigned long long s64;
static u64 max_vruntime(u64 max_vruntime, u64 vruntime)
{
s64 delta = (s64)(vruntime - max_vruntime);
if (delta > 0)
max_vruntime = vruntime;
return max_vruntime;
}
static u64 max(u64 a, u64 b)
{
return a > b ? a : b;
}
int main(int argc, char **argv)
{
u64 a, b;
if (argc < 3)
return 0;
a = strtoll(argv[1], NULL, 10);
b = strtoll(argv[2], NULL, 10);
printf(" max(%lu, %lu) = %lu\n", a, b, max(a,b));
printf("max_vruntime(%lu, %lu) = %lu\n", a, b, max_vruntime(a,b));
return 0;
}
$ ./max -1 0
max(18446744073709551615, 0) = 18446744073709551615
max_vruntime(18446744073709551615, 0) = 0