1*2be1a816SJohn Birrell#!/bin/ksh -p 2*2be1a816SJohn Birrell# 3*2be1a816SJohn Birrell# CDDL HEADER START 4*2be1a816SJohn Birrell# 5*2be1a816SJohn Birrell# The contents of this file are subject to the terms of the 6*2be1a816SJohn Birrell# Common Development and Distribution License (the "License"). 7*2be1a816SJohn Birrell# You may not use this file except in compliance with the License. 8*2be1a816SJohn Birrell# 9*2be1a816SJohn Birrell# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*2be1a816SJohn Birrell# or http://www.opensolaris.org/os/licensing. 11*2be1a816SJohn Birrell# See the License for the specific language governing permissions 12*2be1a816SJohn Birrell# and limitations under the License. 13*2be1a816SJohn Birrell# 14*2be1a816SJohn Birrell# When distributing Covered Code, include this CDDL HEADER in each 15*2be1a816SJohn Birrell# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*2be1a816SJohn Birrell# If applicable, add the following below this CDDL HEADER, with the 17*2be1a816SJohn Birrell# fields enclosed by brackets "[]" replaced with your own identifying 18*2be1a816SJohn Birrell# information: Portions Copyright [yyyy] [name of copyright owner] 19*2be1a816SJohn Birrell# 20*2be1a816SJohn Birrell# CDDL HEADER END 21*2be1a816SJohn Birrell# 22*2be1a816SJohn Birrell 23*2be1a816SJohn Birrell# 24*2be1a816SJohn Birrell# Copyright 2006 Sun Microsystems, Inc. All rights reserved. 25*2be1a816SJohn Birrell# Use is subject to license terms. 26*2be1a816SJohn Birrell# 27*2be1a816SJohn Birrell# ident "%Z%%M% %I% %E% SMI" 28*2be1a816SJohn Birrell# 29*2be1a816SJohn Birrell 30*2be1a816SJohn Birrell# 31*2be1a816SJohn Birrell# This script primarily tests that the ::dtrace dcmd is not dumping 32*2be1a816SJohn Birrell# core. We don't try to make sense of the output of the dcmd nor 33*2be1a816SJohn Birrell# do we check to see if any output is produced. We merely see if 34*2be1a816SJohn Birrell# mdb fails with a fatal failure. 35*2be1a816SJohn Birrell# 36*2be1a816SJohn Birrell 37*2be1a816SJohn Birrellscript() 38*2be1a816SJohn Birrell{ 39*2be1a816SJohn Birrell $dtrace -o $dtraceout -s /dev/stdin <<EOF 40*2be1a816SJohn Birrell syscall:::entry 41*2be1a816SJohn Birrell { 42*2be1a816SJohn Birrell @[probefunc] = count(); 43*2be1a816SJohn Birrell } 44*2be1a816SJohn BirrellEOF 45*2be1a816SJohn Birrell} 46*2be1a816SJohn Birrell 47*2be1a816SJohn Birrellmdbdoit() 48*2be1a816SJohn Birrell{ 49*2be1a816SJohn Birrell mdb -k <<EOF 50*2be1a816SJohn Birrell ::walk dtrace_state | ::dtrace 51*2be1a816SJohn BirrellEOF 52*2be1a816SJohn Birrell status=$? 53*2be1a816SJohn Birrell kill $script 54*2be1a816SJohn Birrell} 55*2be1a816SJohn Birrell 56*2be1a816SJohn Birrellif [ $# != 1 ]; then 57*2be1a816SJohn Birrell echo expected one argument: '<'dtrace-path'>' 58*2be1a816SJohn Birrell exit 2 59*2be1a816SJohn Birrellfi 60*2be1a816SJohn Birrell 61*2be1a816SJohn Birrelldtrace=$1 62*2be1a816SJohn Birrelldtraceout=/tmp/dtrace.out.$$ 63*2be1a816SJohn Birrellscript & 64*2be1a816SJohn Birrellscript=$! 65*2be1a816SJohn Birrelltimeout=15 66*2be1a816SJohn Birrell 67*2be1a816SJohn Birrell# 68*2be1a816SJohn Birrell# Sleep while the above script fires into life. To guard against dtrace dying 69*2be1a816SJohn Birrell# and us sleeping forever we allow 15 secs for this to happen. This should be 70*2be1a816SJohn Birrell# enough for even the slowest systems. 71*2be1a816SJohn Birrell# 72*2be1a816SJohn Birrellwhile [ ! -f $dtraceout ]; do 73*2be1a816SJohn Birrell sleep 1 74*2be1a816SJohn Birrell timeout=$(($timeout-1)) 75*2be1a816SJohn Birrell if [ $timeout -eq 0 ]; then 76*2be1a816SJohn Birrell echo "dtrace failed to start. Exiting." 77*2be1a816SJohn Birrell exit 1 78*2be1a816SJohn Birrell fi 79*2be1a816SJohn Birrelldone 80*2be1a816SJohn Birrell 81*2be1a816SJohn Birrellmdbdoit 82*2be1a816SJohn Birrell 83*2be1a816SJohn Birrellrm $dtraceout 84*2be1a816SJohn Birrell 85*2be1a816SJohn Birrellexit $status 86