[LTP] [PATCH v5 3/5] ftrace: Convert ftrace_regression02.sh to C
Praveen K Pandey
praveen@linux.ibm.com
Mon Jun 8 15:25:24 CEST 2026
Convert ftrace_regression02.sh to C using the new LTP test API.
This test validates ftrace event tracing functionality.
Key changes:
- Uses new LTP C API (tst_test.h)
- Leverages ftrace_lib for common operations
- Proper error handling with LTP macros
- Sets .min_kver = "2.6.29" for kernel version requirement
- Requires root privileges (.needs_root = 1)
The test enables event tracing, generates events, and verifies
they are captured in the trace buffer.
Signed-off-by: Praveen K Pandey <praveen@linux.ibm.com>
---
.../tracing/ftrace_test/ftrace_regression02.c | 101 ++++++++++++++++++
.../ftrace_test/ftrace_regression02.sh | 63 -----------
2 files changed, 101 insertions(+), 63 deletions(-)
create mode 100644 testcases/kernel/tracing/ftrace_test/ftrace_regression02.c
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_regression02.sh
diff --git a/testcases/kernel/tracing/ftrace_test/ftrace_regression02.c b/testcases/kernel/tracing/ftrace_test/ftrace_regression02.c
new file mode 100644
index 000000000..4484ba613
--- /dev/null
+++ b/testcases/kernel/tracing/ftrace_test/ftrace_regression02.c
@@ -0,0 +1,101 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2015 Red Hat Inc.
+ * Copyright (c) 2024 Linux Test Project
+ * Copyright (c) IBM, 2026
+ *
+ * Author: Li Wang <liwang@redhat.com>
+ * Converted to C by: Praveen K Pandey <praveen@linux.ibm.com>
+ */
+
+/*\
+ * Verify that signal:signal_generate tracepoint exposes 'grp=' and 'res=' fields.
+ *
+ * This test verifies kernel commits that added more information to the
+ * signal_generate tracepoint:
+ *
+ * - Commit 6c303d3 (tracing: let trace_signal_generate() report more info...)
+ * - Commit 163566f (tracing: send_sigqueue() needs trace_signal_generate())
+ *
+ * These fields were added in kernel 3.2.
+ *
+ * Requires root to access and configure the ftrace subsystem via debugfs.
+ *
+ * [Algorithm]
+ *
+ * - Enable signal:signal_generate event
+ * - Enable tracing
+ * - Generate signals by running commands
+ * - Read trace output and search for 'grp=' and 'res=' fields
+ * - Test passes if both fields are found in the trace
+ */
+
+#include "tst_test.h"
+#include "ftrace_lib.h"
+
+#define SIGNAL_LOOP 100
+
+static void run_test(void)
+{
+ int i;
+ char *trace_content;
+ int found = 0;
+
+ /* Set event */
+ if (ftrace_write_file("set_event", "signal:signal_generate\n") != 0)
+ tst_brk(TBROK, "Failed to set signal:signal_generate event");
+
+ /* Enable tracing */
+ ftrace_enable_tracing();
+
+ /* Clear trace buffer */
+ ftrace_clear_trace();
+
+ /* Generate some signals by running commands */
+ for (i = 0; i < SIGNAL_LOOP; i++) {
+ /* Run a simple command that will generate signals */
+ if (system("ls -l /proc > /dev/null 2>&1") == -1)
+ tst_res(TINFO, "Command execution failed, continuing...");
+ }
+
+ /* Wait for trace to be written and contain signal events */
+ trace_content = TST_RETRY_FUNC(ftrace_read_file("trace"), TST_RETVAL_NOTNULL);
+ if (!trace_content)
+ tst_brk(TBROK, "Failed to read trace file");
+
+ /* Check for 'grp=' and 'res=' fields in trace */
+ if (strstr(trace_content, "grp=") && strstr(trace_content, "res="))
+ found = 1;
+
+ free(trace_content);
+
+ if (found)
+ tst_res(TPASS, "signal_generate event contains grp and res fields");
+ else
+ tst_res(TFAIL, "signal_generate event missing grp or res fields");
+}
+
+static void setup(void)
+{
+ ftrace_initialize();
+}
+
+static void cleanup(void)
+{
+ ftrace_cleanup();
+}
+
+static struct tst_test test = {
+ .test_all = run_test,
+ .setup = setup,
+ .cleanup = cleanup,
+ .needs_root = 1,
+ .needs_tmpdir = 1,
+ .min_kver = "3.2",
+ .tags = (const struct tst_tag[]) {
+ {"linux-git", "6c303d3"},
+ {"linux-git", "163566f"},
+ {}
+ }
+};
+
diff --git a/testcases/kernel/tracing/ftrace_test/ftrace_regression02.sh b/testcases/kernel/tracing/ftrace_test/ftrace_regression02.sh
deleted file mode 100755
index 3c32f219e..000000000
--- a/testcases/kernel/tracing/ftrace_test/ftrace_regression02.sh
+++ /dev/null
@@ -1,63 +0,0 @@
-#! /bin/sh
-
-###########################################################################
-## ##
-## Copyright (c) 2015, Red Hat Inc. ##
-## ##
-## This program is free software: you can redistribute it and/or modify ##
-## it under the terms of the GNU General Public License as published by ##
-## the Free Software Foundation, either version 3 of the License, or ##
-## (at your option) any later version. ##
-## ##
-## This program is distributed in the hope that it will be useful, ##
-## but WITHOUT ANY WARRANTY; without even the implied warranty of ##
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ##
-## GNU General Public License for more details. ##
-## ##
-## You should have received a copy of the GNU General Public License ##
-## along with this program. If not, see <http://www.gnu.org/licenses/>. ##
-## ##
-## Author: Li Wang <liwang@redhat.com> ##
-## ##
-###########################################################################
-## ##
-## Summary: check signal:signal_generate gives 2 more fields: grp res ##
-## ##
-## This testcase is writing for signal events change: ##
-## 6c303d3 tracing: let trace_signal_generate() report more info...##
-## 163566f tracing: send_sigqueue() needs trace_signal_generate() ##
-## ##
-###########################################################################
-
-export TCID="ftrace_regression02"
-export TST_TOTAL=1
-
-. ftrace_lib.sh
-
-ftrace_signal_test()
-{
- # Set envent
- echo 'signal:signal_generate' > $TRACING_PATH/set_event
- echo 1 > $TRACING_PATH/tracing_on
- echo > $TRACING_PATH/trace
-
- # just to generate trace
- for i in $(seq 100); do
- ls -l /proc > /dev/null 2>&1
- done
-
- grep -q 'grp=[0-9] res=[0-9]' $TRACING_PATH/trace
- if [ $? -eq 0 ]; then
- tst_resm TPASS "finished running the test."
- else
- tst_resm TFAIL "running the test failed, please check log message."
- fi
-}
-
-if tst_kvcmp -lt "3.2"; then
- tst_brkm TCONF "The test should be run in kernels >= 3.2.0 Skip the test..."
-fi
-
-ftrace_signal_test
-
-tst_exit
--
2.50.1
More information about the ltp
mailing list