This page describes how to build and run LTTng(with limited functionality) on Xilnx Zynq Linux.
Table of Contents
Note:
|
build > git clone git://github.com/Xilinx/linux-xlnx.git linux-xlnx build > cd linux-xlnx |
diff --git a/arch/arm/configs/xilinx_zynq_defconfig b/arch/arm/configs/xilinx_zynq_defconfig index 58c226e..e9c069c 100644 --- a/arch/arm/configs/xilinx_zynq_defconfig +++ b/arch/arm/configs/xilinx_zynq_defconfig @@ -30,7 +30,8 @@ CONFIG_BUILDTIME_EXTABLE_SORT=y CONFIG_EXPERIMENTAL=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_CROSS_COMPILE="" -CONFIG_LOCALVERSION="-xilinx" +CONFIG_LOCALVERSION="-xilinx-lttng" +CONFIG_TRACEPOINTS=y CONFIG_LOCALVERSION_AUTO=y CONFIG_HAVE_KERNEL_GZIP=y CONFIG_HAVE_KERNEL_LZMA=y diff --git a/arch/arm/mach-zynq/Kconfig b/arch/arm/mach-zynq/Kconfig index 96e1668..7a557c3 100644 --- a/arch/arm/mach-zynq/Kconfig +++ b/arch/arm/mach-zynq/Kconfig @@ -54,3 +54,10 @@ config XILINX_AXIPCIE endmenu endif + +config TRACEPOINTS + bool "Tracepoints for lttng modules" + default y + help + Enable tracepoints for lttng modules + |
build > make ARCH=arm xilinx_zynq_defconfig |
build > make ARCH=arm uImage UIMAGE_LOADADDR=0x8000 |
build > cd .. |
build > wget https://lttng.org/files/lttng-modules/lttng-modules-2.1.1.tar.bz2 build > tar -xf lttng-modules-2.1.1.tar.bz2 build > cd lttng-modules-2.1.1 |
--- /instrumentation/events/lttng-module/sched.h <span style="font-family: arial,helvetica,sans-serif; line-height: 1.5;">@@ -5,6 +5,7 @@ #define _TRACE_SCHED_H #include <linux/sched.h> +#include <linux/sched/rt.h> #include <linux/tracepoint.h> #ifndef _TRACE_SCHED_DEF_ |
--- /instrumentation/syscalls/headers/arm-32-syscalls-2.6.38_integers_override.h @@ -2,7 +2,6 @@ #define OVERRIDE_TABLE_32_sys_arm_fadvise64_64 #define OVERRIDE_TABLE_32_sys_sync_file_range2 -#define OVERRIDE_TABLE_32_sys_set_tls #ifndef CREATE_SYSCALL_TABLE @@ -38,18 +37,6 @@ SC_TRACE_EVENT(sys_sync_file_range2, TP_printk() ) -SC_TRACE_EVENT(sys_set_tls, - TP_PROTO(unsigned int tid, unsigned long tls), - TP_ARGS(tid, tls), - TP_STRUCT__entry( - __field(unsigned int, tid) - __field_hex(unsigned int, tls)), - TP_fast_assign( - tp_assign(tid, tid) - tp_assign(tls, tls)), - TP_printk() -) - #else /* CREATE_SYSCALL_TABLE */ #define OVVERRIDE_TABLE_32_sys_mmap @@ -59,9 +46,6 @@ TRACE_SYSCALL_TABLE(sys_mmap, sys_mmap, 90, 6) TRACE_SYSCALL_TABLE(sys_arm_fadvise64_64, sys_arm_fadvise64_64, 270, 4) #define OVERRIDE_TABLE_32_sys_sync_file_range2 TRACE_SYSCALL_TABLE(sys_sync_file_range2, sys_sync_file_range2, 341, 4) -#define OVERRIDE_TABLE_32_sys_set_tls -TRACE_SYSCALL_TABLE(sys_set_tls, sys_set_tls, 0xf0005, 2) - #endif /* CREATE_SYSCALL_TABLE */ |
build > make KERNELDIR=lttng-build-root/linux-xlnx ARCH=arm |
build > mkdir lttng-build-root/kos build > find . -name "*.ko" -exec cp -i {} lttng-build-root/kos/. \; |
build > cd .. |
build > wget http://rpm5.org/files/popt/popt-1.16.tar.gz build > tar -xf popt-1.16.tar.gz build > cd popt-1.16 |
build > ./configure --prefix=/tmp/username-lttng-root/ --host=arm-xilinx-linux-gnueabi build > make install |
build > cd .. |
build > wget https://lttng.org/files/urcu/userspace-rcu-0.7.6.tar.bz2 build > tar -xf userspace-rcu-0.7.6.tar.bz2 build > cd userspace-rcu-0.7.6 |
build > ./configure --prefix=/tmp/username-lttng-root/ --host=arm-xilinx-linux-gnueabi |
+++ config.h @@ -45,7 +45,7 @@ /* Define to 1 if your system has a GNU libc compatible `malloc' function, and to 0 otherwise. */ -#define HAVE_MALLOC 0 +#define HAVE_MALLOC 1 /* Define to 1 if you have the <memory.h> header file. */ #define HAVE_MEMORY_H 1 @@ -136,7 +136,7 @@ #endif /* Define to rpl_malloc if the replacement function should be used. */ -#define malloc rpl_malloc +/*#define malloc rpl_malloc*/ /* Define to `int' if <sys/types.h> does not define. */ /* #undef pid_t */ |
build > make install |
build > cd .. |
build > wget https://lttng.org/files/lttng-tools/lttng-tools-2.1.1.tar.bz2 build > tar -xf lttng-tools-2.1.1.tar.bz2 build > cd lttng-tools-2.1.1 |
build > ./configure --prefix=/tmp/username-lttng-root/ --host=arm-xilinx-linux-gnueabi LDFLAGS=-L/tmp/username-lttng-root/lib CPPFLAGS="-I/tmp/username-lttng-root/include -DXILINX_MOD" --disable-lttng-ust |
+++ src/common/defaults.h @@ -32,8 +32,13 @@ /* Environment variable to set session daemon binary path. */ #define DEFAULT_SESSIOND_PATH_ENV "LTTNG_SESSIOND_PATH" +#ifdef XILINX_MOD +/* Default trace output directory name */ +#define DEFAULT_TRACE_DIR_NAME "/tmp/lttng-traces" +#else /* Default trace output directory name */ #define DEFAULT_TRACE_DIR_NAME "lttng-traces" +#endif /* Default size of a hash table */ #define DEFAULT_HT_SIZE 4 @@ -77,7 +82,11 @@ /* Default lttng run directory */ +#ifdef XILINX_MOD +#define DEFAULT_LTTNG_RUNDIR "/tmp/lttng" +#else #define DEFAULT_LTTNG_RUNDIR "/var/run/lttng" +#endif #define DEFAULT_LTTNG_HOME_RUNDIR "%s/.lttng" #define DEFAULT_LTTNG_SESSIOND_PIDFILE "lttng-sessiond.pid" |
build > make install |
build > cd .. |
zynq > uname -r 3.6.0-linux-xilinx-lttng-dirty |
zynq > mkdir -p /lib/modules/$(uname -r) |
zynq > /tmp/username-lttng-root/bin/lttng create <YOUR_SESSION> |
zynq > /tmp/username-lttng-root/bin/lttng list -k |
zynq > /tmp/username-lttng-root/bin/lttng enable-event -k -a |
zynq > /tmp/username-lttng-root/bin/lttng start zynq > /tmp/username-lttng-root/bin/lttng stop |
zynq > /tmp/username-lttng-root/bin/lttng destroy |