1*b9e93c10SJonathan Haslam#!/bin/ksh 2*b9e93c10SJonathan Haslam# 3*b9e93c10SJonathan Haslam# CDDL HEADER START 4*b9e93c10SJonathan Haslam# 5*b9e93c10SJonathan Haslam# The contents of this file are subject to the terms of the 6*b9e93c10SJonathan Haslam# Common Development and Distribution License (the "License"). 7*b9e93c10SJonathan Haslam# You may not use this file except in compliance with the License. 8*b9e93c10SJonathan Haslam# 9*b9e93c10SJonathan Haslam# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*b9e93c10SJonathan Haslam# or http://www.opensolaris.org/os/licensing. 11*b9e93c10SJonathan Haslam# See the License for the specific language governing permissions 12*b9e93c10SJonathan Haslam# and limitations under the License. 13*b9e93c10SJonathan Haslam# 14*b9e93c10SJonathan Haslam# When distributing Covered Code, include this CDDL HEADER in each 15*b9e93c10SJonathan Haslam# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*b9e93c10SJonathan Haslam# If applicable, add the following below this CDDL HEADER, with the 17*b9e93c10SJonathan Haslam# fields enclosed by brackets "[]" replaced with your own identifying 18*b9e93c10SJonathan Haslam# information: Portions Copyright [yyyy] [name of copyright owner] 19*b9e93c10SJonathan Haslam# 20*b9e93c10SJonathan Haslam# CDDL HEADER END 21*b9e93c10SJonathan Haslam# 22*b9e93c10SJonathan Haslam 23*b9e93c10SJonathan Haslam# 24*b9e93c10SJonathan Haslam# Copyright 2009 Sun Microsystems, Inc. All rights reserved. 25*b9e93c10SJonathan Haslam# Use is subject to license terms. 26*b9e93c10SJonathan Haslam# 27*b9e93c10SJonathan Haslam 28*b9e93c10SJonathan Haslam 29*b9e93c10SJonathan Haslam# 30*b9e93c10SJonathan Haslam# This tests that cpustat(1) should fail to start if the cpc provider 31*b9e93c10SJonathan Haslam# is already calling the shots. 32*b9e93c10SJonathan Haslam# 33*b9e93c10SJonathan Haslam# This script will fail if: 34*b9e93c10SJonathan Haslam# 1) The system under test does not define the 'PAPI_tot_ins' 35*b9e93c10SJonathan Haslam# generic event. 36*b9e93c10SJonathan Haslam 37*b9e93c10SJonathan Haslamscript() 38*b9e93c10SJonathan Haslam{ 39*b9e93c10SJonathan Haslam $dtrace -o $dtraceout -s /dev/stdin <<EOF 40*b9e93c10SJonathan Haslam #pragma D option bufsize=128k 41*b9e93c10SJonathan Haslam 42*b9e93c10SJonathan Haslam cpc:::PAPI_tot_ins-all-10000 43*b9e93c10SJonathan Haslam { 44*b9e93c10SJonathan Haslam @[probename] = count(); 45*b9e93c10SJonathan Haslam } 46*b9e93c10SJonathan HaslamEOF 47*b9e93c10SJonathan Haslam} 48*b9e93c10SJonathan Haslam 49*b9e93c10SJonathan Haslamif [ $# != 1 ]; then 50*b9e93c10SJonathan Haslam echo expected one argument: '<'dtrace-path'>' 51*b9e93c10SJonathan Haslam exit 2 52*b9e93c10SJonathan Haslamfi 53*b9e93c10SJonathan Haslam 54*b9e93c10SJonathan Haslamdtrace=$1 55*b9e93c10SJonathan Haslamdtraceout=/tmp/dtrace.out.$$ 56*b9e93c10SJonathan Haslamscript 2>/dev/null & 57*b9e93c10SJonathan Haslamtimeout=15 58*b9e93c10SJonathan Haslam 59*b9e93c10SJonathan Haslam# 60*b9e93c10SJonathan Haslam# Sleep while the above script fires into life. To guard against dtrace dying 61*b9e93c10SJonathan Haslam# and us sleeping forever we allow 15 secs for this to happen. This should be 62*b9e93c10SJonathan Haslam# enough for even the slowest systems. 63*b9e93c10SJonathan Haslam# 64*b9e93c10SJonathan Haslamwhile [ ! -f $dtraceout ]; do 65*b9e93c10SJonathan Haslam sleep 1 66*b9e93c10SJonathan Haslam timeout=$(($timeout-1)) 67*b9e93c10SJonathan Haslam if [ $timeout -eq 0 ]; then 68*b9e93c10SJonathan Haslam echo "dtrace failed to start. Exiting." 69*b9e93c10SJonathan Haslam exit 1 70*b9e93c10SJonathan Haslam fi 71*b9e93c10SJonathan Haslamdone 72*b9e93c10SJonathan Haslam 73*b9e93c10SJonathan Haslamcpustat -c PAPI_tot_ins 1 5 74*b9e93c10SJonathan Haslamstatus=$? 75*b9e93c10SJonathan Haslam 76*b9e93c10SJonathan Haslamrm $dtraceout 77*b9e93c10SJonathan Haslam 78*b9e93c10SJonathan Haslamexit $status 79