LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File jvmpi.h of Package oprofile (Project openSUSE:11.4)

#include "jni.h"

#define JVMPI_VERSION_1 (jint)0x10000001
struct _jobjectID;
typedef struct _jobjectID *jobjectID;
struct _JVMPI_RawMonitor;
typedef struct _JVMPI_RawMonitor *JVMPI_RawMonitor;
typedef struct
{
  jint lineno;
  jmethodID method_id;
} JVMPI_CallFrame;
typedef struct
{
  JNIEnv *env_id;
  jint num_frames;
  JVMPI_CallFrame *frames;
} JVMPI_CallTrace;
typedef struct
{
  char *method_name;
  char *method_signature;
  jint start_lineno;
  jint end_lineno;
  jmethodID method_id;
} JVMPI_Method;
typedef struct
{
  char *field_name;
  char *field_signature;
} JVMPI_Field;
typedef struct
{
  jint offset;
  jint lineno;
} JVMPI_Lineno;
typedef struct
{
  jint event_type;
  JNIEnv *env_id;
  union
  {
    struct
    {
      const char *class_name;
      char *source_name;
      jint num_interfaces;
      jint num_methods;
      JVMPI_Method *methods;
      jint num_static_fields;
      JVMPI_Field *statics;
      jint num_instance_fields;
      JVMPI_Field *instances;
      jobjectID class_id;
    } class_load;
    struct
    {
      jmethodID method_id;
      void *code_addr;
      jint code_size;
      jint lineno_table_size;
      JVMPI_Lineno *lineno_table;
    } compiled_method_load;
  } u;
} JVMPI_Event;
typedef struct
{
  jint version;
  void (*NotifyEvent) (JVMPI_Event *);
  jint (*EnableEvent) (jint, void *);
  jint (*DisableEvent) (jint, void *);
  jint (*RequestEvent) (jint, void *);
  void (*GetCallTrace) (JVMPI_CallTrace *, jint);
  void (*ProfilerExit) (jint);
  JVMPI_RawMonitor (*RawMonitorCreate) (char *);
  void (*RawMonitorEnter) (JVMPI_RawMonitor);
  void (*RawMonitorExit) (JVMPI_RawMonitor);
  void (*RawMonitorWait) (JVMPI_RawMonitor, jlong);
  void (*RawMonitorNotifyAll) (JVMPI_RawMonitor);
  void (*RawMonitorDestroy) (JVMPI_RawMonitor);
  jlong (*GetCurrentThreadCpuTime) (void);
  void (*SuspendThread) (JNIEnv *);
  void (*ResumeThread) (JNIEnv *);
  jint (*GetThreadStatus) (JNIEnv *);
  jboolean (*ThreadHasRun) (JNIEnv *);
  jint (*CreateSystemThread) (char *, jint, void (*)(void *));
  void (*SetThreadLocalStorage) (JNIEnv *, void *);
  void *(*GetThreadLocalStorage) (JNIEnv *);
  void (*DisableGC) (void);
  void (*EnableGC) (void);
  void (*RunGC) (void);
  jobjectID (*GetThreadObject) (JNIEnv *);
  jobjectID (*GetMethodClass) (jmethodID);
  jobject (*jobjectID2jobject) (jobjectID);
  jobjectID (*jobject2jobjectID) (jobject);
  void (*SuspendThreadList) (jint, JNIEnv **, jint *);
  void (*ResumeThreadList) (jint, JNIEnv **, jint *);
} JVMPI_Interface;

#define JVMPI_EVENT_COMPILED_METHOD_LOAD 7
#define JVMPI_EVENT_COMPILED_METHOD_UNLOAD 8
#define JVMPI_EVENT_CLASS_LOAD 42
#define JVMPI_EVENT_CLASS_UNLOAD 43
#define JVMPI_EVENT_JVM_SHUT_DOWN 47