summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-09-15 18:40:32 +0200
committerLennart Poettering <lennart@poettering.net>2009-09-15 18:40:32 +0200
commit397de7f49980db01e4e49747036afe5dd9d3527e (patch)
treeee6edc87bf56d97a8ffc9b7c1a0eb4f931c40f53
parentb1e6f92908e651539309d702da63d2fa45cd603c (diff)
add missing mutrace.in file
-rw-r--r--.gitignore1
-rwxr-xr-xmutrace.in126
2 files changed, 127 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 4bd10e4..a05417b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,3 +24,4 @@ configure
libtool
ltmain.sh
install-sh
+mutrace
diff --git a/mutrace.in b/mutrace.in
new file mode 100755
index 0000000..0d06ec3
--- /dev/null
+++ b/mutrace.in
@@ -0,0 +1,126 @@
+#!/bin/bash
+
+# This file is part of mutrace.
+#
+# Copyright 2009 Lennart Poettering
+#
+# mutrace is free software: you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# mutrace is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with mutrace. If not, see <http://www.gnu.org/licenses/>.
+
+if ! TEMP=`getopt -o h --long hash-size:,frames:,locked-min:,owner-changed-min:,contended-min:,max:,trap,help,all -n mutrace -- "$@"` ; then
+ exit 1
+fi
+
+eval set -- "$TEMP"
+
+while : ; do
+ case $1 in
+ --hash-size)
+ export MUTRACE_HASH_SIZE="$2"
+ shift 2
+ ;;
+
+ --frames)
+ export MUTRACE_FRAMES="$2"
+ shift 2
+ ;;
+
+ --locked-min)
+ export MUTRACE_LOCKED_MIN="$2"
+ shift 2
+ ;;
+
+ --owner-changed-min)
+ export MUTRACE_OWNER_CHANGED_MIN="$2"
+ shift 2
+ ;;
+
+ --contended-min)
+ export MUTRACE_CONTENDED_MIN="$2"
+ shift 2
+ ;;
+
+ --max)
+ export MUTRACE_MAX="$2"
+ shift 2
+ ;;
+
+ --trap)
+ export MUTRACE_TRAP=1
+ shift 1
+ ;;
+
+ --all)
+ export MUTRACE_LOCKED_MIN=0
+ export MUTRACE_OWNER_CHANGED_MIN=0
+ export MUTRACE_CONTENDED_MIN=0
+ export MUTRACE_MAX=0
+ shift 1
+ ;;
+
+ -h|--help)
+ cat <<EOF
+@PACKAGE_STRING@
+
+Usage: @PACKAGE_NAME@ [OPTIONS...] -- APPLICATION [ARGUMENTS...]
+
+COMMANDS:
+ -h, --help Show this help
+
+OPTIONS:
+ --hash-size=INTEGER Set size of mutex hash table
+ --frames=INTEGER Set number of frames to show in stack traces
+ --max=INTEGER Show this many mutexes at maximum
+
+ --locked-min=INTEGER Only show mutexes that have been locked at
+ least this often
+ --owner-changed-min=INTEGER Only show mutexes whose owning thread changed
+ at least this often
+ --contended-min=INTEGER Only show mutexes which have been contended
+ at least this often
+ --all Show all mutexes, overrides the values of the
+ three values above
+
+ --trap Trigger a debugger trap each time a mutex
+ inconsistency is detected (for use in
+ conjunction with gdb)
+EOF
+
+ shift 1
+ ;;
+ --)
+ shift
+ break
+ ;;
+
+ *)
+ echo "Parsing failed!" >&2
+ exit 1
+ ;;
+ esac
+done
+
+shift $(($OPTIND-1))
+
+if [ x"$1" = x ] ; then
+ echo "Please specify an application to profile!" >&2
+ exit 1
+fi
+
+if [ x"$LD_PRELOAD" = x ] ; then
+ export LD_PRELOAD="libmutrace.so"
+else
+ export LD_PRELOAD="$LD_PRELOAD libmutrace.so"
+fi
+
+exec "$@"