xref: /onnv-gate/usr/src/cmd/dtrace/test/tst/common/docsExamples/specopen.d (revision 2633:71bab08d24b2)
1*2633Sahl #!/usr/sbin/dtrace -Fs
2*2633Sahl 
3*2633Sahl 
4*2633Sahl /*
5*2633Sahl  * CDDL HEADER START
6*2633Sahl  *
7*2633Sahl  * The contents of this file are subject to the terms of the
8*2633Sahl  * Common Development and Distribution License (the "License").
9*2633Sahl  * You may not use this file except in compliance with the License.
10*2633Sahl  *
11*2633Sahl  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
12*2633Sahl  * or http://www.opensolaris.org/os/licensing.
13*2633Sahl  * See the License for the specific language governing permissions
14*2633Sahl  * and limitations under the License.
15*2633Sahl  *
16*2633Sahl  * When distributing Covered Code, include this CDDL HEADER in each
17*2633Sahl  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
18*2633Sahl  * If applicable, add the following below this CDDL HEADER, with the
19*2633Sahl  * fields enclosed by brackets "[]" replaced with your own identifying
20*2633Sahl  * information: Portions Copyright [yyyy] [name of copyright owner]
21*2633Sahl  *
22*2633Sahl  * CDDL HEADER END
23*2633Sahl  */
24*2633Sahl 
25*2633Sahl /*
26*2633Sahl  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
27*2633Sahl  * Use is subject to license terms.
28*2633Sahl  */
29*2633Sahl 
30*2633Sahl #pragma	ident	"%Z%%M%	%I%	%E% SMI"
31*2633Sahl 
32*2633Sahl /*
33*2633Sahl  * ASSERTION:
34*2633Sahl  *	Verify doc example 13-1
35*2633Sahl  *
36*2633Sahl  * SECTION:
37*2633Sahl  *	DocExamples/specopen
38*2633Sahl  */
39*2633Sahl 
40*2633Sahl syscall::open:entry,
41*2633Sahl syscall::open64:entry
42*2633Sahl {
43*2633Sahl 	self->spec = speculation();
44*2633Sahl 	speculate(self->spec);
45*2633Sahl 
46*2633Sahl 	printf("%s", stringof(copyinstr(arg0)));
47*2633Sahl }
48*2633Sahl 
49*2633Sahl fbt:::
50*2633Sahl /self->spec/
51*2633Sahl {
52*2633Sahl 	speculate(self->spec);
53*2633Sahl }
54*2633Sahl 
55*2633Sahl syscall::open:return,
56*2633Sahl syscall::open64:return
57*2633Sahl /self->spec/
58*2633Sahl {
59*2633Sahl 	speculate(self->spec);
60*2633Sahl 	trace(errno);
61*2633Sahl }
62*2633Sahl 
63*2633Sahl syscall::open:return,
64*2633Sahl syscall::open64:return
65*2633Sahl /self->spec && errno != 0/
66*2633Sahl {
67*2633Sahl 	commit(self->spec);
68*2633Sahl 	self->spec = 0;
69*2633Sahl }
70*2633Sahl 
71*2633Sahl syscall::open:return,
72*2633Sahl syscall::open64:return
73*2633Sahl /self->spec && errno == 0/
74*2633Sahl {
75*2633Sahl 	discard(self->spec);
76*2633Sahl 	self->spec = 0;
77*2633Sahl }
78*2633Sahl 
79*2633Sahl 
80