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