s390/processor: add test_and_set_cpu_flag() and test_and_clear_cpu_flag()
authorHeiko Carstens <hca@linux.ibm.com>
Mon, 13 Feb 2023 11:35:18 +0000 (12:35 +0100)
committerHeiko Carstens <hca@linux.ibm.com>
Wed, 15 Feb 2023 10:07:01 +0000 (11:07 +0100)
Add test_and_set_cpu_flag() and test_and_clear_cpu_flag() helper functions.

Reviewed-by: Sven Schnelle <svens@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
arch/s390/include/asm/processor.h

index 9f89d38..e98d965 100644 (file)
@@ -59,6 +59,22 @@ static __always_inline bool test_cpu_flag(int flag)
        return S390_lowcore.cpu_flags & (1UL << flag);
 }
 
+static __always_inline bool test_and_set_cpu_flag(int flag)
+{
+       if (test_cpu_flag(flag))
+               return true;
+       set_cpu_flag(flag);
+       return false;
+}
+
+static __always_inline bool test_and_clear_cpu_flag(int flag)
+{
+       if (!test_cpu_flag(flag))
+               return false;
+       clear_cpu_flag(flag);
+       return true;
+}
+
 /*
  * Test CIF flag of another CPU. The caller needs to ensure that
  * CPU hotplug can not happen, e.g. by disabling preemption.