1*7d5c9b5fSBryan Cantrill# 2*7d5c9b5fSBryan Cantrill# CDDL HEADER START 3*7d5c9b5fSBryan Cantrill# 4*7d5c9b5fSBryan Cantrill# The contents of this file are subject to the terms of the 5*7d5c9b5fSBryan Cantrill# Common Development and Distribution License (the "License"). 6*7d5c9b5fSBryan Cantrill# You may not use this file except in compliance with the License. 7*7d5c9b5fSBryan Cantrill# 8*7d5c9b5fSBryan Cantrill# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*7d5c9b5fSBryan Cantrill# or http://www.opensolaris.org/os/licensing. 10*7d5c9b5fSBryan Cantrill# See the License for the specific language governing permissions 11*7d5c9b5fSBryan Cantrill# and limitations under the License. 12*7d5c9b5fSBryan Cantrill# 13*7d5c9b5fSBryan Cantrill# When distributing Covered Code, include this CDDL HEADER in each 14*7d5c9b5fSBryan Cantrill# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*7d5c9b5fSBryan Cantrill# If applicable, add the following below this CDDL HEADER, with the 16*7d5c9b5fSBryan Cantrill# fields enclosed by brackets "[]" replaced with your own identifying 17*7d5c9b5fSBryan Cantrill# information: Portions Copyright [yyyy] [name of copyright owner] 18*7d5c9b5fSBryan Cantrill# 19*7d5c9b5fSBryan Cantrill# CDDL HEADER END 20*7d5c9b5fSBryan Cantrill# 21*7d5c9b5fSBryan Cantrill 22*7d5c9b5fSBryan Cantrill# 23*7d5c9b5fSBryan Cantrill# Copyright (c) 2011, Joyent, Inc. All rights reserved. 24*7d5c9b5fSBryan Cantrill# 25*7d5c9b5fSBryan Cantrill 26*7d5c9b5fSBryan Cantrillppriv -s A=basic,dtrace_user $$ 27*7d5c9b5fSBryan Cantrill 28*7d5c9b5fSBryan Cantrill# 29*7d5c9b5fSBryan Cantrill# We expect at least one of these tick probes to error out because only 30*7d5c9b5fSBryan Cantrill# dtrace_user is set, and we are attempting to access arguments. Note that 31*7d5c9b5fSBryan Cantrill# this test will fail if something is stuck on CPU that whomever is running 32*7d5c9b5fSBryan Cantrill# the test happens to own. 33*7d5c9b5fSBryan Cantrill# 34*7d5c9b5fSBryan Cantrill/usr/sbin/dtrace -q -s /dev/stdin <<EOF 35*7d5c9b5fSBryan CantrillBEGIN 36*7d5c9b5fSBryan Cantrill{ 37*7d5c9b5fSBryan Cantrill start = timestamp; 38*7d5c9b5fSBryan Cantrill} 39*7d5c9b5fSBryan Cantrill 40*7d5c9b5fSBryan Cantrilltick-1000hz 41*7d5c9b5fSBryan Cantrill{ 42*7d5c9b5fSBryan Cantrill @[arg0] = count(); 43*7d5c9b5fSBryan Cantrill} 44*7d5c9b5fSBryan Cantrill 45*7d5c9b5fSBryan CantrillERROR 46*7d5c9b5fSBryan Cantrill{ 47*7d5c9b5fSBryan Cantrill errcnt++; 48*7d5c9b5fSBryan Cantrill} 49*7d5c9b5fSBryan Cantrill 50*7d5c9b5fSBryan Cantrilltick-10ms 51*7d5c9b5fSBryan Cantrill{ 52*7d5c9b5fSBryan Cantrill ticks++; 53*7d5c9b5fSBryan Cantrill} 54*7d5c9b5fSBryan Cantrill 55*7d5c9b5fSBryan Cantrilltick-10ms 56*7d5c9b5fSBryan Cantrill/ticks > 100/ 57*7d5c9b5fSBryan Cantrill{ 58*7d5c9b5fSBryan Cantrill printf("error count is %d\n", errcnt); 59*7d5c9b5fSBryan Cantrill exit(errcnt != 0 ? 0 : 1); 60*7d5c9b5fSBryan Cantrill} 61*7d5c9b5fSBryan CantrillEOF 62