#ifndef _RUMACS_H_ #define _RUMACS_H_ #include #include #include "jvmti.h" #include "jni.h" #include "java_crw_demo.h" #define STRING(s) #s #define RUMACS_class Rumacs #define RUMACS_hook_entry hook_entry #define RUMACS_hook_entry_native hook_entry_native #define RUMACS_hook_exit hook_exit #define RUMACS_hook_exit_native hook_exit_native #define MAX_FRAME_COUNT 50 static void init(); static void RUMACS_mouse_pressed_entry_native(JNIEnv*, jclass, jthread, jint, jint); static void JNICALL cb_vminit(jvmtiEnv*, JNIEnv*, jthread); static void JNICALL cb_vmstart(jvmtiEnv*, JNIEnv*); static void JNICALL cb_classfileloadhook(jvmtiEnv*, JNIEnv*, jclass, jobject, const char*, jobject, jint, const unsigned char*, jint*, unsigned char**); static void JNICALL cb_vmdeath(jvmtiEnv*, JNIEnv*); static void* allocate(jvmtiEnv*, jint); static void enter_critical_section(jvmtiEnv*); static void exit_critical_section(jvmtiEnv*); static void check_error(char*, jvmtiError); static int class_num; static jvmtiEnv *jvmti; static jrawMonitorID lock; static jboolean vm_dead; static jboolean vm_started;