Mercurial > illumos > onarm
annotate usr/src/cmd/dtrace/test/tst/common/proc/tst.signal.ksh @ 4:1a15d5aaf794
synchronized with onnv_86 (6202) in onnv-gate
author | Koji Uno <koji.uno@sun.com> |
---|---|
date | Mon, 31 Aug 2009 14:38:03 +0900 |
parents | c9caec207d52 |
children |
rev | line source |
---|---|
0 | 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 2007 Sun Microsystems, Inc. All rights reserved. | |
24 # Use is subject to license terms. | |
25 # | |
4
1a15d5aaf794
synchronized with onnv_86 (6202) in onnv-gate
Koji Uno <koji.uno@sun.com>
parents:
0
diff
changeset
|
26 # ident "%Z%%M% %I% %E% SMI" |
0 | 27 |
28 # | |
29 # This script tests that the proc:::signal-send and proc:::signal-handle | |
30 # probes fire correctly and with the correct arguments. | |
31 # | |
32 # If this fails, the script will run indefinitely; it relies on the harness | |
33 # to time it out. | |
34 # | |
35 script() | |
36 { | |
37 $dtrace -s /dev/stdin <<EOF | |
38 proc:::signal-send | |
39 /execname == "kill" && curpsinfo->pr_ppid == $child && | |
40 args[1]->pr_psargs == "$longsleep" && args[2] == SIGUSR1/ | |
41 { | |
42 /* | |
43 * This is guaranteed to not race with signal-handle. | |
44 */ | |
45 target = args[1]->pr_pid; | |
46 } | |
47 | |
48 proc:::signal-handle | |
49 /target == pid && args[0] == SIGUSR1/ | |
50 { | |
51 exit(0); | |
52 } | |
53 EOF | |
54 } | |
55 | |
56 sleeper() | |
57 { | |
58 while true; do | |
59 $longsleep & | |
60 sleep 1 | |
61 /usr/bin/kill -USR1 $! | |
62 done | |
63 } | |
64 | |
65 if [ $# != 1 ]; then | |
66 echo expected one argument: '<'dtrace-path'>' | |
67 exit 2 | |
68 fi | |
69 | |
70 dtrace=$1 | |
71 longsleep="/usr/bin/sleep 10000" | |
72 | |
73 sleeper & | |
74 child=$! | |
75 | |
76 script | |
77 status=$? | |
78 | |
79 pstop $child | |
80 pkill -P $child | |
81 kill $child | |
82 prun $child | |
83 | |
84 exit $status |