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 
27 /*
28  * ASSERTION: make sure fork(2) is okay
29  *
30  * SECTION: pid provider
31  */
32 
33 #pragma D option destructive
34 
35 pid$1:a.out:waiting:entry
36 {
37 	this->value = (int *)alloca(sizeof (int));
38 	*this->value = 1;
39 	copyout(this->value, arg0, sizeof (int));
40 }
41 
42 proc:::create
43 /pid == $1/
44 {
45 	child = args[0]->pr_pid;
46 	trace(pid);
47 }
48 
49 pid$1:a.out:go:
50 /pid == child/
51 {
52 	trace("wrong pid");
53 	exit(1);
54 }
55 
56 proc:::exit
57 /pid == $1 || pid == child/
58 {
59 	out++;
60 	trace(pid);
61 }
62 
63 proc:::exit
64 /out == 2/
65 {
66 	exit(0);
67 }
68 
69 
70 BEGIN
71 {
72 	/*
73 	 * Let's just do this for 5 seconds.
74 	 */
75 	timeout = timestamp + 5000000000;
76 }
77 
78 profile:::tick-4
79 /timestamp > timeout/
80 {
81 	trace("test timed out");
82 	exit(1);
83 }
84 
85