diff options
author | Mark Johnston <markj@FreeBSD.org> | 2015-12-07 21:49:32 +0000 |
---|---|---|
committer | Mark Johnston <markj@FreeBSD.org> | 2015-12-07 21:49:32 +0000 |
commit | 16392907492099b776ca5ea1de650578a530ca26 (patch) | |
tree | 68241a5ebe6ebae78790531245d73de63172940b /cddl/contrib/opensolaris | |
parent | 6e0f204c3f46e7b71b855f32920e8df767ea298b (diff) | |
parent | b8dfc8b08da4a7a388b6193bea9816fd65c155f1 (diff) | |
download | src-16392907492099b776ca5ea1de650578a530ca26.tar.gz src-16392907492099b776ca5ea1de650578a530ca26.zip |
MFV r289003:
6271 dtrace caused excessive fork time
Author: Bryan Cantrill <bryan@joyent.com>
Reviewed by: Adam Leventhal <ahl@delphix.com>
Reviewed by: Dan McDonald <danmcd@omniti.com>
Reviewed by: Richard Lowe <richlowe@richlowe.net>
Approved by: Gordon Ross <gwr@nexenta.com>
illumos/illumos-gate@7bd3c1d12d0c764e1517c3aca62c634409356764
Notes
Notes:
svn path=/head/; revision=291963
Diffstat (limited to 'cddl/contrib/opensolaris')
-rw-r--r-- | cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.sameprovmulti.ksh | 99 | ||||
-rw-r--r-- | cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.sameprovmulti.ksh.out | 4 |
2 files changed, 103 insertions, 0 deletions
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.sameprovmulti.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.sameprovmulti.ksh new file mode 100644 index 000000000000..2e404f4b8df6 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.sameprovmulti.ksh @@ -0,0 +1,99 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright (c) 2015, Joyent, Inc. All rights reserved. +# + +# +# This test assures that we can have the same provider name across multiple +# probe definitions, and that the result will be the union of those +# definitions. In particular, libusdt depends on this when (for example) +# node modules that create a provider are loaded multiple times due to +# being included by different modules. +# + +if [ $# != 1 ]; then + echo expected one argument: '<'dtrace-path'>' + exit 2 +fi + +dtrace=$1 +DIR=/var/tmp/dtest.$$ + +mkdir $DIR +cd $DIR + +cat > test.c <<EOF +#include <unistd.h> + +void +main() +{ +EOF + +objs= + +for oogle in bagnoogle stalloogle cockoogle; do + cat > $oogle.c <<EOF +#include <sys/sdt.h> + +void +$oogle() +{ + DTRACE_PROBE(doogle, $oogle); +} +EOF + + cat > $oogle.d <<EOF +provider doogle { + probe $oogle(); +}; +EOF + + cc -c $oogle.c + + if [ $? -ne 0 ]; then + print -u2 "failed to compile $oogle.c" + exit 1 + fi + + $dtrace -G -s $oogle.d $oogle.o -o $oogle.d.o + + if [ $? -ne 0 ]; then + print -u2 "failed to process $oogle.d" + exit 1 + fi + + objs="$objs $oogle.o $oogle.d.o" + echo $oogle'();' >> test.c +done + +echo "}" >> test.c + +cc -o test test.c $objs + +if [ $? -ne 0 ]; then + print -u2 "failed to compile test.c" + exit 1 +fi + +$dtrace -n 'doogle$target:::{@[probename] = count()}' \ + -n 'END{printa("%-10s %@d\n", @)}' -x quiet -x aggsortkey -Zc ./test + +if [ $? -ne 0 ]; then + print -u2 "failed to execute test" + exit 1 +fi + +cd / +rm -rf $DIR +exit 0 diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.sameprovmulti.ksh.out b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.sameprovmulti.ksh.out new file mode 100644 index 000000000000..bdeeb1ef29b9 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.sameprovmulti.ksh.out @@ -0,0 +1,4 @@ +bagnoogle 1 +cockoogle 1 +stalloogle 1 + |