sched: Add WF_TTWU, WF_EXEC wakeup flags
authorValentin Schneider <valentin.schneider@arm.com>
Mon, 2 Nov 2020 18:45:12 +0000 (18:45 +0000)
committerPeter Zijlstra <peterz@infradead.org>
Tue, 10 Nov 2020 17:39:06 +0000 (18:39 +0100)
To remove the sd_flag parameter of select_task_rq(), we need another way of
encoding wakeup types. There already is a WF_FORK flag, add the missing two.

With that said, we still need an easy way to turn WF_foo into
SD_bar (e.g. WF_TTWU into SD_BALANCE_WAKE). As suggested by Peter, let's
make our lives easier and make them match exactly, and throw in some
compile-time checks for good measure.

Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20201102184514.2733-2-valentin.schneider@arm.com
kernel/sched/sched.h

index e897d77..4725873 100644 (file)
@@ -1744,13 +1744,20 @@ static inline int task_on_rq_migrating(struct task_struct *p)
        return READ_ONCE(p->on_rq) == TASK_ON_RQ_MIGRATING;
 }
 
-/*
- * wake flags
- */
-#define WF_SYNC                        0x01            /* Waker goes to sleep after wakeup */
-#define WF_FORK                        0x02            /* Child wakeup after fork */
-#define WF_MIGRATED            0x04            /* Internal use, task got migrated */
-#define WF_ON_CPU              0x08            /* Wakee is on_cpu */
+/* Wake flags. The first three directly map to some SD flag value */
+#define WF_EXEC     0x02 /* Wakeup after exec; maps to SD_BALANCE_EXEC */
+#define WF_FORK     0x04 /* Wakeup after fork; maps to SD_BALANCE_FORK */
+#define WF_TTWU     0x08 /* Wakeup;            maps to SD_BALANCE_WAKE */
+
+#define WF_SYNC     0x10 /* Waker goes to sleep after wakeup */
+#define WF_MIGRATED 0x20 /* Internal use, task got migrated */
+#define WF_ON_CPU   0x40 /* Wakee is on_cpu */
+
+#ifdef CONFIG_SMP
+static_assert(WF_EXEC == SD_BALANCE_EXEC);
+static_assert(WF_FORK == SD_BALANCE_FORK);
+static_assert(WF_TTWU == SD_BALANCE_WAKE);
+#endif
 
 /*
  * To aid in avoiding the subversion of "niceness" due to uneven distribution