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# This script ensures that cputrack(1) will terminate when the cpc provider
29*b9e93c10SJonathan Haslam# kicks into life.
30*b9e93c10SJonathan Haslam#
31*b9e93c10SJonathan Haslam# The script will fail if:
32*b9e93c10SJonathan Haslam#	1) The system under test does not define the 'PAPI_tot_ins' event.
33*b9e93c10SJonathan Haslam#
34*b9e93c10SJonathan Haslam
35*b9e93c10SJonathan Haslamscript()
36*b9e93c10SJonathan Haslam{
37*b9e93c10SJonathan Haslam	$dtrace -s /dev/stdin <<EOF
38*b9e93c10SJonathan Haslam	#pragma D option bufsize=128k
39*b9e93c10SJonathan Haslam
40*b9e93c10SJonathan Haslam	cpc:::PAPI_tot_ins-all-10000
41*b9e93c10SJonathan Haslam	{
42*b9e93c10SJonathan Haslam		@[probename] = count();
43*b9e93c10SJonathan Haslam	}
44*b9e93c10SJonathan Haslam
45*b9e93c10SJonathan Haslam	tick-1s
46*b9e93c10SJonathan Haslam	/n++ > 10/
47*b9e93c10SJonathan Haslam	{
48*b9e93c10SJonathan Haslam		exit(0);
49*b9e93c10SJonathan Haslam	}
50*b9e93c10SJonathan HaslamEOF
51*b9e93c10SJonathan Haslam}
52*b9e93c10SJonathan Haslam
53*b9e93c10SJonathan Haslamif [ $# != 1 ]; then
54*b9e93c10SJonathan Haslam        echo expected one argument: '<'dtrace-path'>'
55*b9e93c10SJonathan Haslam        exit 2
56*b9e93c10SJonathan Haslamfi
57*b9e93c10SJonathan Haslam
58*b9e93c10SJonathan Haslamdtrace=$1
59*b9e93c10SJonathan Haslam
60*b9e93c10SJonathan Haslamcputrack -c PAPI_tot_ins sleep 20 &
61*b9e93c10SJonathan Haslamcputrack_pid=$!
62*b9e93c10SJonathan Haslamsleep 5
63*b9e93c10SJonathan Haslamscript 2>/dev/null &
64*b9e93c10SJonathan Haslam
65*b9e93c10SJonathan Haslamwait $cputrack_pid
66*b9e93c10SJonathan Haslamstatus=$?
67*b9e93c10SJonathan Haslam
68*b9e93c10SJonathan Haslamrm $dtraceout
69*b9e93c10SJonathan Haslam
70*b9e93c10SJonathan Haslamexit $status
71