2362N/A * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 2362N/A * published by the Free Software Foundation. Oracle designates this 0N/A * particular file as subject to the "Classpath" exception as provided 2362N/A * by Oracle in the LICENSE file that accompanied this code. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 0N/A * Copyright 2003 Wily Technology, Inc. 0N/A * The JPLISAgent manages the initialization all of the Java programming language Agents. 0N/A * It also supports the native method bridge between the JPLIS and the JVMTI. 0N/A * It maintains a single JVMTI Env that all JPL agents share. 0N/A * It parses command line requests and creates individual Java agents. 0N/A * Forward definitions 0N/A/* constants for class names and methods names and such 0N/A these all must stay in sync with Java code & interfaces 0N/A * Our initialization errors 0N/A * JVMTI event handlers 0N/A/* VMInit event handler. Installed during OnLoad, then removed during VMInit. */ 0N/A/* ClassFileLoadHook event handler. Installed during VMInit, then left in place forever. */ 0N/A * Main entry points for the JPLIS JVMTI agent code 0N/A/* looks up the environment instance. returns null if there isn't one */ 0N/A/* Creates a new JPLIS agent. 0N/A * Returns error if the agent cannot be created and initialized. 0N/A * The JPLISAgent* pointed to by agent_ptr is set to the new broker, 0N/A * or NULL if an error has occurred. 0N/A/* Adds can_redefine_classes capability */ 0N/A/* Add the can_set_native_method_prefix capability */ 0N/A/* Add the can_maintain_original_method_order capability (for testing) */ 0N/A/* Our JPLIS agent is paralleled by a Java InstrumentationImpl instance. 0N/A * This routine uses JNI to create and initialized the Java instance. 0N/A * Returns true if it succeeds, false otherwise. 0N/A/* during OnLoad phase (command line parsing) 0N/A * record the parameters of -javaagent 0N/A/* Swaps the start phase event handlers out and the live phase event handlers in. 0N/A * Also used in attach to enabled live phase event handlers. 0N/A * Returns true if it succeeds, false otherwise. 0N/A/* Loads the Java agent according to the already processed command line. For each, 0N/A * loads the Java agent class, then calls the premain method. 0N/A * Returns true if all Java agent classes are loaded and all premain methods complete with no exceptions, 0N/A/* during VMInit processing 0N/A * this is how the invocation engine (callback wrapper) tells us to start up all the javaagents 0N/A/* on an ongoing basis, 0N/A * this is how the invocation engine (callback wrapper) tells us to process a class file 0N/A/* on an ongoing basis, 0N/A * Return the environment with the retransformation capability. 0N/A * Create it if it doesn't exist. 0N/A/* on an ongoing basis, 0N/A * these are implementations of the Instrumentation services. 0N/A * Most are simple covers for JVMTI access services. These are the guts of the InstrumentationImpl 142N/A * A set of macros for insulating the JLI method callers from 142N/A * JVMTI_ERROR_WRONG_PHASE return codes. 142N/A/* for a JLI method where "blob" is executed before simply returning */ 142N/A/* for a JLI method where simply returning is benign */ 142N/A/* for a JLI method where returning zero (0) is benign */ 142N/A/* for a JLI method where returning one (1) is benign */ 142N/A/* for a case where a specific "blob" must be returned */ 142N/A/* for a JLI method where returning false is benign */ 0N/A#
endif /* __cplusplus */