tst.multiprov.ksh revision 266988
1166135Srafan#
2166135Srafan# CDDL HEADER START
3166135Srafan#
4166135Srafan# The contents of this file are subject to the terms of the
5166135Srafan# Common Development and Distribution License (the "License").
6166135Srafan# You may not use this file except in compliance with the License.
7166135Srafan#
8166135Srafan# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9166135Srafan# or http://www.opensolaris.org/os/licensing.
10166135Srafan# See the License for the specific language governing permissions
11184989Srafan# and limitations under the License.
12166135Srafan#
13166135Srafan# When distributing Covered Code, include this CDDL HEADER in each
14166135Srafan# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15184990Srafan# If applicable, add the following below this CDDL HEADER, with the
16184990Srafan# fields enclosed by brackets "[]" replaced with your own identifying
17166135Srafan# information: Portions Copyright [yyyy] [name of copyright owner]
18184990Srafan#
19166135Srafan# CDDL HEADER END
20184990Srafan#
21166135Srafan
22184990Srafan#
23184990Srafan# Copyright (c) 2013, Joyent, Inc. All rights reserved.
24176192Srafan#
25166135Srafan
26166135Srafanif [ $# != 1 ]; then
27166135Srafan	echo expected one argument: '<'dtrace-path'>'
28166135Srafan	exit 2
29166135Srafanfi
30166135Srafan
31166135Srafandtrace=$1
32166135SrafanDIR=/var/tmp/dtest.$$
33166135Srafan
34166135Srafanmkdir $DIR
35184990Srafancd $DIR
36184990Srafan
37166135Srafanecho '#pragma D option quiet' > test.d
38166135Srafanecho '#pragma D option aggsortkey' >> test.d
39166135Srafan
40166135Srafancat > test.c <<EOF
41184990Srafan#include <unistd.h>
42166135Srafan
43166135Srafanvoid
44184990Srafanmain()
45184990Srafan{
46166135SrafanEOF
47166135Srafan
48166135Srafanobjs=
49166135Srafan
50166135Srafanfor oogle in doogle bagnoogle; do
51184990Srafan	cat > $oogle.c <<EOF
52#include <sys/sdt.h>
53
54void
55$oogle()
56{
57	DTRACE_PROBE($oogle, knows);
58}
59EOF
60
61	cat > $oogle.d <<EOF
62provider $oogle {
63	probe knows();
64};
65EOF
66
67	cc -c $oogle.c
68
69	if [ $? -ne 0 ]; then
70		print -u2 "failed to compile $oogle.c"
71		exit 1
72	fi
73
74	$dtrace -G -32 -s $oogle.d $oogle.o -o $oogle.d.o
75
76	if [ $? -ne 0 ]; then
77		print -u2 "failed to process $oogle.d"
78		exit 1
79	fi
80
81	objs="$objs $oogle.o $oogle.d.o"
82	echo $oogle'();' >> test.c
83	echo $oogle'$target:::{@[probefunc] = count()}' >> test.d
84done
85
86echo "}" >> test.c
87
88echo 'END{printa("%-10s %@d\\n", @)}' >> test.d
89
90cc -o test test.c $objs
91
92if [ $? -ne 0 ]; then
93	print -u2 "failed to compile test.c"
94	exit 1
95fi
96
97$dtrace -s ./test.d -Zc ./test
98
99if [ $? -ne 0 ]; then
100	print -u2 "failed to execute test"
101	exit 1
102fi
103
104cd /
105/usr/bin/rm -rf $DIR
106exit 0
107