[ltt-dev] [PATCH 3/3] Unify ltt-armall* scripts
Benjamin Poirier
benjamin.poirier at polymtl.ca
Wed Nov 18 11:46:49 EST 2009
Mathieu Desnoyers wrote:
> * Mathieu Desnoyers (compudj at krystal.dyndns.org) wrote:
>> * Mathieu Desnoyers (mathieu.desnoyers at polymtl.ca) wrote:
>>> * Benjamin Poirier (benjamin.poirier at polymtl.ca) wrote:
>>>> Adds switches to ltt-armall to control locking-related and network-related
>>>> marker activation (off by default).
>>>> Modifies ltt-disarmall to simply disconnect all active markers (and no more).
>>>>
>>> Great patch ! :) Will merge.
>> hrm. A small problem here. It's in bash. I don't think it will work with
>> busybox, which is a requirement for embedded people.
>>
>> If I run it with /bin/sh in the header, I get:
>>
>> ./ltt-armall: line 71: syntax error near unexpected token `<'
>> ./ltt-armall: line 71: `done < <(eval "find '$MARKERSROOT' $TESTS -name
>> metadata -prune -o -name enable -print0")'
>>
>> Any idea on how to fix this ?
>>
>
> Ah !
>
> (eval "find '${MARKERSROOT}' ${TESTS} -name metadata -prune -o -name enable -print0") | while read -r -d $'\0' marker; do
> if [ ! ${QUIET} ]; then
> echo "Connecting ${marker%/enable}"
> fi
> echo 1 > ${marker}
> done
>
> seems to do the job.
>
Excellent, I hadn't figured out how to do it without the process substitution "<(...)". Are you sure you want to remove the shebang altogether though? I'd leave #!/bin/sh. Busybox provides it and its absence can lead to, hum, confusing behavior:
$ file ltt-armall.sh
ltt-armall.sh: ASCII Pascal program text
It's also mandated on some systems:
http://www.debian.org/doc/debian-policy/ch-files.html#s-scripts
---
diff --git a/lttctl/ltt-armall.sh b/lttctl/ltt-armall.sh
index 307f0b1..ba61e6c 100755
--- a/lttctl/ltt-armall.sh
+++ b/lttctl/ltt-armall.sh
@@ -1,3 +1,4 @@
+#!/bin/sh
# Copyright (C) 2009 Benjamin Poirier
# This program is free software; you can redistribute it and/or modify
diff --git a/lttctl/ltt-disarmall.sh b/lttctl/ltt-disarmall.sh
index 64e65a4..7c78c16 100755
--- a/lttctl/ltt-disarmall.sh
+++ b/lttctl/ltt-disarmall.sh
@@ -1,3 +1,4 @@
+#!/bin/sh
# Copyright (C) 2009 Benjamin Poirier
# This program is free software; you can redistribute it and/or modify
> Mathieu
>
>
>> Mathieu
>>
>>> Mathieu
>>>
>>>> Signed-off-by: Benjamin Poirier <benjamin.poirier at polymtl.ca>
>>>> Cc: Pierre-Marc Fournier <pierre-marc.fournier at polymtl.ca>
>>>> ---
>>>> lttctl/Makefile.am | 14 -------
>>>> lttctl/ltt-armall.sh | 82 ++++++++++++++++++++++++++++++++++--------
>>>> lttctl/ltt-armnetsync.sh | 9 -----
>>>> lttctl/ltt-disarmall.sh | 72 +++++++++++++++++++++++++++++--------
>>>> lttctl/ltt-disarmnetsync.sh | 9 -----
>>>> 5 files changed, 122 insertions(+), 64 deletions(-)
>>>> delete mode 100755 lttctl/ltt-armnetsync.sh
>>>> delete mode 100755 lttctl/ltt-disarmnetsync.sh
>>>>
>>>> diff --git a/lttctl/Makefile.am b/lttctl/Makefile.am
>>>> index f86f118..b01d983 100644
>>>> --- a/lttctl/Makefile.am
>>>> +++ b/lttctl/Makefile.am
>>>> @@ -4,11 +4,9 @@ AM_CFLAGS = -DPACKAGE_DATA_DIR=\""$(datadir)"\" -DPACKAGE_BIN_DIR=\""$(bindir)"\
>>>>
>>>> bin_PROGRAMS = lttctl
>>>> bin_SCRIPTS = ltt-armall ltt-disarmall \
>>>> - ltt-armnetsync ltt-disarmnetsync \
>>>> ltt-armtap ltt-disarmtap
>>>> CLEANFILES = $(bin_SCRIPTS)
>>>> EXTRA_DIST = ltt-armall.sh ltt-disarmall.sh \
>>>> - ltt-armnetsync.sh ltt-disarmnetsync.sh \
>>>> ltt-armtap.sh ltt-disarmtap.sh
>>>>
>>>> ltt-armall: ltt-armall.sh
>>>> @@ -23,18 +21,6 @@ ltt-disarmall: ltt-disarmall.sh
>>>> cat $(srcdir)/ltt-disarmall.sh >> ltt-disarmall
>>>> chmod ugo+x ltt-disarmall
>>>>
>>>> -ltt-armnetsync: ltt-armnetsync.sh
>>>> - rm -f ltt-armnetsync
>>>> - echo "#!"$(BASH) > ltt-armnetsync
>>>> - cat $(srcdir)/ltt-armnetsync.sh >> ltt-armnetsync
>>>> - chmod ugo+x ltt-armnetsync
>>>> -
>>>> -ltt-disarmnetsync: ltt-disarmnetsync.sh
>>>> - rm -f ltt-disarmnetsync
>>>> - echo "#!"$(BASH) > ltt-disarmnetsync
>>>> - cat $(srcdir)/ltt-disarmnetsync.sh >> ltt-disarmnetsync
>>>> - chmod ugo+x ltt-disarmnetsync
>>>> -
>>>> ltt-armtap: ltt-armtap.sh
>>>> rm -f ltt-armtap
>>>> echo "#!"$(BASH) > ltt-armtap
>>>> diff --git a/lttctl/ltt-armall.sh b/lttctl/ltt-armall.sh
>>>> index 4c117de..7771505 100755
>>>> --- a/lttctl/ltt-armall.sh
>>>> +++ b/lttctl/ltt-armall.sh
>>>> @@ -1,21 +1,71 @@
>>>> +#!/bin/bash
>>>> +# Copyright (C) 2009 Benjamin Poirier
>>>> +
>>>> +# This program is free software; you can redistribute it and/or modify
>>>> +# it under the terms of the GNU General Public License as published by
>>>> +# the Free Software Foundation; either version 2 of the License, or
>>>> +# (at your option) any later version.
>>>> +
>>>> +# This program 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 General Public License for more details.
>>>> +
>>>> +# You should have received a copy of the GNU General Public License along
>>>> +# with this program; if not, write to the Free Software Foundation, Inc.,
>>>> +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
>>>> +
>>>> DEBUGFSROOT=$(grep ^debugfs /proc/mounts | head -1 | awk '{print $2}')
>>>> MARKERSROOT=${DEBUGFSROOT}/ltt/markers
>>>>
>>>> -echo Connecting all markers
>>>> -
>>>> -for c in ${MARKERSROOT}/*; do
>>>> - case ${c} in
>>>> - ${MARKERSROOT}/metadata)
>>>> - ;;
>>>> - ${MARKERSROOT}/locking)
>>>> - ;;
>>>> - ${MARKERSROOT}/lockdep)
>>>> - ;;
>>>> - *)
>>>> - for m in ${c}/*; do
>>>> - echo Connecting ${m}
>>>> - echo 1 > ${m}/enable
>>>> - done
>>>> - ;;
>>>> +usage () {
>>>> + echo "Usage: $0 [OPTION]..." > /dev/stderr
>>>> + echo "Connect lttng markers" > /dev/stderr
>>>> + echo "" > /dev/stderr
>>>> + echo "Options:" > /dev/stderr
>>>> + printf "\t-l Also activate locking markers (high traffic)\n" > /dev/stderr
>>>> + printf "\t-n Also activate detailed network markers (large size)\n" > /dev/stderr
>>>> + echo "" > /dev/stderr
>>>> + printf "\t-q Quiet mode, suppress output\n" > /dev/stderr
>>>> + printf "\t-h Print this help\n" > /dev/stderr
>>>> + echo "" > /dev/stderr
>>>> +}
>>>> +
>>>> +if [ ! "$DEBUGFSROOT" ]; then
>>>> + echo "Error: debugfs not mounted" > /dev/stderr
>>>> + exit 1;
>>>> +fi
>>>> +
>>>> +if [ ! -d "$MARKERSROOT" ]; then
>>>> + echo "Error: LTT trace controller not found (did you compile and load LTTng?)" > /dev/stderr
>>>> + exit 1;
>>>> +fi
>>>> +
>>>> +while getopts "lnqh" options; do
>>>> + case $options in
>>>> + l) LOCKING="0";;
>>>> + n) NETWORK="0";;
>>>> + q) QUIET="0";;
>>>> + h) usage;
>>>> + exit 0;;
>>>> + \?) usage;
>>>> + exit 1;;
>>>> esac
>>>> done
>>>> +shift $(($OPTIND - 1))
>>>> +
>>>> +
>>>> +if [ ! $LOCKING ]; then
>>>> + TESTS="${TESTS} -name lockdep -prune -o -name locking -prune -o"
>>>> +fi
>>>> +
>>>> +if [ ! $NETWORK ]; then
>>>> + TESTS="${TESTS} -path '*/net/*_extended' -prune -o"
>>>> +fi
>>>> +
>>>> +while read -r -d $'\0' marker; do
>>>> + if [ ! $QUIET ]; then
>>>> + echo "Connecting ${marker%/enable}"
>>>> + fi
>>>> + echo 1 > $marker
>>>> +done < <(eval "find '$MARKERSROOT' $TESTS -name metadata -prune -o -name enable -print0")
>>>> diff --git a/lttctl/ltt-armnetsync.sh b/lttctl/ltt-armnetsync.sh
>>>> deleted file mode 100755
>>>> index a07b751..0000000
>>>> --- a/lttctl/ltt-armnetsync.sh
>>>> +++ /dev/null
>>>> @@ -1,9 +0,0 @@
>>>> -DEBUGFSROOT=$(grep ^debugfs /proc/mounts | head -1 | awk '{print $2}')
>>>> -MARKERSROOT=${DEBUGFSROOT}/ltt/markers
>>>> -
>>>> -echo Connecting network synchronization markers
>>>> -
>>>> -for m in ${MARKERSROOT}/net/*_extended; do
>>>> - echo Connecting ${m}
>>>> - echo 1 > ${m}/enable
>>>> -done
>>>> diff --git a/lttctl/ltt-disarmall.sh b/lttctl/ltt-disarmall.sh
>>>> index d06950f..2b5704f 100755
>>>> --- a/lttctl/ltt-disarmall.sh
>>>> +++ b/lttctl/ltt-disarmall.sh
>>>> @@ -1,21 +1,61 @@
>>>> +#!/bin/bash
>>>> +# Copyright (C) 2009 Benjamin Poirier
>>>> +
>>>> +# This program is free software; you can redistribute it and/or modify
>>>> +# it under the terms of the GNU General Public License as published by
>>>> +# the Free Software Foundation; either version 2 of the License, or
>>>> +# (at your option) any later version.
>>>> +
>>>> +# This program 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 General Public License for more details.
>>>> +
>>>> +# You should have received a copy of the GNU General Public License along
>>>> +# with this program; if not, write to the Free Software Foundation, Inc.,
>>>> +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
>>>> +
>>>> DEBUGFSROOT=$(grep ^debugfs /proc/mounts | head -1 | awk '{print $2}')
>>>> MARKERSROOT=${DEBUGFSROOT}/ltt/markers
>>>>
>>>> -echo Disconnecting all markers
>>>> -
>>>> -for c in ${MARKERSROOT}/*; do
>>>> - case ${c} in
>>>> - ${MARKERSROOT}/metadata)
>>>> - ;;
>>>> - ${MARKERSROOT}/locking)
>>>> - ;;
>>>> - ${MARKERSROOT}/lockdep)
>>>> - ;;
>>>> - *)
>>>> - for m in ${c}/*; do
>>>> - echo Disconnecting ${m}
>>>> - echo 0 > ${m}/enable
>>>> - done
>>>> - ;;
>>>> +usage () {
>>>> + echo "Usage: $0 [OPTION]..." > /dev/stderr
>>>> + echo "Disconnect lttng markers" > /dev/stderr
>>>> + echo "" > /dev/stderr
>>>> + echo "Options:" > /dev/stderr
>>>> + printf "\t-q Quiet mode, suppress output\n" > /dev/stderr
>>>> + printf "\t-h Print this help\n" > /dev/stderr
>>>> + echo "" > /dev/stderr
>>>> +}
>>>> +
>>>> +if [ ! "$DEBUGFSROOT" ]; then
>>>> + echo "Error: debugfs not mounted" > /dev/stderr
>>>> + exit 1;
>>>> +fi
>>>> +
>>>> +if [ ! -d "$MARKERSROOT" ]; then
>>>> + echo "Error: LTT trace controller not found (did you compile and load LTTng?)" > /dev/stderr
>>>> + exit 1;
>>>> +fi
>>>> +
>>>> +while getopts "qh" options; do
>>>> + case $options in
>>>> + q) QUIET="0";;
>>>> + h) usage;
>>>> + exit 0;;
>>>> + \?) usage;
>>>> + exit 1;;
>>>> esac
>>>> done
>>>> +shift $(($OPTIND - 1))
>>>> +
>>>> +while read -r -d $'\0' marker; do
>>>> + grep "^1$" "$marker" -q
>>>> + if [ $? -ne 0 ]; then
>>>> + continue
>>>> + fi
>>>> + if [ ! $QUIET ]; then
>>>> + echo "Disconnecting ${marker%/enable}"
>>>> + fi
>>>> + echo 0 > $marker
>>>> +done < <(eval "find '$MARKERSROOT' -name metadata -prune -o -name enable -print0")
>>>> diff --git a/lttctl/ltt-disarmnetsync.sh b/lttctl/ltt-disarmnetsync.sh
>>>> deleted file mode 100755
>>>> index fead515..0000000
>>>> --- a/lttctl/ltt-disarmnetsync.sh
>>>> +++ /dev/null
>>>> @@ -1,9 +0,0 @@
>>>> -DEBUGFSROOT=$(grep ^debugfs /proc/mounts | head -1 | awk '{print $2}')
>>>> -MARKERSROOT=${DEBUGFSROOT}/ltt/markers
>>>> -
>>>> -echo Disconnecting network synchronization markers
>>>> -
>>>> -for m in ${MARKERSROOT}/net/*_extended; do
>>>> - echo Disconnecting ${m}
>>>> - echo 0 > ${m}/enable
>>>> -done
>>>> --
>>>> 1.6.5
>>>>
>>> --
>>> Mathieu Desnoyers
>>> OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
>>>
>>> _______________________________________________
>>> ltt-dev mailing list
>>> ltt-dev at lists.casi.polymtl.ca
>>> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
>>>
>> --
>> Mathieu Desnoyers
>> OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
>>
>> _______________________________________________
>> ltt-dev mailing list
>> ltt-dev at lists.casi.polymtl.ca
>> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
>>
>
More information about the lttng-dev
mailing list