[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