1879N/A * Copyright (c) 2006, 2010, 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 0N/A * published by the Free Software Foundation. 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. 1472N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 0N/A// NOTE: These constants are used in JVM code as well. 0N/A// KEEP JVM CODE IN SYNC if you are going to change these... 0N/A// generic error messages 0N/A// error messages for attach 0N/A// error messages for enable probe 0N/A// error message for detach 0N/A/* Key for thread local error message */ 0N/A/* init function for this library */ 0N/A /* check for env. var for debug mode */ 0N/A /* create key for thread local error message */ 0N/A/* set thread local error message */ 0N/A/* clear thread local error message */ 0N/A/* file handling functions that can handle interrupt */ 0N/A/* send SIGQUIT signal to given process */ 0N/A/* called to check permissions on attach file */ 0N/A * Check that the path is owned by the effective uid/gid of this 0N/A/* fill-in the name of attach file name in given buffer */ 0N/A/* open door file for the given JVM */ 0N/A/* create attach file for given process */ 0N/A/* delete attach file for given process */ 0N/A/* attach to given JVM */ 0N/A /* send QUIT signal to the target so that it will 0N/A * check for the attach file. 0N/A /* give the target VM time to start the attach mechanism */ 0N/A/* return the last thread local error message */ 0N/A/* detach the givenb JVM */ 0N/A * A simple table to translate some known errors into reasonable 0N/A {
100,
"Bad request" },
0N/A {
101,
"Protocol mismatch" },
0N/A {
102,
"Resource failure" },
0N/A {
103,
"Internal error" },
0N/A {
104,
"Permission denied" },
0N/A * Lookup the given error code and return the appropriate 0N/A * message. If not found return NULL. 0N/A * Current protocol version 0N/A * Enqueue attach-on-demand command to the given JVM 0N/A * First we get the command string and create the start of the 0N/A * argument string to send to the target VM: 0N/A * Next we iterate over the arguments and extend the buffer 0N/A * The arguments to the door function are in 'buf' so we now 0N/A * door_call succeeded but the call didn't return the the expected jint. 0N/A print_debug(
"Enqueue error - reason unknown as result is truncated!");
0N/A * The door call should return a file descriptor to one end of 0N/A/* read status code for a door command */ 0N/A/* enable one or more DTrace probes for a given JVM */ 0N/A // non-zero status is error 0N/A // read from stream until EOF