[LTP] [LTP PATCH v2 0/5] ftrace: Convert shell tests to C implementation
Praveen K Pandey
praveen@linux.ibm.com
Sat Jun 6 21:58:13 CEST 2026
This patch series converts ftrace shell-based tests to C implementation
to address GitHub issue #1282. The conversion provides better
maintainability, performance, and integration with LTP's C test
framework.
Changes in v2:
- Fixed compilation issues identified during testing
- Added TST_NO_DEFAULT_MAIN to ftrace_lib.c to prevent multiple main() definitions
- Changed tst_get_tmpdir() to tst_tmpdir_path() (correct LTP API)
- Removed tst_test.h from ftrace_lib.h (library headers shouldn't include it)
- Added tst_test.h includes to all test files
- Replaced SAFE_FPRINTF with SAFE_FILE_PRINTF in ftrace_regression01.c
- Removed unused variable in ftrace_stress_test.c
- Changed max_runtime to timeout in ftrace_stress_test.c
- Removed deprecated [Description] headers from test files
- Replaced usleep() with TST_RETRY_FUNC() to comply with LTP Ground Rule 2
- Fixed Makefile: moved dependency rules after generic_leaf_target.mk include
- Added FILTER_OUT_MAKE_TARGETS for library object
- Changed to per-target LDLIBS for pthread linking
- Removed unnecessary INSTALL_TARGETS
- Updated runtest/tracing to use C binaries
- Removed invalid "Fixes: #1282" tags from all commits
- All patches now have proper Signed-off-by tags
Summary of changes:
- Patch 1: Add common ftrace library (ftrace_lib.c/h)
- Patch 2: Convert ftrace_regression01.sh to C
- Patch 3: Convert ftrace_regression02.sh to C
- Patch 4: Convert 18 ftrace_stress/*.sh scripts to single C implementation
- Patch 5: Remove obsolete shell scripts
Key improvements:
- Multi-threaded stress testing using pthread
- Proper LTP API usage (TST_RETRY_FUNC, SAFE_* macros)
- Better error handling and resource management
- Reduced code duplication through shared library
- Compliance with LTP coding standards and ground rules
Testing:
- All tests compile successfully without warnings
- Tests run correctly and produce expected results (PASS/TCONF)
- Verified on Power architecture (ppc64le)
Praveen K Pandey (5):
ftrace: Add common library for C implementation
ftrace: Add C implementation of ftrace_regression01
ftrace: Add C implementation of ftrace_regression02
ftrace: Add C implementation of ftrace_stress_test and update build
ftrace: Remove obsolete shell scripts from ftrace_stress folder
runtest/tracing | 6 +-
testcases/kernel/tracing/ftrace_test/Makefile | 19 +-
.../kernel/tracing/ftrace_test/ftrace_lib.c | 352 +++++++++++++++++++++
.../kernel/tracing/ftrace_test/ftrace_lib.h | 140 ++++++++
.../tracing/ftrace_test/ftrace_regression01.c | 124 +++++++
.../tracing/ftrace_test/ftrace_regression02.c | 99 ++++++
.../tracing/ftrace_test/ftrace_stress_test.c | 320 ++++++++++++++++++
.../ftrace_stress/ftrace_buffer_size_kb.sh | 44 ---
.../ftrace_stress/ftrace_current_tracer.sh | 44 ---
.../ftrace_stress/ftrace_ftrace_enabled.sh | 44 ---
.../ftrace_function_profile_enabled.sh | 44 ---
.../ftrace_test/ftrace_stress/ftrace_set_event.sh | 44 ---
.../ftrace_stress/ftrace_set_ftrace_filter.sh | 44 ---
.../ftrace_stress/ftrace_set_ftrace_pid.sh | 44 ---
.../ftrace_stress/ftrace_stack_max_size.sh | 44 ---
.../ftrace_stress/ftrace_stack_trace.sh | 44 ---
.../ftrace_test/ftrace_stress/ftrace_trace.sh | 44 ---
.../ftrace_stress/ftrace_trace_clock.sh | 44 ---
.../ftrace_stress/ftrace_trace_options.sh | 44 ---
.../ftrace_stress/ftrace_trace_pipe.sh | 44 ---
.../ftrace_stress/ftrace_trace_stat.sh | 44 ---
.../ftrace_stress/ftrace_tracing_cpumask.sh | 44 ---
.../ftrace_stress/ftrace_tracing_enabled.sh | 44 ---
.../ftrace_stress/ftrace_tracing_max_latency.sh | 44 ---
.../ftrace_stress/ftrace_tracing_on.sh | 44 ---
25 files changed, 1053 insertions(+), 809 deletions(-)
create mode 100644 testcases/kernel/tracing/ftrace_test/ftrace_lib.c
create mode 100644 testcases/kernel/tracing/ftrace_test/ftrace_lib.h
create mode 100644 testcases/kernel/tracing/ftrace_test/ftrace_regression01.c
create mode 100644 testcases/kernel/tracing/ftrace_test/ftrace_regression02.c
create mode 100644 testcases/kernel/tracing/ftrace_test/ftrace_stress_test.c
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_buffer_size_kb.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_current_tracer.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_ftrace_enabled.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_function_profile_enabled.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_set_event.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_set_ftrace_filter.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_set_ftrace_pid.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_stack_max_size.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_stack_trace.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_trace.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_trace_clock.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_trace_options.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_trace_pipe.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_trace_stat.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_tracing_cpumask.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_tracing_enabled.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_tracing_max_latency.sh
delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_tracing_on.sh
--
2.43.0
More information about the ltp
mailing list