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