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