[LTP] [LTP PATCH 0/5] ftrace: Convert shell tests to C

Praveen K Pandey praveen@linux.ibm.com
Sat Jun 6 16:31:28 CEST 2026


This patch series converts the ftrace test suite from shell scripts to C
using the LTP new API. The conversion addresses several issues found in
the shell version on newer kernels (6.12+, 6.18.1+).

Key improvements in the C implementation:

1. Proper file existence checking before access
   - Fixes "No such file or directory" errors
   
2. Better error handling with TCONF reporting
   - Reports TCONF when features are unavailable instead of failing
   
3. Graceful handling of write errors
   - Fixes "Invalid argument" errors during cleanup on newer kernels
   
4. Multi-threaded stress testing
   - Uses pthread for concurrent testing of multiple ftrace features
   - Replaces 18 separate shell scripts with integrated C functions
   
5. Better performance and lower memory usage
   - No shell interpreter overhead
   - Single process instead of multiple shell processes

6. Removal of obsolete shell scripts
   - The ftrace_stress/ folder is removed as its functionality is now
     provided by ftrace_stress_test.c

The shell scripts in the main directory are retained for backward
compatibility during the transition period.

Testing:
- Built successfully on x86_64 and ppc64le
- All tests pass on kernel 6.12 and 6.18.1
- No regressions on older kernels (tested on 5.15, 6.1)
- Verified proper TCONF reporting when features are unavailable
- Stress test runs stably with all concurrent threads

Related GitHub issue: https://github.com/linux-test-project/ltp/issues/1282

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

 testcases/kernel/tracing/ftrace_test/Makefile  |  18 +-
 .../kernel/tracing/ftrace_test/ftrace_lib.c    | 348 ++++++++++++++++++
 .../kernel/tracing/ftrace_test/ftrace_lib.h    | 142 +++++++
 .../ftrace_test/ftrace_regression01.c          | 131 +++++++
 .../ftrace_test/ftrace_regression02.c          | 103 ++++++
 .../ftrace_test/ftrace_stress_test.c           | 324 ++++++++++++++++
 .../ftrace_stress/ftrace_buffer_size_kb.sh     |  32 --
 .../ftrace_stress/ftrace_current_tracer.sh     |  32 --
 .../ftrace_stress/ftrace_ftrace_enabled.sh     |  26 --
 .../ftrace_function_profile_enabled.sh         |  26 --
 .../ftrace_stress/ftrace_set_event.sh          |  26 --
 .../ftrace_stress/ftrace_set_ftrace_filter.sh  |  26 --
 .../ftrace_stress/ftrace_set_ftrace_pid.sh     |  26 --
 .../ftrace_stress/ftrace_stack_max_size.sh     |  26 --
 .../ftrace_stress/ftrace_stack_trace.sh        |  26 --
 .../ftrace_stress/ftrace_trace.sh              |  26 --
 .../ftrace_stress/ftrace_trace_clock.sh        |  26 --
 .../ftrace_stress/ftrace_trace_options.sh      |  26 --
 .../ftrace_stress/ftrace_trace_pipe.sh         |  45 ---
 .../ftrace_stress/ftrace_trace_stat.sh         |  26 --
 .../ftrace_stress/ftrace_tracing_cpumask.sh    |  26 --
 .../ftrace_stress/ftrace_tracing_enabled.sh    |  26 --
 .../ftrace_stress/ftrace_tracing_max_latency.sh|  26 --
 .../ftrace_stress/ftrace_tracing_on.sh         |  26 --
 24 files changed, 1064 insertions(+), 538 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.50.1


More information about the ltp mailing list