dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl#!/usr/bin/ksh
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl#
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# CDDL HEADER START
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl#
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# The contents of this file are subject to the terms of the
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# Common Development and Distribution License (the "License").
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# You may not use this file except in compliance with the License.
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl#
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# or http://www.opensolaris.org/os/licensing.
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# See the License for the specific language governing permissions
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# and limitations under the License.
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl#
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# When distributing Covered Code, include this CDDL HEADER in each
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# If applicable, add the following below this CDDL HEADER, with the
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# fields enclosed by brackets "[]" replaced with your own identifying
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# information: Portions Copyright [yyyy] [name of copyright owner]
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl#
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# CDDL HEADER END
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl#
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl#
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# Use is subject to license terms.
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl#
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# ident "%Z%%M% %I% %E% SMI"
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl#
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahlif [ $# != 1 ]; then
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl echo expected one argument: '<'dtrace-path'>'
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl exit 2
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahlfi
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahldtrace=$1
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl#
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# Test that we don't deadlock between forking and enabling/disabling USDT
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl# probes. This test has succeeded if it completes at all.
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl#
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl./tst.forker.exe &
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahlid=$!
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahlwhile kill -0 $id >/dev/null 2>&1; do
038dc6b3d39a14038605fbb3fc6a9bb76dd27fa8ahl $dtrace -p $id -s /dev/stdin <<-EOF
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl forker*:::fire
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl /i++ == 4/
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl {
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl exit(0);
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl }
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl EOF
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahldone
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahl
dcafa303bc5c0028c4ebf51300caac6e2ea88d74ahlexit 0