duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: /* Derived Base Types */ duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: /* Constants */ duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: /* Errors */ duke@435: duke@435: typedef enum { duke@435: duke@435: duke@435: duke@435: duke@435: , duke@435: duke@435: duke@435: JVMTI_ERROR_MAX = duke@435: duke@435: duke@435: duke@435: duke@435: } jvmtiError; duke@435: duke@435: duke@435: duke@435: duke@435: /* Pre-Declarations */ duke@435: duke@435: duke@435: duke@435: duke@435: /* Function Types */ duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: /* Structure Types */ duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: /* Include file for the Java(tm) Virtual Machine Tool Interface */ duke@435: duke@435: #ifndef _JAVA_JVMTI_H_ duke@435: #define _JAVA_JVMTI_H_ duke@435: duke@435: #include "jni.h" duke@435: duke@435: #ifdef __cplusplus duke@435: extern "C" { duke@435: #endif duke@435: duke@435: enum { duke@435: JVMTI_VERSION_1 = 0x30010000, duke@435: JVMTI_VERSION_1_0 = 0x30010000, duke@435: JVMTI_VERSION_1_1 = 0x30010100, duke@435: duke@435: JVMTI_VERSION = 0x30000000 + ( duke@435: duke@435: * 0x10000) + ( duke@435: duke@435: * 0x100) duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: /* checked out - duke@435: duke@435: duke@435: + duke@435: duke@435: /* duke@435: duke@435: duke@435: version: duke@435: duke@435: */ duke@435: }; duke@435: duke@435: JNIEXPORT jint JNICALL duke@435: Agent_OnLoad(JavaVM *vm, char *options, void *reserved); duke@435: duke@435: JNIEXPORT jint JNICALL duke@435: Agent_OnAttach(JavaVM* vm, char* options, void* reserved); duke@435: duke@435: JNIEXPORT void JNICALL duke@435: Agent_OnUnload(JavaVM *vm); duke@435: duke@435: /* Forward declaration of the environment */ duke@435: duke@435: struct _jvmtiEnv; duke@435: duke@435: struct jvmtiInterface_1_; duke@435: duke@435: #ifdef __cplusplus duke@435: typedef _jvmtiEnv jvmtiEnv; duke@435: #else duke@435: typedef const struct jvmtiInterface_1_ *jvmtiEnv; duke@435: #endif /* __cplusplus */ duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: #ifdef __cplusplus duke@435: } /* extern "C" */ duke@435: #endif /* __cplusplus */ duke@435: duke@435: #endif /* !_JAVA_JVMTI_H_ */ duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: /* Event IDs */ duke@435: duke@435: typedef enum { duke@435: duke@435: duke@435: duke@435: duke@435: JVMTI_MIN_EVENT_TYPE_VAL = duke@435: duke@435: , duke@435: duke@435: duke@435: duke@435: , duke@435: duke@435: duke@435: JVMTI_MAX_EVENT_TYPE_VAL = duke@435: duke@435: duke@435: duke@435: duke@435: } jvmtiEvent; duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: /* Event Definitions */ duke@435: duke@435: typedef void (JNICALL *jvmtiEventReserved)(void); duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: /* Event Callback Structure */ duke@435: duke@435: typedef struct { duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: } jvmtiEventCallbacks; duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: typedef void (JNICALL *jvmtiEvent duke@435: duke@435: ) duke@435: (jvmtiEnv *jvmti_env duke@435: duke@435: duke@435: , duke@435: duke@435: duke@435: duke@435: ); duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: /* Function Interface */ duke@435: duke@435: typedef struct jvmtiInterface_1_ { duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: } jvmtiInterface_1; duke@435: duke@435: struct _jvmtiEnv { duke@435: const struct jvmtiInterface_1_ *functions; duke@435: #ifdef __cplusplus duke@435: duke@435: duke@435: duke@435: duke@435: #endif /* __cplusplus */ duke@435: }; duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: /* duke@435: duke@435: : duke@435: duke@435: duke@435: duke@435: */ duke@435: jvmtiError (JNICALL * duke@435: duke@435: ) (jvmtiEnv* env duke@435: duke@435: duke@435: , duke@435: duke@435: duke@435: duke@435: ) duke@435: duke@435: duke@435: RESERVED */ duke@435: void *reserved duke@435: duke@435: duke@435: duke@435: ; duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: jvmtiError (JNICALL * duke@435: duke@435: ) (jvmtiEnv* env duke@435: duke@435: ); duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: jvmtiError duke@435: duke@435: ( duke@435: duke@435: ) { duke@435: return functions-> duke@435: duke@435: (this duke@435: duke@435: duke@435: duke@435: , duke@435: duke@435: duke@435: duke@435: duke@435: ); duke@435: } duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: /* duke@435: duke@435: */ duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: typedef duke@435: duke@435: (JNICALL * duke@435: duke@435: ) duke@435: ( duke@435: duke@435: duke@435: duke@435: , duke@435: duke@435: duke@435: duke@435: ); duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: duke@435: struct _ duke@435: duke@435: ; duke@435: duke@435: typedef struct _ duke@435: duke@435: duke@435: duke@435: ; duke@435: duke@435: duke@435: duke@435: duke@435: struct _ duke@435: duke@435: { duke@435: duke@435: duke@435: }; duke@435: duke@435: duke@435: duke@435: duke@435: union _ duke@435: duke@435: ; duke@435: duke@435: typedef union _ duke@435: duke@435: duke@435: duke@435: ; duke@435: duke@435: duke@435: duke@435: duke@435: union _ duke@435: duke@435: { duke@435: duke@435: duke@435: }; duke@435: duke@435: duke@435: duke@435: