/* * Copyright 1998-2008 Sun Microsystems, Inc. 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. * * 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. * */ /* * Gamma (Hotspot internal engineering test) launcher based on 1.6.0-b28 JDK, * search "GAMMA" for gamma specific changes. */ #ifndef _JAVA_H_ #define _JAVA_H_ /* * Get system specific defines. */ #include "jni.h" #include "java_md.h" /* * Pointers to the needed JNI invocation API, initialized by LoadJavaVM. */ typedef jint (JNICALL *CreateJavaVM_t)(JavaVM **pvm, void **env, void *args); typedef jint (JNICALL *GetDefaultJavaVMInitArgs_t)(void *args); typedef struct { CreateJavaVM_t CreateJavaVM; GetDefaultJavaVMInitArgs_t GetDefaultJavaVMInitArgs; } InvocationFunctions; /* * Prototypes for launcher functions in the system specific java_md.c. */ jboolean LoadJavaVM(const char *jvmpath, InvocationFunctions *ifn); void GetXUsagePath(char *buf, jint bufsize); jboolean GetApplicationHome(char *buf, jint bufsize); const char * GetArch(); void CreateExecutionEnvironment(int *_argc, char ***_argv, char jrepath[], jint so_jrepath, char jvmpath[], jint so_jvmpath, char **original_argv); /* * Report an error message to stderr or a window as appropriate. The * flag always is set to JNI_TRUE if message is to be reported to both * strerr and windows and set to JNI_FALSE if the message should only * be sent to a window. */ void ReportErrorMessage(char * message, jboolean always); void ReportErrorMessage2(char * format, char * string, jboolean always); /* * Report an exception which terminates the vm to stderr or a window * as appropriate. */ void ReportExceptionDescription(JNIEnv * env); jboolean RemovableMachineDependentOption(char * option); void PrintMachineDependentOptions(); /* * Functions defined in java.c and used in java_md.c. */ jint ReadKnownVMs(const char *jrepath, char * arch, jboolean speculative); char *CheckJvmType(int *argc, char ***argv, jboolean speculative); void* MemAlloc(size_t size); /* * Make launcher spit debug output. */ extern jboolean _launcher_debug; /* * This allows for finding classes from the VM's bootstrap class loader * directly, FindClass uses the application class loader internally, this will * cause unnecessary searching of the classpath for the required classes. */ typedef jclass (JNICALL FindClassFromBootLoader_t(JNIEnv *env, const char *name, jboolean throwError)); jclass FindBootStrapClass(JNIEnv *env, const char *classname); #endif /* _JAVA_H_ */