summaryrefslogtreecommitdiff
path: root/package/ltt
diff options
context:
space:
mode:
Diffstat (limited to 'package/ltt')
-rw-r--r--package/ltt/Config.in8
-rwxr-xr-xpackage/ltt/init-tracer93
-rw-r--r--package/ltt/ltt.mk116
-rw-r--r--package/ltt/ltt.patch42
4 files changed, 259 insertions, 0 deletions
diff --git a/package/ltt/Config.in b/package/ltt/Config.in
new file mode 100644
index 000000000..67da6603f
--- /dev/null
+++ b/package/ltt/Config.in
@@ -0,0 +1,8 @@
+config BR2_PACKAGE_LTT
+ bool "LTT (Linux Trace Toolkit)"
+ default n
+ help
+ A suite of tools designed to extract program execution
+ details from the Linux operating system and interpret them.
+
+ http://www.opersys.com/LTT/
diff --git a/package/ltt/init-tracer b/package/ltt/init-tracer
new file mode 100755
index 000000000..3dee49211
--- /dev/null
+++ b/package/ltt/init-tracer
@@ -0,0 +1,93 @@
+#!/bin/sh
+#
+# Load tracer module and create tracer device node.
+#
+
+MODULE="tracer"
+MAIN_DEVICE="tracer"
+USER_DEVICE="tracerU"
+GROUP="root"
+MODE="664"
+
+start() {
+ if [ -e /dev/${MAIN_DEVICE} -o -e /dev/${USER_DEVICE} ]
+ then
+ # tell the user about what we are doing
+ echo "Deleting old tracer nodes: /dev/tracer and /dev/tracerU"
+
+ # remove stale nodes
+ rm -f /dev/${MAIN_DEVICE}
+ rm -f /dev/${USER_DEVICE}
+ fi
+
+ # look for the major number
+ MAJOR=`/bin/grep " ${MODULE}$" /proc/devices | cut -d" " -f1`
+
+ # does the device exist?
+ if [ ${MAJOR} ]
+ then
+ echo "Found tracer device with major number:" ${MAJOR}
+ else
+ echo "Loading tracer kernel module: "
+ # invoke modprobe
+ /sbin/modprobe ${MODULE}
+ MAJOR=`/bin/grep " ${MODULE}$" /proc/devices | cut -d" " -f1`
+ if [ ${MAJOR} ]
+ then
+ echo "Found tracer device with major number:" ${MAJOR}
+ else
+ echo "Did not find tracer device ... /dev entries not created ..."
+ exit 1
+ fi
+ fi
+
+ # tell the user about what we are doing
+ echo "Creating new tracer nodes: /dev/tracer and /dev/tracerU"
+
+ # create the character special file
+ /bin/mknod /dev/${MAIN_DEVICE} c ${MAJOR} 0
+ /bin/mknod /dev/${USER_DEVICE} c ${MAJOR} 1
+
+ # set permissions and ownership
+ /bin/chgrp ${GROUP} /dev/${MAIN_DEVICE}
+ /bin/chmod ${MODE} /dev/${MAIN_DEVICE}
+ /bin/chgrp ${GROUP} /dev/${USER_DEVICE}
+ /bin/chmod ${MODE} /dev/${USER_DEVICE}
+}
+stop() {
+ # tell the user about what we are doing
+ echo "Deleting tracer nodes: /dev/tracer and /dev/tracerU"
+
+ # remove nodes
+ rm -f /dev/${MAIN_DEVICE}
+ rm -f /dev/${USER_DEVICE}
+
+ if lsmod | /bin/grep "^${MODULE} "
+ then
+ echo -n "Removing tracer kernel module: "
+ # invoke modprobe -r
+ /sbin/modprobe -r ${MODULE}
+ echo "OK"
+ fi
+}
+restart() {
+ stop
+ start
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart|reload)
+ restart
+ ;;
+ *)
+ echo $"Usage: $0 {start|stop|restart}"
+ exit 1
+esac
+
+exit $?
diff --git a/package/ltt/ltt.mk b/package/ltt/ltt.mk
new file mode 100644
index 000000000..dfc317879
--- /dev/null
+++ b/package/ltt/ltt.mk
@@ -0,0 +1,116 @@
+#############################################################
+#
+# ltt
+#
+#############################################################
+LTT_VER:=0.9.5a
+LTT_SOURCE:=TraceToolkit-$(LTT_VER).tgz
+LTT_SITE:=http://www.opersys.com/ftp/pub/LTT
+LTT_CAT:=zcat
+LTT_DIR1:=$(TOOL_BUILD_DIR)/TraceToolkit-$(LTT_VER:a=)
+LTT_DIR2:=$(BUILD_DIR)/TraceToolkit-$(LTT_VER:a=)
+LTT_BINARY:=Visualizer/tracevisualizer
+LTT_TARGET_BINARY:=Daemon/tracedaemon
+
+$(DL_DIR)/$(LTT_SOURCE):
+ $(WGET) -P $(DL_DIR) $(LTT_SITE)/$(LTT_SOURCE)
+
+ltt-source: $(DL_DIR)/$(LTT_SOURCE)
+
+
+#############################################################
+#
+# build tracevisualizer for use on the host system
+#
+#############################################################
+$(LTT_DIR1)/.unpacked: $(DL_DIR)/$(LTT_SOURCE)
+ $(LTT_CAT) $(DL_DIR)/$(LTT_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
+ toolchain/patch-kernel.sh $(LTT_DIR1) package/ltt ltt\*.patch
+ touch $(LTT_DIR1)/.unpacked
+
+$(LTT_DIR1)/.configured: $(LTT_DIR1)/.unpacked
+ (cd $(LTT_DIR1); rm -rf config.cache; \
+ ./configure \
+ --prefix=$(TOOL_BUILD_DIR) \
+ );
+ touch $(LTT_DIR1)/.configured
+
+$(LTT_DIR1)/$(LTT_BINARY): $(LTT_DIR1)/.configured
+ $(MAKE) -C $(LTT_DIR1)/LibLTT
+ $(MAKE) -C $(LTT_DIR1)/Visualizer
+
+$(TOOL_BUILD_DIR)/bin/tracevisualizer: $(LTT_DIR1)/$(LTT_BINARY)
+ $(MAKE) -C $(LTT_DIR1)/LibLTT install
+ $(MAKE) -C $(LTT_DIR1)/Visualizer install
+
+host-ltt-tracevisualizer: $(TOOL_BUILD_DIR)/bin/tracevisualizer
+
+host-ltt-clean:
+ $(MAKE) -C $(LTT_DIR1) clean
+
+host-ltt-dirclean:
+ rm -rf $(LTT_DIR1)
+
+
+#############################################################
+#
+# build tracedaemon for use on the target system
+#
+#############################################################
+$(LTT_DIR2)/.unpacked: $(DL_DIR)/$(LTT_SOURCE)
+ $(LTT_CAT) $(DL_DIR)/$(LTT_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+ toolchain/patch-kernel.sh $(LTT_DIR2) package/ltt ltt\*.patch
+ touch $(LTT_DIR2)/.unpacked
+
+$(LTT_DIR2)/.configured: $(LTT_DIR2)/.unpacked
+ (cd $(LTT_DIR2); rm -rf config.cache; \
+ $(TARGET_CONFIGURE_OPTS) \
+ CFLAGS="$(TARGET_CFLAGS)" \
+ ./configure \
+ --host=$(GNU_TARGET_NAME) \
+ --build=$(GNU_HOST_NAME) \
+ --prefix=/usr \
+ --exec-prefix=/usr \
+ --bindir=/usr/bin \
+ --sbindir=/usr/sbin \
+ --libexecdir=/usr/lib \
+ --sysconfdir=/etc \
+ --datadir=/usr/share \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ );
+ touch $(LTT_DIR2)/.configured
+
+$(LTT_DIR2)/$(LTT_TARGET_BINARY): $(LTT_DIR2)/.configured
+ $(MAKE) CC=$(TARGET_CC) -C $(LTT_DIR2)/LibUserTrace
+ $(MAKE) CC=$(TARGET_CC) -C $(LTT_DIR2)/Daemon
+
+$(TARGET_DIR)/usr/bin/tracedaemon: $(LTT_DIR2)/$(LTT_TARGET_BINARY)
+ $(MAKE) $(TARGET_CONFIGURE_OPTS) DESTDIR=$(TARGET_DIR) \
+ -C $(LTT_DIR2)/LibUserTrace install
+ $(MAKE) $(TARGET_CONFIGURE_OPTS) DESTDIR=$(TARGET_DIR) \
+ -C $(LTT_DIR2)/Daemon install
+ $(STRIP) $(TARGET_DIR)/usr/bin/tracedaemon > /dev/null 2>&1
+ $(INSTALL) -D -m 0755 package/ltt/init-tracer $(TARGET_DIR)/etc/init.d/S27tracer
+
+ltt-tracedaemon: uclibc $(TARGET_DIR)/usr/bin/tracedaemon
+
+ltt-clean:
+ $(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(LTT_DIR2) uninstall
+ -$(MAKE) -C $(LTT_DIR2) clean
+
+ltt-dirclean:
+ rm -rf $(LTT_DIR2)
+
+
+ltt: host-ltt-tracevisualizer ltt-tracedaemon
+
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(strip $(BR2_PACKAGE_LTT)),y)
+TARGETS+=ltt
+endif
diff --git a/package/ltt/ltt.patch b/package/ltt/ltt.patch
new file mode 100644
index 000000000..b0c758086
--- /dev/null
+++ b/package/ltt/ltt.patch
@@ -0,0 +1,42 @@
+diff -urN TraceToolkit-0.9.5.orig/LibLTT/EventDB.c TraceToolkit-0.9.5/LibLTT/EventDB.c
+--- TraceToolkit-0.9.5.orig/LibLTT/EventDB.c 2002-04-15 09:10:13.000000000 -0700
++++ TraceToolkit-0.9.5/LibLTT/EventDB.c 2005-09-29 15:09:11.000000000 -0700
+@@ -2757,7 +2757,7 @@
+
+ /* Increment number of custom events */
+ pmTraceDB->NbCustom++;
+- goto NoControlEvent;
++ continue;
+ break;
+
+ /* A custom event has occured */
+@@ -2800,8 +2800,6 @@
+ lLastCtrlEvent = lEvent;
+ lLastCtrlEventTime = lEventTime;
+ }
+-
+-NoControlEvent:
+ } while(DBEventNext(pmTraceDB, &lEvent) == TRUE);
+
+ /* Remember the last event and its time */
+diff -urN TraceToolkit-0.9.5.orig/LibLTT/RTAIDB.c TraceToolkit-0.9.5/LibLTT/RTAIDB.c
+--- TraceToolkit-0.9.5.orig/LibLTT/RTAIDB.c 2002-04-15 20:00:05.000000000 -0700
++++ TraceToolkit-0.9.5/LibLTT/RTAIDB.c 2005-09-29 15:09:17.000000000 -0700
+@@ -2621,7 +2621,7 @@
+
+ /* Increment number of custom events */
+ pmTraceDB->NbCustom++;
+- goto NoControlEvent;
++ continue;
+ break;
+
+ /* A custom event has occured */
+@@ -2936,8 +2936,6 @@
+ lLastCtrlEvent = lEvent;
+ lLastCtrlEventTime = lEventTime;
+ }
+-
+-NoControlEvent:
+ } while(DBEventNext(pmTraceDB, &lEvent) == TRUE);
+
+ /* Remember the last event and it's time */