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 2006 Sun Microsystems, Inc. All rights reserved. 24# Use is subject to license terms. 25# 26#ident "%Z%%M% %I% %E% SMI" 27 28# 29# This script attempts to tease out a race when probes are initially enabled. 30# 31script() 32{ 33 # 34 # Nauseatingly, the #defines below must be in the 0th column to 35 # satisfy the ancient cpp that -C defaults to. 36 # 37 dtrace -C -s /dev/stdin <<EOF 38#define PROF1 profile:::profile-4000hz 39#define PROF4 PROF1, PROF1, PROF1, PROF1 40#define PROF16 PROF4, PROF4, PROF4, PROF4 41#define PROF64 PROF16, PROF16, PROF16, PROF16 42#define PROF256 PROF64, PROF64, PROF64, PROF64 43#define PROF512 PROF256, PROF256 44 45 PROF1 46 { 47 this->x = 0; 48 } 49 50 PROF512 51 { 52 this->x++; 53 } 54 55 PROF1 56 /this->x != 512/ 57 { 58 printf("failed! x is %d (expected 512)", this->x); 59 exit(1); 60 } 61 62 tick-1sec 63 /secs++/ 64 { 65 exit(0); 66 } 67EOF 68} 69 70let i=0 71 72while [ "$i" -lt 20 ]; do 73 script 74 status=$? 75 76 if [ "$status" -ne 0 ]; then 77 exit $status 78 fi 79 80 let i=i+1 81done 82 83exit 0 84