xref: /illumos-gate/usr/src/cmd/dtrace/test/tst/common/speculation/tst.DiscardAftDiscard.d (revision 73b80b821da76082173547dd650e417f6916eb8b)
19512fe85Sahl /*
29512fe85Sahl  * CDDL HEADER START
39512fe85Sahl  *
49512fe85Sahl  * The contents of this file are subject to the terms of the
59512fe85Sahl  * Common Development and Distribution License (the "License").
69512fe85Sahl  * You may not use this file except in compliance with the License.
79512fe85Sahl  *
89512fe85Sahl  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
99512fe85Sahl  * or http://www.opensolaris.org/os/licensing.
109512fe85Sahl  * See the License for the specific language governing permissions
119512fe85Sahl  * and limitations under the License.
129512fe85Sahl  *
139512fe85Sahl  * When distributing Covered Code, include this CDDL HEADER in each
149512fe85Sahl  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
159512fe85Sahl  * If applicable, add the following below this CDDL HEADER, with the
169512fe85Sahl  * fields enclosed by brackets "[]" replaced with your own identifying
179512fe85Sahl  * information: Portions Copyright [yyyy] [name of copyright owner]
189512fe85Sahl  *
199512fe85Sahl  * CDDL HEADER END
209512fe85Sahl  */
219512fe85Sahl 
229512fe85Sahl /*
23*bd0f52d7Sjhaslam  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
249512fe85Sahl  * Use is subject to license terms.
259512fe85Sahl  */
269512fe85Sahl 
279512fe85Sahl /*
289512fe85Sahl  * ASSERTION:
299512fe85Sahl  * Can call discard on an already discarded buffer.
309512fe85Sahl  *
319512fe85Sahl  * SECTION: Speculative Tracing/Discarding a Speculation;
329512fe85Sahl  *	Options and Tunables/cleanrate
339512fe85Sahl  *
349512fe85Sahl  */
359512fe85Sahl #pragma D option quiet
36*bd0f52d7Sjhaslam #pragma D option cleanrate=3000hz
379512fe85Sahl 
389512fe85Sahl BEGIN
399512fe85Sahl {
409512fe85Sahl 	self->i = 0;
419512fe85Sahl 	self->discard1 = 0;
429512fe85Sahl 	self->discard2 = 0;
439512fe85Sahl 	var1 = speculation();
449512fe85Sahl 	printf("Speculation ID: %d\n", var1);
459512fe85Sahl }
469512fe85Sahl 
479512fe85Sahl BEGIN
489512fe85Sahl /var1/
499512fe85Sahl {
509512fe85Sahl 	speculate(var1);
519512fe85Sahl 	printf("This statement and the following are speculative!!\n");
529512fe85Sahl 	printf("Speculating on id: %d\n", var1);
539512fe85Sahl 	self->i++;
549512fe85Sahl }
559512fe85Sahl 
569512fe85Sahl BEGIN
579512fe85Sahl /(self->i)/
589512fe85Sahl {
599512fe85Sahl 	discard(var1);
609512fe85Sahl 	self->discard1++;
619512fe85Sahl 	discard(var1);
629512fe85Sahl 	self->discard2++;
639512fe85Sahl }
649512fe85Sahl 
659512fe85Sahl BEGIN
669512fe85Sahl /(self->discard2) && (self->discard1)/
679512fe85Sahl {
689512fe85Sahl 	printf("Discarded a discarded buffer\n");
699512fe85Sahl 	exit(0);
709512fe85Sahl }
719512fe85Sahl 
729512fe85Sahl 
739512fe85Sahl BEGIN
749512fe85Sahl /(!self->discard2) || (!self->discard1)/
759512fe85Sahl {
769512fe85Sahl 	printf("Couldnt discard a discarded buffer\n");
779512fe85Sahl 	exit(1);
789512fe85Sahl }
799512fe85Sahl 
809512fe85Sahl ERROR
819512fe85Sahl {
829512fe85Sahl 	exit(1);
839512fe85Sahl }
84