]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.startexit.ksh
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / cddl / contrib / opensolaris / cmd / dtrace / test / tst / common / proc / tst.startexit.ksh
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 #
26 # ident "%Z%%M% %I%     %E% SMI"
27
28 #
29 # This script tests that the firing order of probes in a process is:
30
31 #  1.  proc:::start
32 #  2.  proc:::lwp-start
33 #  3.  proc:::lwp-exit
34 #  4.  proc:::exit
35 #
36 # If this fails, the script will run indefinitely; it relies on the harness
37 # to time it out.
38 #
39 script()
40 {
41         $dtrace -s /dev/stdin <<EOF
42         proc:::start
43         /curpsinfo->pr_ppid == $child/
44         {
45                 self->start = 1;
46         }
47
48         proc:::lwp-start
49         /self->start/
50         {
51                 self->lwp_start = 1;
52         }
53
54         proc:::lwp-exit
55         /self->lwp_start/
56         {
57                 self->lwp_exit = 1;
58         }
59
60         proc:::exit
61         /self->lwp_exit == 1/
62         {
63                 exit(0);
64         }
65 EOF
66 }
67
68 sleeper()
69 {
70         while true; do
71                 /usr/bin/sleep 1
72         done
73 }
74
75 if [ $# != 1 ]; then
76         echo expected one argument: '<'dtrace-path'>'
77         exit 2
78 fi
79
80 dtrace=$1
81
82 sleeper &
83 child=$!
84
85 script
86 status=$?
87
88 kill $child
89 exit $status