[ltt-dev] [PATCH 3/3] Unify ltt-armall* scripts

Mathieu Desnoyers compudj at krystal.dyndns.org
Wed Nov 18 11:49:54 EST 2009


* Benjamin Poirier (benjamin.poirier at polymtl.ca) wrote:
> 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
> 

The #!/bin/sh is prepended to ltt-armall.sh to create ltt-armall (see
Makefile.am).

Mathieu

> ---
> 
> 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
> >>
> > 
> 

-- 
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68




More information about the lttng-dev mailing list