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