24f73b85f8
The RealTime Linux Analysis tool includes a set of commands that relies on the osnoise and timerlat tracers from the ftrace kernel subsystem, allowing to analyze the lantency sources coming from the hardware and the kernel itself. This tool was introduced in v5.17 but until v5.19 it relied on libprocps that has been deprecated soon. So let's make it available for v5.19+. Rtla relies on libtracefs and libtraceevent, although libtraceevent itself is already a dependency for libtracefs. Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com> [Giulio: fix install on recent Linux versions] Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> [Andreas: deal with Linux Fixups, musl, SSP] Signed-off-by: Andreas Ziegler <br015@umbiko.net> [yann.morin.1998@free.fr: reword and extend help text] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
53 lines
1.7 KiB
Makefile
53 lines
1.7 KiB
Makefile
################################################################################
|
|
#
|
|
# rtla
|
|
#
|
|
################################################################################
|
|
|
|
LINUX_TOOLS += rtla
|
|
|
|
RTLA_DEPENDENCIES = host-pkgconf libtracefs
|
|
RTLA_MAKE_OPTS = $(LINUX_MAKE_FLAGS) \
|
|
CC=$(TARGET_CC) \
|
|
EXTRA_CFLAGS="-D_GNU_SOURCE" \
|
|
LDFLAGS="$(TARGET_LDFLAGS)" \
|
|
PKG_CONFIG_PATH=$(STAGING_DIR)/usr/lib/pkgconfig
|
|
|
|
ifeq ($(BR2_TOOLCHAIN_HAS_SSP),)
|
|
define RTLA_DISABLE_STACK_PROTECTOR
|
|
$(SED) 's/-fstack-protector.* //' $(LINUX_DIR)/tools/tracing/rtla/Makefile
|
|
endef
|
|
endif
|
|
|
|
define RTLA_LINUX_CONFIG_FIXUPS
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_FTRACE)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_TIMERLAT_TRACER)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_HIST_TRIGGERS)
|
|
endef
|
|
|
|
define RTLA_BUILD_CMDS
|
|
$(Q)if ! grep install $(LINUX_DIR)/tools/tracing/rtla/Makefile >/dev/null 2>&1 ; then \
|
|
echo "Your kernel version is too old and does not implement the rtla tool." ; \
|
|
echo "At least kernel 5.19 must be used." ; \
|
|
exit 1 ; \
|
|
fi
|
|
$(RTLA_DISABLE_STACK_PROTECTOR)
|
|
$(TARGET_MAKE_ENV) $(MAKE) $(RTLA_MAKE_OPTS) \
|
|
-C $(LINUX_DIR)/tools/tracing rtla
|
|
endef
|
|
|
|
# make rtla_install build and install by default documentation using rst2man
|
|
# but it's not available in Buildroot and we don't want manual files in target
|
|
# folder so let's simply install the resulting rtla binary and create symlinks
|
|
# like Linux does in its tools/tracing/rtla/Makefile
|
|
define RTLA_INSTALL_TARGET_CMDS
|
|
$(INSTALL) -m 0755 -D $(LINUX_DIR)/tools/tracing/rtla/rtla $(TARGET_DIR)/usr/bin
|
|
ln -sf rtla $(TARGET_DIR)/usr/bin/osnoise
|
|
ln -sf rtla $(TARGET_DIR)/usr/bin/timerlat
|
|
|
|
# Check if hwnoise is provided or not
|
|
if grep -q hwnoise $(LINUX_DIR)/tools/tracing/rtla/Makefile; then \
|
|
ln -sf rtla $(TARGET_DIR)/usr/bin/hwnoise ; \
|
|
fi
|
|
endef
|