/* * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ /** * This package contains annotations and enumerations that are used to * add DTrace-specific information to a tracing provider. * <p> * The DTrace-specific annotations modify the attributes of a DTrace provider * implementation when it is used by the tracing subsystem. The annotations are * added to a {@code com.sun.tracing} provider specification to control * specific attributes of the provider as it relates to DTrace. * <p> * Any other tracing subsystems supported by the system will ignore these * annotations. * <p> * DTrace probes have additional fields and stability attributes that are * not accounted for in the generic tracing package. If unspecified, the * default values are used for the stability and dependency attributes of * probes, as well as for the module and field names of the generated probes. * The values can be specified by adding the appropriate annotations to the * provider specification. * <p> * The {@code FunctionName} annotation is used to annotate the tracepoint * methods defined in the provider specification. The value of this annotation * is used as the {@code function} field in the generated DTrace probes. It * is typically set to the name of the enclosing function where the * tracepoint is triggered. * <p> * The {@code ModuleName} annotation is used to annotate the provider * specification itself and applies to all the probes in the provider. It * sets the value of the {@code module} field in the generated DTrace probes. * <p> * The remaining annotations, are also applied to the provider itself, and * are used to set the stability and dependency attributes of all probes in * that provider. Each probe field and the probe arguments can be * independently assigned interface attributes to control the stability * ratings of the probes. * <p> * Here is an example of how to declare a provider, specifying additional DTrace * data: <PRE> @ProviderName("my_app_provider") @ModuleName("app.jar") @ProviderAttributes(@Attributes={ name=StabilityLevel.STABLE,data=StabilityLevel.STABLE, dependency=DependencyClass.COMMON}) @ProbeAttributes(@Attributes={ name=StabilityLevel.STABLE,data=StabilityLevel.STABLE, dependency=DependencyClass.COMMON}) @ModuleAttributes(@Attributes={name=StabilityLevel.UNSTABLE}) public class MyProvider { @FunctionName("main") void startProbe(); } </PRE> * <p> * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlms?a=view">Solaris Dynamic Tracing Guide, Chapter 34: Statically Defined Tracing for User Applications</a> * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a> */ package com.sun.tracing.dtrace;