fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/*
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * CDDL HEADER START
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * The contents of this file are subject to the terms of the
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Common Development and Distribution License (the "License").
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * You may not use this file except in compliance with the License.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * or http://www.opensolaris.org/os/licensing.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * See the License for the specific language governing permissions
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * and limitations under the License.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * When distributing Covered Code, include this CDDL HEADER in each
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * If applicable, add the following below this CDDL HEADER, with the
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * fields enclosed by brackets "[]" replaced with your own identifying
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * information: Portions Copyright [yyyy] [name of copyright owner]
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * CDDL HEADER END
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/*
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Use is subject to license terms.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * ident "%Z%%M% %I% %E% SMI"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeepackage org.opensolaris.os.dtrace;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeeimport java.io.Serializable;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeeimport java.io.ObjectInputStream;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeeimport java.io.InvalidObjectException;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeeimport java.io.IOException;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeeimport java.beans.*;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * A DTrace option and its value. Compile-time options must be set
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * before calling {@code Consumer} {@link Consumer#compile(String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * program, String[] macroArgs) compile(String program, ...)} or {@link
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Consumer#compile(File program, String[] macroArgs) compile(File
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * program, ...)} in order to affect program compilation. Runtime
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * options may be set anytime before calling {@code Consumer} {@link
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Consumer#go() go()}, and some of them may be changed while a consumer
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * is running.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * <p>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * See the <a
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * href=http://docs.sun.com/app/docs/doc/817-6223/6mlkidlis?a=view>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * <b>Options and Tunables</b></a> chapter of the <i>Solaris Dynamic
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Tracing Guide</i>.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * <p>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Immutable. Supports persistence using {@link java.beans.XMLEncoder}.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @author Tom Erickson
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeepublic final class Option implements Serializable {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee static final long serialVersionUID = 2734100173861424920L;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Value returned by {@link Consumer#getOption(String option)} when
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * the given boolean option is unset.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final long UNSET = -2L;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Value returned by {@link Consumer#getOption(String option)} for
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * the {@link #bufpolicy} option when the {@link #VALUE_RING ring}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * buffer policy is set.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final long BUFPOLICY_RING = 0L;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Value returned by {@link Consumer#getOption(String option)} for
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * the {@link #bufpolicy} option when the {@link #VALUE_FILL fill}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * buffer policy is set.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final long BUFPOLICY_FILL = 1L;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Value returned by {@link Consumer#getOption(String option)} for
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * the {@link #bufpolicy} option when the default {@link
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * #VALUE_SWITCH switch} buffer policy is set.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final long BUFPOLICY_SWITCH = 2L;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Value returned by {@link Consumer#getOption(String option)} for
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * the {@link #bufresize} option when the default {@link #VALUE_AUTO
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * auto} buffer resize policy is set.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final long BUFRESIZE_AUTO = 0L;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Value returned by {@link Consumer#getOption(String option)} for
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * the {@link #bufresize} option when the {@link #VALUE_MANUAL
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * manual} buffer resize policy is set.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final long BUFRESIZE_MANUAL = 1L;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee static {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee try {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee BeanInfo info = Introspector.getBeanInfo(Option.class);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee PersistenceDelegate persistenceDelegate =
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee new DefaultPersistenceDelegate(
52aacb450723e8271d37836e1b5861c2072a3981tomee new String[] {"name", "value"})
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /*
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Need to prevent DefaultPersistenceDelegate from using
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * overridden equals() method, resulting in a
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * StackOverFlowError. Revert to PersistenceDelegate
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * implementation. See
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * http://forum.java.sun.com/thread.jspa?threadID=
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * 477019&tstart=135
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee protected boolean
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee mutatesTo(Object oldInstance, Object newInstance)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (newInstance != null && oldInstance != null &&
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee oldInstance.getClass() == newInstance.getClass());
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee };
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee BeanDescriptor d = info.getBeanDescriptor();
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee d.setValue("persistenceDelegate", persistenceDelegate);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee } catch (IntrospectionException e) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee System.out.println(e);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee //
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee // See lib/libdtrace/common/dt_options.c
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee //
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Gets a size option value indicating the given number of
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * kilobytes.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @param n number of kilobytes
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @return size option value indicating the given number of
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * kilobytes
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee kb(int n)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (Integer.toString(n) + "k");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Gets a size option value indicating the given number of
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * megabytes.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @param n number of megabytes
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @return size option value indicating the given number of
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * megabytes
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee mb(int n)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (Integer.toString(n) + "m");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Gets a size option value indicating the given number of
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * gigabytes.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @param n number of gigabytes
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @return size option value indicating the given number of
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * gigabytes
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee gb(int n)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (Integer.toString(n) + "g");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Gets a size option value indicating the given number of
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * terabytes.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @param n number of terabytes
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @return size option value indicating the given number of
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * terabytes
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee tb(int n)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (Integer.toString(n) + "t");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Gets a time option value indicating the given number of
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * nanoseconds.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @param n number of nanoseconds
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @return time option value indicating the given number of
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * nanoseconds
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee nanos(int n)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (Integer.toString(n) + "ns");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Gets a time option value indicating the given number of
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * microseconds.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @param n number of microseconds
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @return time option value indicating the given number of
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * microseconds
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee micros(int n)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (Integer.toString(n) + "us");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Gets a time option value indicating the given number of
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * milliseconds.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @param n number of milliseconds
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @return time option value indicating the given number of
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * milliseconds
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee millis(int n)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (Integer.toString(n) + "ms");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Gets a time option value indicating the given number of seconds.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @param n number of seconds
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @return time option value indicating the given number of seconds
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee seconds(int n)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (Integer.toString(n) + "s");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Gets a time option value indicating the given number of minutes.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @param n number of minutes
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @return time option value indicating the given number of minutes
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee minutes(int n)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (Integer.toString(n) + "m");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Gets a time option value indicating the given number of hours.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @param n number of hours
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @return time option value indicating the given number of hours
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee hours(int n)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (Integer.toString(n) + "h");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Gets a time option value indicating the given number of days.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @param n number of days
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @return time option value indicating the given number of days
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee days(int n)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (Integer.toString(n) + "d");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Gets a time option value indicating the given rate per second.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @param n number of cycles per second (hertz)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @return time option value indicating rate per second
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee hz(int n)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (Integer.toString(n) + "hz");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * May be passed to {@link Consumer#setOption(String option, String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * value)} to set a boolean option such as {@link #flowindent}.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * However, a more convenient way to set boolean options is {@link
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Consumer#setOption(String option)}.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String VALUE_SET = "set";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * May be passed to {@link Consumer#setOption(String option, String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * value)} to unset a boolean option such as {@link #flowindent}.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * However, a more convenient way to unset boolean options is {@link
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Consumer#unsetOption(String option)}.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String VALUE_UNSET = "unset";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * {@link #bufpolicy} value: use {@code ring} princical buffer
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * policy.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String VALUE_RING = "ring";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * {@link #bufpolicy} value: use {@code fill} princical buffer
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * policy.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String VALUE_FILL = "fill";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * {@link #bufpolicy} default value: use {@code switch} princical
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * buffer policy.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String VALUE_SWITCH = "switch";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * {@link #bufresize} default value: use {@code auto} buffer
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * resizing policy.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String VALUE_AUTO = "auto";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * {@link #bufresize} value: use {@code manual} buffer resizing
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * policy.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String VALUE_MANUAL = "manual";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee //
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee // See lib/libdtrace/common/dt_options.c
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee //
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Set program attribute minimum (compile-time). The format of the
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * option value is defined by the {@link
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * InterfaceAttributes#toString()} method.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Program#getInfo()
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String amin = "amin";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Do not require all macro args to be used (compile-time; no option
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * value).
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Consumer#compile(String program, String[] macroArgs)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Consumer#compile(File program, String[] macroArgs)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String argref = "argref";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Run cpp(1) preprocessor on D script files (compile-time; no
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * option value).
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String cpp = "cpp";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Used together with {@link #cpp} option, specifies which {@code
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * cpp} to run by its pathname (compile-time).
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String cpppath = "cpppath";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Use zero (0) or empty string ("") as the value for unspecified macro args
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * (compile-time; no option value).
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Consumer#compile(String program, String[] macroArgs)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Consumer#compile(File program, String[] macroArgs)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String defaultargs = "defaultargs";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Define symbol when invoking preprocssor (compile-time).
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String define = "define";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Permit compilation of empty D source files (compile-time; no
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * option value).
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String empty = "empty";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Adds error tags to default error messages (compile-time; no
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * option value).
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String errtags = "errtags";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Add include directory to preprocessor search path (compile-time).
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String incdir = "incdir";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Permit unresolved kernel symbols (compile-time; no option value).
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String knodefs = "knodefs";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Add library directory to library search path (compile-time).
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String libdir = "libdir";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Specify ISO C conformance settings for preprocessor
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * (compile-time).
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String stdc = "stdc";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Undefine symbol when invoking preprocessor (compile-time).
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String undef = "undef";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Permit unresolved user symbols (compile-time; no option value).
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String unodefs = "unodefs";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Request specific version of native DTrace library (compile-time).
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String version = "version";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Permit probe definitions that match zero probes (compile-time; no
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * option value).
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String zdefs = "zdefs";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /** Rate of aggregation reading (time). Runtime option. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String aggrate = "aggrate";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /** Aggregation buffer size (size). Runtime option. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String aggsize = "aggsize";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Denotes that aggregation data should be sorted in tuple order,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * with ties broken by value order (no option value). Runtime
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * option.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see AggregationRecord
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Option#aggsortkeypos
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Option#aggsortpos
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Option#aggsortrev
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String aggsortkey = "aggsortkey";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * When multiple aggregation tuple elements are present, the
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * position of the tuple element that should act as the primary sort
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * key (zero-based index). Runtime option.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Option#aggsortkey
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Option#aggsortpos
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Option#aggsortrev
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String aggsortkeypos = "aggsortkeypos";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * When multiple aggregations are being printed, the position of the
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * aggregation that should act as the primary sort key (zero-based
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * index). Runtime option.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * <p>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Here "position" refers to the position of the aggregation in the
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * {@code printa()} argument list after the format string (if
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * any). For example, given the following statement:
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * <pre><code>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * printa("%d %@7d %@7d\n", @a, @b);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * </code></pre>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * setting {@code aggsortpos} to {@code "0"} indicates that output
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * should be sorted using the values of {@code @a} as the primary
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * sort key, while setting {@code aggsortpos} to {@code "1"}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * indicates that output should be sorted using the values of
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * {@code @b} as the primary sort key.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Option#aggsortkey
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Option#aggsortkeypos
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Option#aggsortrev
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String aggsortpos = "aggsortpos";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Denotes that aggregation data should be sorted in descending
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * order (no option value). Runtime option.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * <p>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * The {@code aggsortrev} option is useful in combination with the
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * {@code aggsortkey}, {@code aggsortkeypos}, and {@code aggsortpos}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * options, which define the ascending sort reversed by this option.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Option#aggsortkey
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Option#aggsortkeypos
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @see Option#aggsortpos
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String aggsortrev = "aggsortrev";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /** Principal buffer size (size). Runtime option. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String bufsize = "bufsize";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Buffering policy ({@link #VALUE_SWITCH switch}, {@link
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * #VALUE_FILL fill}, or {@link #VALUE_RING ring}). Runtime option.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * <p>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * See the <a
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * href=http://docs.sun.com/app/docs/doc/817-6223/6mlkidlhr?a=view>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * <b>Principal Buffer Policies</b></a> section of the
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * <b>Buffers and Buffering</b> chapter of the <i>Solaris Dynamic
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Tracing Guide</i>.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String bufpolicy = "bufpolicy";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Buffer resizing policy ({@link #VALUE_AUTO auto} or {@link
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * #VALUE_MANUAL manual}). Runtime option.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * <p>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * See the <a
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * href=http://docs.sun.com/app/docs/doc/817-6223/6mlkidlhu?a=view>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * <b>Buffer Resizing Policy</b></a> section of the <b>Buffers
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * and Buffering</b> chapter of the <i>Solaris Dynamic Tracing
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Guide</i>.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String bufresize = "bufresize";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /** Cleaning rate (time). Runtime option. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String cleanrate = "cleanrate";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /** CPU on which to enable tracing (scalar). Runtime option. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String cpu = "cpu";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /** Permit destructive actions (no option value). Runtime option. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String destructive = "destructive";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /** Dynamic variable space size (size). Runtime option. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String dynvarsize = "dynvarsize";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Adds {@link Flow} information to generated {@link ProbeData}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * indicating direction of control flow (entry or return) across
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * function boundaries and depth in call stack (no option value).
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Runtime option.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String flowindent = "flowindent";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /** Number of speculations (scalar). Runtime option. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String nspec = "nspec";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Only output explicitly traced data (no option value). Makes no
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * difference to generated {@link ProbeData}, but user apps may use
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * the {@code quiet} flag as a rendering hint similar to the {@code
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * -q} {@code dtrace(1M)} command option. Runtime option.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String quiet = "quiet";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /** Speculation buffer size (size). Runtime option. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String specsize = "specsize";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /** Number of stack frames (scalar). Runtime option. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String stackframes = "stackframes";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /** Rate of status checking (time). Runtime option. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String statusrate = "statusrate";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /** String size (size). Runtime option. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String strsize = "strsize";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /** Rate of buffer switching (time). Runtime option. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String switchrate = "switchrate";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /** Number of user stack frames (scalar). Runtime option. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public static final String ustackframes = "ustackframes";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /** @serial */
52aacb450723e8271d37836e1b5861c2072a3981tomee private final String name;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /** @serial */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee private final String value;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Creates an option without an associated value. The created
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * boolean option has the value {@link Option#VALUE_SET}. To
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * specify that the named option be unset, use {@link
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Option#VALUE_UNSET}.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
52aacb450723e8271d37836e1b5861c2072a3981tomee * @param optionName DTrace option name
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @throws NullPointerException if the given option name is {@code
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * null}
52aacb450723e8271d37836e1b5861c2072a3981tomee * @see #Option(String optionName, String optionValue)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public
52aacb450723e8271d37836e1b5861c2072a3981tomee Option(String optionName)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
52aacb450723e8271d37836e1b5861c2072a3981tomee this(optionName, Option.VALUE_SET);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Creates an option with the given name and value.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
52aacb450723e8271d37836e1b5861c2072a3981tomee * @param optionName DTrace option name
52aacb450723e8271d37836e1b5861c2072a3981tomee * @param optionValue DTrace option value
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @throws NullPointerException if the given option name or value is
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * {@code null}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public
52aacb450723e8271d37836e1b5861c2072a3981tomee Option(String optionName, String optionValue)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
52aacb450723e8271d37836e1b5861c2072a3981tomee name = optionName;
52aacb450723e8271d37836e1b5861c2072a3981tomee value = optionValue;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee validate();
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee private final void
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee validate()
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
52aacb450723e8271d37836e1b5861c2072a3981tomee if (name == null) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee throw new NullPointerException("option name is null");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (value == null) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee throw new NullPointerException("option value is null");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Gets the option name.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @return non-null option name
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public String
52aacb450723e8271d37836e1b5861c2072a3981tomee getName()
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
52aacb450723e8271d37836e1b5861c2072a3981tomee return name;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Gets the option value.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @return option value, or {@code null} if no value is associated
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * with the option
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee getValue()
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return value;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Compares the specified object with this option for equality.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Defines equality as having equal names and values.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * @return {@code true} if and only if the specified object is an
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * {@code Option} with the same name and the same value as this
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * option. Option values are the same if they are both {@code null}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * or if they are equal as defined by {@link String#equals(Object o)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * String.equals()}.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public boolean
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee equals(Object o)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (o instanceof Option) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee Option opt = (Option)o;
52aacb450723e8271d37836e1b5861c2072a3981tomee return (name.equals(opt.name) &&
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee value.equals(opt.value));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return false;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Overridden to ensure that equal options have equal hashcodes.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee @Override
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public int
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee hashCode()
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee int hash = 17;
52aacb450723e8271d37836e1b5861c2072a3981tomee hash = (37 * hash) + name.hashCode();
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee hash = (37 * hash) + value.hashCode();
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return hash;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee private void
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee readObject(ObjectInputStream s)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee throws IOException, ClassNotFoundException
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee s.defaultReadObject();
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee // check invariants
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee try {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee validate();
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee } catch (Exception e) {
4ae67516a1d5dc4a5dbc761762bad5b596647388tomee InvalidObjectException x = new InvalidObjectException(
4ae67516a1d5dc4a5dbc761762bad5b596647388tomee e.getMessage());
4ae67516a1d5dc4a5dbc761762bad5b596647388tomee x.initCause(e);
4ae67516a1d5dc4a5dbc761762bad5b596647388tomee throw x;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /**
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Gets a string representation of this option useful for logging
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * and not intended for display. The exact details of the
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * representation are unspecified and subject to change, but the
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * following format may be regarded as typical:
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * <pre><code>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * class-name[property1 = value1, property2 = value2]
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * </code></pre>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee public String
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee toString()
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee {
4ae67516a1d5dc4a5dbc761762bad5b596647388tomee StringBuilder buf = new StringBuilder();
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee buf.append(Option.class.getName());
52aacb450723e8271d37836e1b5861c2072a3981tomee buf.append("[name = ");
52aacb450723e8271d37836e1b5861c2072a3981tomee buf.append(name);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee buf.append(", value = ");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee buf.append(value);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee buf.append(']');
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return buf.toString();
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}