Merge branch 'sched/rt' into sched/core, to pick up completed topic tree
authorIngo Molnar <mingo@kernel.org>
Mon, 30 Mar 2020 11:08:41 +0000 (13:08 +0200)
committerIngo Molnar <mingo@kernel.org>
Mon, 30 Mar 2020 11:08:41 +0000 (13:08 +0200)
Signed-off-by: Ingo Molnar <mingo@kernel.org>
include/linux/kernel.h
include/linux/preempt.h

index 0d9db2a..9b7a8d7 100644 (file)
@@ -257,6 +257,13 @@ extern void __cant_sleep(const char *file, int line, int preempt_offset);
 
 #define might_sleep_if(cond) do { if (cond) might_sleep(); } while (0)
 
+#ifndef CONFIG_PREEMPT_RT
+# define cant_migrate()                cant_sleep()
+#else
+  /* Placeholder for now */
+# define cant_migrate()                do { } while (0)
+#endif
+
 /**
  * abs - return absolute value of an argument
  * @x: the value.  If it is unsigned type, it is converted to signed type first.
index bbb68db..bc3f1ae 100644 (file)
@@ -322,4 +322,34 @@ static inline void preempt_notifier_init(struct preempt_notifier *notifier,
 
 #endif
 
+/**
+ * migrate_disable - Prevent migration of the current task
+ *
+ * Maps to preempt_disable() which also disables preemption. Use
+ * migrate_disable() to annotate that the intent is to prevent migration,
+ * but not necessarily preemption.
+ *
+ * Can be invoked nested like preempt_disable() and needs the corresponding
+ * number of migrate_enable() invocations.
+ */
+static __always_inline void migrate_disable(void)
+{
+       preempt_disable();
+}
+
+/**
+ * migrate_enable - Allow migration of the current task
+ *
+ * Counterpart to migrate_disable().
+ *
+ * As migrate_disable() can be invoked nested, only the outermost invocation
+ * reenables migration.
+ *
+ * Currently mapped to preempt_enable().
+ */
+static __always_inline void migrate_enable(void)
+{
+       preempt_enable();
+}
+
 #endif /* __LINUX_PREEMPT_H */