On Fri, 29 Oct 2021 21:26:04 +0200 Daniel Bristot de Oliveira <bristot@xxxxxxxxxx> wrote: > The rtla is a meta-tool that includes a set of commands that aims > to analyze the real-time properties of Linux. But 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. > > rtla --help works and provide information about the available options. > > This is just the "main" and the Makefile, no function yet. > > Cc: Steven Rostedt <rostedt@xxxxxxxxxxx> > Cc: Ingo Molnar <mingo@xxxxxxxxxx> > Cc: Tom Zanussi <zanussi@xxxxxxxxxx> > Cc: Masami Hiramatsu <mhiramat@xxxxxxxxxx> > Cc: Juri Lelli <juri.lelli@xxxxxxxxxx> > Cc: Clark Williams <williams@xxxxxxxxxx> > Cc: John Kacur <jkacur@xxxxxxxxxx> > Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Cc: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> > Cc: Daniel Bristot de Oliveira <bristot@xxxxxxxxxx> > Cc: linux-rt-users@xxxxxxxxxxxxxxx > Cc: linux-trace-devel@xxxxxxxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx > Signed-off-by: Daniel Bristot de Oliveira <bristot@xxxxxxxxxx> > --- > tools/tracing/rtla/Makefile | 76 +++++++++++++++++++++++++++++++++++ > tools/tracing/rtla/src/rtla.c | 72 +++++++++++++++++++++++++++++++++ > 2 files changed, 148 insertions(+) > create mode 100644 tools/tracing/rtla/Makefile > create mode 100644 tools/tracing/rtla/src/rtla.c > > diff --git a/tools/tracing/rtla/Makefile b/tools/tracing/rtla/Makefile > new file mode 100644 > index 000000000000..33f154f86519 > --- /dev/null > +++ b/tools/tracing/rtla/Makefile > @@ -0,0 +1,76 @@ > +NAME := rtla > +VERSION := 0.3 > + > +# From libtracefs: > +# Makefiles suck: This macro sets a default value of $(2) for the > +# variable named by $(1), unless the variable has been set by > +# environment or command line. This is necessary for CC and AR > +# because make sets default values, so the simpler ?= approach > +# won't work as expected. > +define allow-override > + $(if $(or $(findstring environment,$(origin $(1))),\ > + $(findstring command line,$(origin $(1)))),,\ > + $(eval $(1) = $(2))) > +endef > + > +# Allow setting CC and AR, or setting CROSS_COMPILE as a prefix. > +$(call allow-override,CC,$(CROSS_COMPILE)gcc) > +$(call allow-override,AR,$(CROSS_COMPILE)ar) > +$(call allow-override,STRIP,$(CROSS_COMPILE)strip) > +$(call allow-override,PKG_CONFIG,pkg-config) > +$(call allow-override,LD_SO_CONF_PATH,/etc/ld.so.conf.d/) > +$(call allow-override,LDCONFIG,ldconfig) > + > +INSTALL = install > +FOPTS := -flto=auto -ffat-lto-objects -fexceptions -fstack-protector-strong \ > + -fasynchronous-unwind-tables -fstack-clash-protection > +WOPTS := -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -Wno-maybe-uninitialized > + > +TRACEFS_HEADERS := $$($(PKG_CONFIG) --cflags libtracefs) > + > +CFLAGS := -O -g -DVERSION=\"$(VERSION)\" $(FOPTS) $(MOPTS) $(WOPTS) $(TRACEFS_HEADERS) > +LDFLAGS := -ggdb > +LIBS := -ltracefs -ltraceevent -lprocps For the -ltracefs and -ltracevent, you could use: $$($PKG_CONFIG) --libs libtracefs) which would be more robust. -- Steve > + > +SRC := $(wildcard src/*.c) > +HDR := $(wildcard src/*.h) > +OBJ := $(SRC:.c=.o) > +DIRS := src > +FILES := Makefile > +CEXT := bz2 > +TARBALL := $(NAME)-$(VERSION).tar.$(CEXT) > +TAROPTS := -cvjf $(TARBALL) > +BINDIR := /usr/bin > +DATADIR := /usr/share > +DOCDIR := $(DATADIR)/doc > +MANDIR := $(DATADIR)/man > +LICDIR := $(DATADIR)/licenses > +