1#
2# CDDL HEADER START
3#
4# The contents of this file are subject to the terms of the
5# Common Development and Distribution License (the "License").
6# You may not use this file except in compliance with the License.
7#
8# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9# or http://www.opensolaris.org/os/licensing.
10# See the License for the specific language governing permissions
11# and limitations under the License.
12#
13# When distributing Covered Code, include this CDDL HEADER in each
14# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15# If applicable, add the following below this CDDL HEADER, with the
16# fields enclosed by brackets "[]" replaced with your own identifying
17# information: Portions Copyright [yyyy] [name of copyright owner]
18#
19# CDDL HEADER END
20#
21
22#
23# Copyright (c) 2011, Joyent, Inc. All rights reserved.
24#
25
26ppriv -s A=basic,dtrace_user $$
27
28#
29# We expect some number of these profile probes to be silently dropped.
30# Note that this test will fail if something is stuck on all CPUs that
31# whomever is running the test happens to own.
32#
33count=$(/usr/sbin/dtrace -q -s /dev/stdin <<EOF
34BEGIN
35{
36	start = timestamp;
37	@ = count();
38}
39
40ERROR
41{
42	exit(1);
43}
44
45profile-1000hz
46{
47	@ = count();
48}
49
50tick-10ms
51{
52	ticks++;
53}
54
55tick-10ms
56/ticks > 100/
57{
58	printa("%@d", @);
59	exit(0);
60}
61EOF)
62
63cpus=`psrinfo | grep -- on-line | wc -l`
64max=`expr $cpus \* 500`
65
66if [[ $count -gt $max ]]; then
67	echo "count ($count) is greater than allowed max ($max)"
68	exit 1
69fi
70
71echo "count ($count) is within allowed max ($max)"
72exit 0
73