1*8803SJonathan.Haslam@Sun.COM#!/bin/ksh -p
2*8803SJonathan.Haslam@Sun.COM#
3*8803SJonathan.Haslam@Sun.COM# CDDL HEADER START
4*8803SJonathan.Haslam@Sun.COM#
5*8803SJonathan.Haslam@Sun.COM# The contents of this file are subject to the terms of the
6*8803SJonathan.Haslam@Sun.COM# Common Development and Distribution License (the "License").
7*8803SJonathan.Haslam@Sun.COM# You may not use this file except in compliance with the License.
8*8803SJonathan.Haslam@Sun.COM#
9*8803SJonathan.Haslam@Sun.COM# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*8803SJonathan.Haslam@Sun.COM# or http://www.opensolaris.org/os/licensing.
11*8803SJonathan.Haslam@Sun.COM# See the License for the specific language governing permissions
12*8803SJonathan.Haslam@Sun.COM# and limitations under the License.
13*8803SJonathan.Haslam@Sun.COM#
14*8803SJonathan.Haslam@Sun.COM# When distributing Covered Code, include this CDDL HEADER in each
15*8803SJonathan.Haslam@Sun.COM# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*8803SJonathan.Haslam@Sun.COM# If applicable, add the following below this CDDL HEADER, with the
17*8803SJonathan.Haslam@Sun.COM# fields enclosed by brackets "[]" replaced with your own identifying
18*8803SJonathan.Haslam@Sun.COM# information: Portions Copyright [yyyy] [name of copyright owner]
19*8803SJonathan.Haslam@Sun.COM#
20*8803SJonathan.Haslam@Sun.COM# CDDL HEADER END
21*8803SJonathan.Haslam@Sun.COM#
22*8803SJonathan.Haslam@Sun.COM
23*8803SJonathan.Haslam@Sun.COM#
24*8803SJonathan.Haslam@Sun.COM# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
25*8803SJonathan.Haslam@Sun.COM# Use is subject to license terms.
26*8803SJonathan.Haslam@Sun.COM#
27*8803SJonathan.Haslam@Sun.COM
28*8803SJonathan.Haslam@Sun.COM
29*8803SJonathan.Haslam@Sun.COM#
30*8803SJonathan.Haslam@Sun.COM# This tests that enablings from the cpc provider will fail if cpustat(1) is
31*8803SJonathan.Haslam@Sun.COM# already master of the universe.
32*8803SJonathan.Haslam@Sun.COM#
33*8803SJonathan.Haslam@Sun.COM# This script will fail if:
34*8803SJonathan.Haslam@Sun.COM#       1) The system under test does not define the 'PAPI_tot_ins'
35*8803SJonathan.Haslam@Sun.COM#       generic event.
36*8803SJonathan.Haslam@Sun.COM
37*8803SJonathan.Haslam@Sun.COMscript()
38*8803SJonathan.Haslam@Sun.COM{
39*8803SJonathan.Haslam@Sun.COM        $dtrace -s /dev/stdin <<EOF
40*8803SJonathan.Haslam@Sun.COM        #pragma D option bufsize=128k
41*8803SJonathan.Haslam@Sun.COM
42*8803SJonathan.Haslam@Sun.COM        BEGIN
43*8803SJonathan.Haslam@Sun.COM        {
44*8803SJonathan.Haslam@Sun.COM                exit(0);
45*8803SJonathan.Haslam@Sun.COM        }
46*8803SJonathan.Haslam@Sun.COM
47*8803SJonathan.Haslam@Sun.COM        cpc:::PAPI_tot_ins-all-10000
48*8803SJonathan.Haslam@Sun.COM        {
49*8803SJonathan.Haslam@Sun.COM                @[probename] = count();
50*8803SJonathan.Haslam@Sun.COM        }
51*8803SJonathan.Haslam@Sun.COMEOF
52*8803SJonathan.Haslam@Sun.COM}
53*8803SJonathan.Haslam@Sun.COM
54*8803SJonathan.Haslam@Sun.COMif [ $# != 1 ]; then
55*8803SJonathan.Haslam@Sun.COM        echo expected one argument: '<'dtrace-path'>'
56*8803SJonathan.Haslam@Sun.COM        exit 2
57*8803SJonathan.Haslam@Sun.COMfi
58*8803SJonathan.Haslam@Sun.COM
59*8803SJonathan.Haslam@Sun.COMdtrace=$1
60*8803SJonathan.Haslam@Sun.COMdtraceout=/tmp/dtrace.out.$$
61*8803SJonathan.Haslam@Sun.COM
62*8803SJonathan.Haslam@Sun.COMcpustat -c PAPI_tot_ins 1 20 &
63*8803SJonathan.Haslam@Sun.COMpid=$!
64*8803SJonathan.Haslam@Sun.COMsleep 5
65*8803SJonathan.Haslam@Sun.COMscript 2>/dev/null
66*8803SJonathan.Haslam@Sun.COM
67*8803SJonathan.Haslam@Sun.COMstatus=$?
68*8803SJonathan.Haslam@Sun.COM
69*8803SJonathan.Haslam@Sun.COMkill $pid
70*8803SJonathan.Haslam@Sun.COMexit $status
71