xref: /illumos-gate/usr/src/cmd/dtrace/test/tst/common/cpc/tst.platformevent.ksh (revision 24fe0b3bf671e123467ce1df0b67cadd3614c8e4)
1#!/bin/ksh
2#
3# CDDL HEADER START
4#
5# The contents of this file are subject to the terms of the
6# Common Development and Distribution License (the "License").
7# You may not use this file except in compliance with the License.
8#
9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10# or http://www.opensolaris.org/os/licensing.
11# See the License for the specific language governing permissions
12# and limitations under the License.
13#
14# When distributing Covered Code, include this CDDL HEADER in each
15# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16# If applicable, add the following below this CDDL HEADER, with the
17# fields enclosed by brackets "[]" replaced with your own identifying
18# information: Portions Copyright [yyyy] [name of copyright owner]
19#
20# CDDL HEADER END
21#
22
23#
24# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
25# Use is subject to license terms.
26#
27
28#
29# This script ensures that we can enable a probe which specifies a platform
30# specific event.
31#
32
33if [ $# != 1 ]; then
34        print -u2 "expected one argument: <dtrace-path>"
35        exit 2
36fi
37
38dtrace=$1
39
40get_event()
41{
42        perl /dev/stdin /dev/stdout << EOF
43        open CPUSTAT, '/usr/sbin/cpustat -h |'
44            or die  "Couldn't run cpustat: \$!\n";
45        while (<CPUSTAT>) {
46                if (/(\s+)event\[*[0-9]-*[0-9]*\]*:/ && !/PAPI/) {
47                        @a = split(/ /, \$_);
48                        \$event = \$a[\$#a-1];
49                }
50        }
51
52        close CPUSTAT;
53        print "\$event\n";
54EOF
55}
56
57script()
58{
59        $dtrace -s /dev/stdin << EOD
60        #pragma D option quiet
61        #pragma D option bufsize=128k
62
63        cpc:::$1-all-10000
64        {
65                @[probename] = count();
66        }
67
68        tick-1s
69        /n++ > 5/
70        {
71                exit(0);
72        }
73EOD
74}
75
76event=$(get_event)
77script $event
78
79status=$?
80
81exit $status
82