xref: /illumos-gate/usr/src/cmd/dtrace/test/tst/common/cpc/err.cputrackfailtostart.ksh (revision bbf215553c7233fbab8a0afdf1fac74c44781867)
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