]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
perf test: Add timeout to datasym workload
authorNamhyung Kim <namhyung@kernel.org>
Tue, 4 Mar 2025 02:28:36 +0000 (18:28 -0800)
committerNamhyung Kim <namhyung@kernel.org>
Wed, 5 Mar 2025 17:17:01 +0000 (09:17 -0800)
Unlike others it has an infinite loop that make it annoying to call.
Make it finish after 1 second and handle command-line argument to change
the setting.

Reviewed-by: Leo Yan <leo.yan@arm.com>
Tested-by: Thomas Richter <tmricht@linux.ibm.com>
Tested-by: Thomas Falcon <thomas.falcon@intel.com>
Cc: Thomas Richter <tmricht@linux.ibm.com>
Cc: Leo Yan <leo.yan@arm.com>
Link: https://lore.kernel.org/r/20250304022837.1877845-6-namhyung@kernel.org
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/tests/workloads/datasym.c

index 8e08fc75a973e5f71ad7bf70cb0d04a8a88ff8d1..8ddb2aa6a049e343af9c09cd946008bbd74373d2 100644 (file)
@@ -1,3 +1,6 @@
+#include <stdlib.h>
+#include <signal.h>
+#include <unistd.h>
 #include <linux/compiler.h>
 #include "../tests.h"
 
@@ -12,9 +15,25 @@ static buf buf1 = {
        .reserved[0] = 1,
 };
 
-static int datasym(int argc __maybe_unused, const char **argv __maybe_unused)
+static volatile sig_atomic_t done;
+
+static void sighandler(int sig __maybe_unused)
+{
+       done = 1;
+}
+
+static int datasym(int argc, const char **argv)
 {
-       for (;;) {
+       int sec = 1;
+
+       if (argc > 0)
+               sec = atoi(argv[0]);
+
+       signal(SIGINT, sighandler);
+       signal(SIGALRM, sighandler);
+       alarm(sec);
+
+       while (!done) {
                buf1.data1++;
                if (buf1.data1 == 123) {
                        /*