lkml.org 
[lkml]   [2020]   [Mar]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[RESEND][PATCH v3 11/17] static_call: Simple self-test

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
---
arch/Kconfig | 6 ++++++
kernel/static_call.c | 28 ++++++++++++++++++++++++++++
2 files changed, 34 insertions(+)

--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -103,6 +103,12 @@ config STATIC_KEYS_SELFTEST
help
Boot time self-test of the branch patching code.

+config STATIC_CALL_SELFTEST
+ bool "Static call selftest"
+ depends on HAVE_STATIC_CALL
+ help
+ Boot time self-test of the call patching code.
+
config OPTPROBES
def_bool y
depends on KPROBES && HAVE_OPTPROBES
--- a/kernel/static_call.c
+++ b/kernel/static_call.c
@@ -364,3 +364,31 @@ static void __init static_call_init(void
#endif
}
early_initcall(static_call_init);
+
+#ifdef CONFIG_STATIC_CALL_SELFTEST
+
+static int func_a(int x)
+{
+ return x+1;
+}
+
+static int func_b(int x)
+{
+ return x+2;
+}
+
+DEFINE_STATIC_CALL(sc_selftest, func_a);
+
+static int __init test_static_call_init(void)
+{
+ WARN_ON(static_call(sc_selftest)(2) != 3);
+ static_call_update(sc_selftest, &func_b);
+ WARN_ON(static_call(sc_selftest)(2) != 4);
+ static_call_update(sc_selftest, &func_a);
+ WARN_ON(static_call(sc_selftest)(2) != 3);
+
+ return 0;
+}
+early_initcall(test_static_call_init);
+
+#endif /* CONFIG_STATIC_CALL_SELFTEST */

\
 
 \ /
  Last update: 2020-03-24 15:41    [W:0.406 / U:0.740 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site