19512fe85Sahl# 29512fe85Sahl# CDDL HEADER START 39512fe85Sahl# 49512fe85Sahl# The contents of this file are subject to the terms of the 59512fe85Sahl# Common Development and Distribution License (the "License"). 69512fe85Sahl# You may not use this file except in compliance with the License. 79512fe85Sahl# 89512fe85Sahl# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 99512fe85Sahl# or http://www.opensolaris.org/os/licensing. 109512fe85Sahl# See the License for the specific language governing permissions 119512fe85Sahl# and limitations under the License. 129512fe85Sahl# 139512fe85Sahl# When distributing Covered Code, include this CDDL HEADER in each 149512fe85Sahl# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 159512fe85Sahl# If applicable, add the following below this CDDL HEADER, with the 169512fe85Sahl# fields enclosed by brackets "[]" replaced with your own identifying 179512fe85Sahl# information: Portions Copyright [yyyy] [name of copyright owner] 189512fe85Sahl# 199512fe85Sahl# CDDL HEADER END 209512fe85Sahl# 219512fe85Sahl 229512fe85Sahl# 23*bd0f52d7Sjhaslam# Copyright 2007 Sun Microsystems, Inc. All rights reserved. 249512fe85Sahl# Use is subject to license terms. 259512fe85Sahl# 26*bd0f52d7Sjhaslam# ident "%Z%%M% %I% %E% SMI" 279512fe85Sahl 289512fe85Sahl# 299512fe85Sahl# This script tests that the proc:::signal-send and proc:::signal-handle 309512fe85Sahl# probes fire correctly and with the correct arguments. 319512fe85Sahl# 329512fe85Sahl# If this fails, the script will run indefinitely; it relies on the harness 339512fe85Sahl# to time it out. 349512fe85Sahl# 359512fe85Sahlscript() 369512fe85Sahl{ 379512fe85Sahl $dtrace -s /dev/stdin <<EOF 389512fe85Sahl proc:::signal-send 399512fe85Sahl /execname == "kill" && curpsinfo->pr_ppid == $child && 409512fe85Sahl args[1]->pr_psargs == "$longsleep" && args[2] == SIGUSR1/ 419512fe85Sahl { 429512fe85Sahl /* 439512fe85Sahl * This is guaranteed to not race with signal-handle. 449512fe85Sahl */ 459512fe85Sahl target = args[1]->pr_pid; 469512fe85Sahl } 479512fe85Sahl 489512fe85Sahl proc:::signal-handle 499512fe85Sahl /target == pid && args[0] == SIGUSR1/ 509512fe85Sahl { 519512fe85Sahl exit(0); 529512fe85Sahl } 539512fe85SahlEOF 549512fe85Sahl} 559512fe85Sahl 569512fe85Sahlsleeper() 579512fe85Sahl{ 589512fe85Sahl while true; do 599512fe85Sahl $longsleep & 609512fe85Sahl sleep 1 619512fe85Sahl /usr/bin/kill -USR1 $! 629512fe85Sahl done 639512fe85Sahl} 649512fe85Sahl 6523b5c241Stomeeif [ $# != 1 ]; then 6623b5c241Stomee echo expected one argument: '<'dtrace-path'>' 6723b5c241Stomee exit 2 6823b5c241Stomeefi 6923b5c241Stomee 7023b5c241Stomeedtrace=$1 719512fe85Sahllongsleep="/usr/bin/sleep 10000" 729512fe85Sahl 739512fe85Sahlsleeper & 749512fe85Sahlchild=$! 759512fe85Sahl 769512fe85Sahlscript 779512fe85Sahlstatus=$? 789512fe85Sahl 799512fe85Sahlpstop $child 809512fe85Sahlpkill -P $child 819512fe85Sahlkill $child 829512fe85Sahlprun $child 839512fe85Sahl 849512fe85Sahlexit $status 85