mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-27 19:53:15 -04:00
The current handling of invalid command line option arguments is
inconsistent:
- opt_llong_callback() treats non-numerical input the same as "-1",
which might or might not be rejected later.
- opt_int_callback() returns -1 on non-numerical input without an error
message, which makes parsing fail silently (libsubcmd will
automatically print the usage of the option only, no error message).
- custom callbacks abort command line parsing using fatal(), which
displays an error message and exits, without libsubcmd printing the
usage.
Unify this such that all invalid options, regardless of the format,
print an error message similar to the out of range case:
Error: --opt: 'value' is not a valid XY
followed by the usage of the option, e.g.:
$ rtla timerlat hist --period=1us
Error: --period: '1us' is not a valid number
Usage: rtla timerlat hist [<options>] [-h|--help]
-p, --period <us> timerlat period in us
As this is a libsubcmd help path, all option parsing failures now return
the exit code of 129 (help).
The unified handling is implemented using a new error message helper,
opt_err(), which is called from two new CLI-specific parsing functions,
strtoll_safe() and strtoi_safe(), as well as from custom helpers.
Option callback tests are updated to cover the new behavior.
Assisted-by: Claude:claude-opus-4-6
Reviewed-by: Wander Lairson Costa <wander@redhat.com>
Link: https://lore.kernel.org/r/20260716144901.1187474-1-tglozar@redhat.com
Signed-off-by: Tomas Glozar <tglozar@redhat.com>
RTLA: Real-Time Linux Analysis tools The rtla meta-tool includes a set of commands that aims to analyze the real-time properties of Linux. Instead of testing Linux as a black box, rtla leverages kernel tracing capabilities to provide precise information about the properties and root causes of unexpected results. Installing RTLA RTLA depends on the following libraries and tools: - libtracefs - libtraceevent - libcpupower (optional, for --deepest-idle-state) - libcheck (optional, for unit tests) For BPF sample collection support, the following extra dependencies are required: - libbpf 1.0.0 or later - bpftool with skeleton support - clang with BPF CO-RE support It also depends on python3-docutils to compile man pages. For development, we suggest the following steps for compiling rtla: $ git clone git://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git $ cd libtraceevent/ $ make $ sudo make install $ cd .. $ git clone git://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git $ cd libtracefs/ $ make $ sudo make install $ cd .. $ cd $libcpupower_src $ make $ sudo make install $ cd $rtla_src $ make $ sudo make install Running tests RTLA has two test suites: a runtime test suite and a unit test suite. The runtime test suite is available as "make check" (root required) and has the following dependencies, in addition to RTLA build dependencies: - Perl - Test::Harness (libtest-harness-perl on Debian/Ubuntu, perl-Test-Harness on Fedora/RHEL) - bash - coreutils - ldd - util-linux - procps(-ng) - bpftool (if rtla is built against libbpf) as well as the following required system configuration: - CONFIG_OSNOISE_TRACER=y - CONFIG_TIMERLAT_TRACER=y - tracefs mounted and readable at /sys/kernel/tracing The unit test suite is available as "make unit-tests" and has the following dependencies: - libcheck Unlike the runtime test suite, root is not required to run unit tests, nor is a tracefs/osnoise/timerlat-capable kernel required. For further information, please refer to the rtla man page.