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