2006-08-13 Matthias Klose <doko@debian.org>
[official-gcc.git] / libjava / classpath / include / jvmti.h
blob23419f92074ecb039085b973d58970996d5d61c3
1 /* jvmti.h - Java Virtual Machine Tool Interface
2 Copyright (C) 2006 Free Software Foundation
4 This file is part of GNU Classpath.
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING. If not, write to the
18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 02110-1301 USA.
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library. Thus, the terms and
23 conditions of the GNU General Public License cover the whole
24 combination.
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module. An independent module is a module which is not derived from
33 or based on this library. If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so. If you do not wish to do so, delete this
36 exception statement from your version. */
39 /* Note: this file must be compilable by the C compiler (for now,
40 assuming GNU C is ok). This means you must never use `//'
41 comments, and all C++-specific code must be conditional on
42 __cplusplus. */
44 #ifndef _CLASSPATH_JVMTI_H
45 #define _CLASSPATH_JVMTI_H
46 #include <jni.h>
48 /* The VM might define JVMTI base types */
49 #ifndef _CLASSPATH_VM_JVMTI_TYPES_DEFINED
51 typedef jobject jthread;
52 typedef jobject jthreadGroup;
53 typedef jlong jlocation;
54 typedef struct _Jv_rawMonitorID *jrawMonitorID;
56 #endif /* !_CLASSPATH_VM_JVMTI_TYPES_DEFINED */
58 /* JVMTI Version */
59 #define JVMTI_VERSION_1_0 0x30010000
60 #define JVMTI_VERSION (JVMTI_VERSION_1_0 + 38) /* Spec version is 1.0.38 */
62 #ifdef __cplusplus
63 extern "C"
65 #endif
67 /* These functions might be defined in libraries which we load; the
68 JVMTI implementation calls them at the appropriate times. */
69 extern JNIEXPORT jint JNICALL Agent_OnLoad (JavaVM *vm, char *options,
70 void *reserved);
71 extern JNIEXPORT void JNICALL Agent_OnUnload (JavaVM *vm);
73 #ifdef __cplusplus
75 #endif
77 /* Forward declarations */
78 typedef struct _jvmtiAddrLocationMap jvmtiAddrLocationMap;
79 #ifdef __cplusplus
80 typedef struct _Jv_JVMTIEnv jvmtiEnv;
81 #else
82 typedef const struct _Jv_jvmtiEnv jvmtiEnv;
83 #endif
86 * Error constants
89 typedef enum
91 /* Universal Errors */
92 JVMTI_ERROR_NONE = 0,
93 JVMTI_ERROR_NULL_POINTER = 100,
94 JVMTI_ERROR_OUT_OF_MEMORY = 110,
95 JVMTI_ERROR_ACCESS_DENIED = 111,
96 JVMTI_ERROR_WRONG_PHASE = 112,
97 JVMTI_ERROR_INTERNAL = 113,
98 JVMTI_ERROR_UNATTACHED_THREAD = 115,
99 JVMTI_ERROR_INVALID_ENVIRONMENT = 116,
101 /* Function-specific Required Errors */
102 JVMTI_ERROR_INVALID_PRIORITY = 12,
103 JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13,
104 JVMTI_ERROR_THREAD_SUSPENDED = 14,
105 JVMTI_ERROR_THREAD_NOT_ALIVE = 15,
106 JVMTI_ERROR_CLASS_NOT_PREPARED = 22,
107 JVMTI_ERROR_NO_MORE_FRAMES = 31,
108 JVMTI_ERROR_OPAQUE_FRAME = 32,
109 JVMTI_ERROR_DUPLICATE = 40,
110 JVMTI_ERROR_NOT_FOUND = 41,
111 JVMTI_ERROR_NOT_MONITOR_OWNER = 51,
112 JVMTI_ERROR_INTERRUPT = 52,
113 JVMTI_ERROR_UNMODIFIABLE_CLASS = 79,
114 JVMTI_ERROR_NOT_AVAILABLE = 98,
115 JVMTI_ERROR_ABSENT_INFORMATION = 101,
116 JVMTI_ERROR_INVALID_EVENT_TYPE = 102,
117 JVMTI_ERROR_NATIVE_METHOD = 104,
119 /* Function-specific Agent Errors */
120 JVMTI_ERROR_INVALID_THREAD = 10,
121 JVMTI_ERROR_INVALID_THREAD_GROUP = 11,
122 JVMTI_ERROR_INVALID_OBJECT = 20,
123 JVMTI_ERROR_INVALID_CLASS = 21,
124 JVMTI_ERROR_INVALID_METHODID = 23,
125 JVMTI_ERROR_INVALID_LOCATION = 24,
126 JVMTI_ERROR_INVALID_FIELDID = 25,
127 JVMTI_ERROR_TYPE_MISMATCH = 34,
128 JVMTI_ERROR_INVALID_SLOT = 35,
129 JVMTI_ERROR_INVALID_MONITOR = 50,
130 JVMTI_ERROR_INVALID_CLASS_FORMAT = 60,
131 JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION = 61,
132 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED = 63,
133 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED = 64,
134 JVMTI_ERROR_INVALID_TYPESTATE = 65,
135 JVMTI_ERROR_FAILS_VERIFICATION = 62,
136 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED = 66,
137 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED = 67,
138 JVMTI_ERROR_UNSUPPORTED_VERSION = 68,
139 JVMTI_ERROR_NAMES_DONT_MATCH = 69,
140 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70,
141 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71,
142 JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99,
143 JVMTI_ERROR_ILLEGAL_ARGUMENT = 103,
144 } jvmtiError;
147 * Enumeration Definitions
150 typedef enum
152 JVMTI_DISABLE = 0,
153 JVMTI_ENABLE = 1
154 } jvmtiEventMode;
156 typedef enum
158 JVMTI_HEAP_OBJECT_TAGGED = 1,
159 JVMTI_HEAP_OBJECT_UNTAGGED = 2,
160 JVMTI_HEAP_OBJECT_EITHER = 3
161 } jvmtiHeapObjectFilter;
163 typedef enum
165 JVMTI_HEAP_ROOT_JNI_GLOBAL = 1,
166 JVMTI_HEAP_ROOT_SYSTEM_CLASS = 2,
167 JVMTI_HEAP_ROOT_MONITOR = 3,
168 JVMTI_HEAP_ROOT_STACK_LOCAL = 4,
169 JVMTI_HEAP_ROOT_JNI_LOCAL = 5,
170 JVMTI_HEAP_ROOT_THREAD = 6,
171 JVMTI_HEAP_ROOT_OTHER = 7
172 } jvmtiHeapRootKind;
174 typedef enum
176 JVMTI_ITERATION_ABORT = 0,
177 JVMTI_ITERATION_CONTINUE = 1,
178 JVMTI_ITERATION_IGNORE = 2
179 } jvmtiIterationControl;
181 typedef enum
183 JVMTI_JLOCATION_OTHER = 0,
184 JVMTI_JLOCATION_JVMBCI = 1,
185 JVMTI_JLOCATION_MACHINEPC = 2
186 } jvmtiJlocationFormat;
188 typedef enum
190 JVMTI_REFERENCE_CLASS = 1,
191 JVMTI_REFERENCE_FIELD = 2,
192 JVMTI_REFERENCE_ARRAY_ELEMENT = 3,
193 JVMTI_REFERENCE_CLASS_LOADER = 4,
194 JVMTI_REFERENCE_SIGNERS = 5,
195 JVMTI_REFERENCE_PROTECTION_DOMAIN = 6,
196 JVMTI_REFERENCE_INTERFACE = 7,
197 JVMTI_REFERENCE_STATIC_FIELD = 8,
198 JVMTI_REFERENCE_CONSTANT_POOL = 9
199 } jvmtiObjectReferenceKind;
201 typedef enum
203 JVMTI_KIND_IN = 91,
204 JVMTI_KIND_IN_PTR = 92,
205 JVMTI_KIND_IN_BUF = 93,
206 JVMTI_KIND_ALLOC_BUF = 94,
207 JVMTI_KIND_ALLOC_ALLOC_BUF = 95,
208 JVMTI_KIND_OUT = 96,
209 JVMTI_KIND_OUT_BUF = 97
210 } jvmtiParamKind;
212 typedef enum
214 JVMTI_TYPE_JBYTE = 101,
215 JVMTI_TYPE_JCHAR = 102,
216 JVMTI_TYPE_JSHORT = 103,
217 JVMTI_TYPE_JINT = 104,
218 JVMTI_TYPE_JLONG = 105,
219 JVMTI_TYPE_JFLOAT = 106,
220 JVMTI_TYPE_JDOUBLE = 107,
221 JVMTI_TYPE_JBOOLEAN = 108,
222 JVMTI_TYPE_JOBJECT = 109,
223 JVMTI_TYPE_JTHREAD = 110,
224 JVMTI_TYPE_JCLASS = 111,
225 JVMTI_TYPE_JVALUE = 112,
226 JVMTI_TYPE_JFIELDID = 113,
227 JVMTI_TYPE_JMETHODID = 114,
228 JVMTI_TYPE_CCHAR = 115,
229 JVMTI_TYPE_CVOID = 116,
230 JVMTI_TYPE_JNIENV = 117
231 } jvmtiParamTypes;
233 typedef enum
235 JVMTI_PHASE_ONLOAD = 1,
236 JVMTI_PHASE_PRIMORDIAL = 2,
237 JVMTI_PHASE_LIVE = 4,
238 JVMTI_PHASE_START = 6,
239 JVMTI_PHASE_DEAD = 8
240 } jvmtiPhase;
242 typedef enum
244 JVMTI_TIMER_USER_CPU = 30,
245 JVMTI_TIMER_TOTAL_CPU = 31,
246 JVMTI_TIMER_ELAPSED = 32
247 } jvmtiTimerKind;
249 typedef enum
251 JVMTI_VERBOSE_OTHER = 0,
252 JVMTI_VERBOSE_GC = 1,
253 JVMTI_VERBOSE_CLASS = 2,
254 JVMTI_VERBOSE_JNI = 4
255 } jvmtiVerboseFlag;
257 /* Version information */
258 #define JVMTI_VERSION_INTERFACE_JNI 0x00000000
259 #define JVMTI_VERSION_INTERFACE_JVMTI 0x30000000
260 #define JVMTI_VERSION_MASK_INTERFACE_TYPE 0x70000000
261 #define JVMTI_VERSION_MASK_MAJOR 0x0FFF0000
262 #define JVMTI_VERSION_MASK_MINOR 0x0000FF00
263 #define JVMTI_VERSION_MASK_MICRO 0x000000FF
264 #define JVMTI_VERSION_SHIFT_MAJOR 16
265 #define JVMTI_VERSION_SHIFT_MINOR 8
266 #define JVMTI_VERSION_SHIFT_MICRO 0
269 * Events and event callbacks
272 typedef enum
274 JVMTI_EVENT_VM_INIT = 50,
275 JVMTI_EVENT_VM_DEATH = 51,
276 JVMTI_EVENT_THREAD_START = 52,
277 JVMTI_EVENT_THREAD_END = 53,
278 JVMTI_EVENT_CLASS_FILE_LOAD_HOOK = 54,
279 JVMTI_EVENT_CLASS_LOAD = 55,
280 JVMTI_EVENT_CLASS_PREPARE = 56,
281 JVMTI_EVENT_VM_START = 57,
282 JVMTI_EVENT_EXCEPTION = 58,
283 JVMTI_EVENT_EXCEPTION_CATCH = 59,
284 JVMTI_EVENT_SINGLE_STEP = 60,
285 JVMTI_EVENT_FRAME_POP = 61,
286 JVMTI_EVENT_BERAKPOINT = 62,
287 JVMTI_EVENT_FIELD_ACCESS = 63,
288 JVMTI_EVENT_FIELD_MODIFICATION = 64,
289 JVMTI_EVENT_METHOD_ENTRY = 65,
290 JVMTI_EVENT_METHOD_EXIT = 66,
291 JVMTI_EVENT_NATIVE_METHOD_BIND = 67,
292 JVMTI_EVENT_COMPILED_METHOD_LOAD = 68,
293 JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69,
294 JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70,
295 JVMTI_EVENT_DATA_DUMP_REQUEST = 71,
296 JVMTI_EVENT_MONITOR_WAIT = 73,
297 JVMTI_EVENT_MONITOR_WAITED = 74,
298 JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75,
299 JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76,
300 JVMTI_EVENT_GARBAGE_COLLECTION_START = 81,
301 JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82,
302 JVMTI_EVENT_OBJECT_FREE = 83,
303 JVMTI_EVENT_VM_OBJECT_ALLOC = 84
304 } jvmtiEvent;
306 typedef void *jvmtiEventReserved;
308 typedef void (JNICALL *jvmtiEventSingleStep)
309 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
310 jlocation location);
312 typedef void (JNICALL *jvmtiEventBreakpoint)
313 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
314 jlocation location);
316 typedef void (JNICALL *jvmtiEventFieldAccess)
317 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
318 jlocation location, jclass field_klass, jobject object, jfieldID field);
320 typedef void (JNICALL *jvmtiEventFieldModification)
321 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
322 jlocation location, jclass field_klass, jobject object, jfieldID field,
323 char signature_type, jvalue new_value);
325 typedef void (JNICALL *jvmtiEventFramePop)
326 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
327 jboolean was_popped_by_exception);
329 typedef void (JNICALL *jvmtiEventMethodEntry)
330 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method);
332 typedef void (JNICALL *jvmtiEventMethodExit)
333 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
334 jboolean was_popped_by_exception, jvalue return_value);
336 typedef void (JNICALL *jvmtiEventNativeMethodBind)
337 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
338 void *address, void **new_address_ptr);
340 typedef void (JNICALL *jvmtiEventException)
341 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
342 jlocation location, jobject exception, jmethodID catch_method,
343 jlocation catch_location);
345 typedef void (JNICALL *jvmtiEventExceptionCatch)
346 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
347 jlocation location, jobject exception);
349 typedef void (JNICALL *jvmtiEventThreadStart)
350 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread);
352 typedef void (JNICALL *jvmtiEventThreadEnd)
353 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread);
355 typedef void (JNICALL *jvmtiEventClassLoad)
356 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jclass klass);
358 typedef void (JNICALL *jvmtiEventClassPrepare)
359 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thraed, jclass klass);
361 typedef void (JNICALL *jvmtiEventClassFileLoadHook)
362 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jclass class_being_redefined,
363 jobject loader, const char *name, jobject protection_domain,
364 jint class_data_len, const unsigned char *class_data,
365 jint *new_class_data_len, unsigned char **new_class_data);
367 typedef void (JNICALL *jvmtiEventVMStart)
368 (jvmtiEnv *jvmti_env, JNIEnv *jni_env);
370 typedef void (JNICALL *jvmtiEventVMInit)
371 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread);
373 typedef void (JNICALL *jvmtiEventVMDeath)
374 (jvmtiEnv *jvmti_env, JNIEnv *jni_env);
376 typedef void (JNICALL *jvmtiEventCompiledMethodLoad)
377 (jvmtiEnv *jvmti_env, jmethodID method, jint code_size,
378 const void *code_addr, jint map_length, const jvmtiAddrLocationMap *map,
379 const void *compile_info);
381 typedef void (JNICALL *jvmtiEventCompiledMethodUnload)
382 (jvmtiEnv *jvmti_env, jmethodID method, const void *code_addr);
384 typedef void (JNICALL *jvmtiEventDynamicCodeGenerated)
385 (jvmtiEnv *jvmti_env, const char *name, const void *address, jint length);
387 typedef void (JNICALL *jvmtiEventDataDumpRequest)
388 (jvmtiEnv *jvmti_env);
390 typedef void (JNICALL *jvmtiEventMonitorContendedEnter)
391 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object);
393 typedef void (JNICALL *jvmtiEventMonitorContendedEntered)
394 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object);
396 typedef void (JNICALL *jvmtiEventMonitorWait)
397 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object,
398 jlong timeout);
400 typedef void (JNICALL *jvmtiEventMonitorWaited)
401 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object,
402 jboolean timed_out);
404 typedef void (JNICALL *jvmtiEventVMObjectAlloc)
405 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object,
406 jclass object_klass, jlong size);
408 typedef void (JNICALL *jvmtiEventObjectFree)
409 (jvmtiEnv *jvmti_env, jlong tag);
411 typedef void (JNICALL *jvmtiEventGarbageCollectionStart)
412 (jvmtiEnv *jvmti_env);
414 typedef void (JNICALL *jvmtiEventGarbageCollectionFinish)
415 (jvmtiEnv *jvmti_env);
417 typedef struct
419 jvmtiEventVMInit VMInit;
420 jvmtiEventVMDeath VMDeath;
421 jvmtiEventThreadStart ThreadStart;
422 jvmtiEventThreadEnd ThreadEnd;
423 jvmtiEventClassFileLoadHook ClassFileLoadHook;
424 jvmtiEventClassLoad ClassLoad;
425 jvmtiEventClassPrepare ClassPrepare;
426 jvmtiEventVMStart VMStart;
427 jvmtiEventException Exception;
428 jvmtiEventExceptionCatch ExceptionCatch;
429 jvmtiEventSingleStep SingleStep;
430 jvmtiEventFramePop FramePop;
431 jvmtiEventBreakpoint Breakpoint;
432 jvmtiEventFieldAccess FieldAccess;
433 jvmtiEventFieldModification FieldModification;
434 jvmtiEventMethodEntry MethodEntry;
435 jvmtiEventMethodExit MethodExit;
436 jvmtiEventNativeMethodBind NativeMethodBind;
437 jvmtiEventCompiledMethodLoad CompiledMethodLoad;
438 jvmtiEventCompiledMethodUnload CompiledMethodUnload;
439 jvmtiEventDynamicCodeGenerated DynamicCodeGenerated;
440 jvmtiEventDataDumpRequest DataDumpRequest;
441 jvmtiEventReserved reserved72;
442 jvmtiEventMonitorWait MonitorWait;
443 jvmtiEventMonitorWaited MonitorWaited;
444 jvmtiEventMonitorContendedEnter MonitorContendedEnter;
445 jvmtiEventMonitorContendedEntered MonitorContendedEntered;
446 jvmtiEventReserved reserved77;
447 jvmtiEventReserved reserved78;
448 jvmtiEventReserved reserved79;
449 jvmtiEventReserved reserved80;
450 jvmtiEventGarbageCollectionStart GarbageCollectionStart;
451 jvmtiEventGarbageCollectionFinish GarbageCollectionFinish;
452 jvmtiEventObjectFree ObjectFree;
453 jvmtiEventVMObjectAlloc VMObjectAlloc;
454 } jvmtiEventCallbacks;
457 * Function and Structure Type Definitions
460 struct _jvmtiAddrLocationMap
462 const void *start_address;
463 jlocation location;
466 typedef struct
468 unsigned int can_tag_objects : 1;
469 unsigned int can_generate_field_modification_events : 1;
470 unsigned int can_generate_field_access_events : 1;
471 unsigned int can_get_bytecodes : 1;
472 unsigned int can_get_synthetic_attribute : 1;
473 unsigned int can_get_owned_monitor_info : 1;
474 unsigned int can_get_current_contended_monitor : 1;
475 unsigned int can_get_monitor_info : 1;
476 unsigned int can_pop_frame : 1;
477 unsigned int can_redefine_classes : 1;
478 unsigned int can_signal_thread : 1;
479 unsigned int can_get_source_file_name : 1;
480 unsigned int can_get_line_numbers : 1;
481 unsigned int can_get_source_debug_extension : 1;
482 unsigned int can_access_local_variables : 1;
483 unsigned int can_maintain_original_method_order : 1;
484 unsigned int can_generate_single_step_events : 1;
485 unsigned int can_generate_exception_events : 1;
486 unsigned int can_generate_frame_pop_events : 1;
487 unsigned int can_generate_breakpoint_events : 1;
488 unsigned int can_suspend : 1;
489 unsigned int can_redefine_any_class : 1;
490 unsigned int can_get_current_thread_cpu_time : 1;
491 unsigned int can_get_thread_cpu_time : 1;
492 unsigned int can_generate_method_entry_events : 1;
493 unsigned int can_generate_method_exit_events : 1;
494 unsigned int can_generate_all_class_hook_events : 1;
495 unsigned int can_generate_compiled_method_load_events : 1;
496 unsigned int can_generate_monitor_events : 1;
497 unsigned int can_generate_vm_object_alloc_events : 1;
498 unsigned int can_generate_native_method_bind_events : 1;
499 unsigned int can_generate_garbage_collection_events : 1;
500 unsigned int can_generate_object_free_events : 1;
501 unsigned int : 15;
502 unsigned int : 16;
503 unsigned int : 16;
504 unsigned int : 16;
505 unsigned int : 16;
506 unsigned int : 16;
507 } jvmtiCapabilities;
509 typedef struct
511 jclass klass;
512 jint class_byte_count;
513 const unsigned char *class_bytes;
514 } jvmtiClassDefinition;
516 typedef struct
518 char *name;
519 jvmtiParamKind kind;
520 jvmtiParamTypes base_type;
521 jboolean null_ok;
522 } jvmtiParamInfo;
524 typedef struct
526 jint extension_event_index;
527 char *id;
528 char *short_description;
529 jint param_count;
530 jvmtiParamInfo* params;
531 } jvmtiExtensionEventInfo;
533 typedef jvmtiError (JNICALL *jvmtiExtensionFunction)
534 (jvmtiEnv *jvmti_enf, ...);
536 typedef struct
538 jvmtiExtensionFunction func;
539 char *id;
540 char *short_description;
541 jint param_count;
542 jvmtiParamInfo *params;
543 jint error_count;
544 jvmtiError *errors;
545 } jvmtiExtensionFunctionInfo;
547 typedef struct
549 jmethodID method;
550 jlocation location;
551 } jvmtiFrameInfo;
553 typedef struct
555 jlocation start_location;
556 jint line_number;
557 } jvmtiLineNumberEntry;
559 typedef struct
561 jlocation start_location;
562 jint length;
563 char *name;
564 char *signature;
565 char *generic_signature;
566 jint slot;
567 } jvmtiLocalVariableEntry;
569 typedef struct
571 jthread owner;
572 jint entry_count;
573 jint waiter_count;
574 jthread *waiters;
575 jint notify_waiter_count;
576 jthread *notify_waiters;
577 } jvmtiMonitorUsage;
579 typedef struct
581 jthread thread;
582 jint state;
583 jvmtiFrameInfo *frame_buffer;
584 jint frame_count;
585 } jvmtiStackInfo;
587 typedef struct
589 jthreadGroup parent;
590 char *name;
591 jint max_priority;
592 jboolean is_daemon;
593 } jvmtiThreadGroupInfo;
595 typedef struct
597 char *name;
598 jint priority;
599 jboolean is_daemon;
600 jthreadGroup thread_group;
601 jobject context_class_loader;
602 } jvmtiThreadInfo;
604 typedef struct
606 jlong max_value;
607 jboolean may_skip_forward;
608 jboolean may_skip_backward;
609 jvmtiTimerKind kind;
610 jlong reserved1;
611 jlong reserved2;
612 } jvmtiTimerInfo;
614 typedef void (JNICALL *jvmtiExtensionEvent)
615 (jvmtiEnv *jvmti_env, ...);
617 typedef jvmtiIterationControl (JNICALL *jvmtiHeapObjectCallback)
618 (jlong class_tag, jlong size, jlong *tag_ptr, void *user_data);
620 typedef jvmtiIterationControl (JNICALL *jvmtiHeapRootCallback)
621 (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong *tag_ptr,
622 void *user_data);
624 typedef jvmtiIterationControl (JNICALL *jvmtiObjectReferenceCallback)
625 (jvmtiObjectReferenceKind reference_kind, jlong class_tag, jlong size,
626 jlong *tag_ptr, jlong referrer_tag, jint referrer_index, void *user_data);
628 typedef jvmtiIterationControl (JNICALL *jvmtiStackReferenceCallback)
629 (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong *tag_ptr,
630 jlong thread_tag, jint depth, jmethodID method, jint slot, void *user_data);
632 typedef void (JNICALL *jvmtiStartFunction)
633 (jvmtiEnv *env, JNIEnv *jni_env, void *arg);
636 * JVM Tool Interface Base Types
638 typedef struct JNINativeInterface jniNativeInterface;
640 struct _Jv_jvmtiEnv
642 void *reserved1;
644 jvmtiError (JNICALL *SetEventNotificationMode) (jvmtiEnv *env,
645 jvmtiEventMode mode,
646 jvmtiEvent event_type,
647 jthread event_thread, ...);
648 void *reserved3;
650 jvmtiError (JNICALL *GetAllThreads) (jvmtiEnv *env,
651 jint *threads_count_ptr,
652 jthread **threads_ptr);
654 jvmtiError (JNICALL *SuspendThread) (jvmtiEnv *env,
655 jthread thread);
657 jvmtiError (JNICALL *ResumeThread) (jvmtiEnv *env,
658 jthread thread);
660 jvmtiError (JNICALL *StopThread) (jvmtiEnv *env,
661 jthread thread);
663 jvmtiError (JNICALL *InterruptThread) (jvmtiEnv *env,
664 jthread thread);
666 jvmtiError (JNICALL *GetThreadInfo) (jvmtiEnv *env,
667 jthread thread,
668 jvmtiThreadInfo *info_ptr);
670 jvmtiError (JNICALL *GetOwnedMonitorInfo) (jvmtiEnv *env,
671 jthread thread,
672 jint *owned_monitor_count_ptr,
673 jobject **owned_monitors_ptr);
675 jvmtiError (JNICALL *GetCurrentContendedMonitor) (jvmtiEnv *env,
676 jthread thread,
677 jobject *monitor_ptr);
679 jvmtiError (JNICALL *RunAgentThread) (jvmtiEnv *env,
680 jthread thread,
681 jvmtiStartFunction proc,
682 const void *arg,
683 jint priority);
685 jvmtiError (JNICALL *GetTopThreadGroups) (jvmtiEnv *env,
686 jint *group_count_ptr,
687 jthreadGroup **groups_ptr);
689 jvmtiError (JNICALL *GetThreadGroupInfo) (jvmtiEnv *env,
690 jthreadGroup group,
691 jvmtiThreadGroupInfo *info_ptr);
693 jvmtiError (JNICALL *GetThreadGroupChildren) (jvmtiEnv *env,
694 jthreadGroup group,
695 jint *thread_count_ptr,
696 jthread **threads_ptr,
697 jint *group_count_ptr,
698 jthreadGroup **groups_ptr);
699 jvmtiError (JNICALL *GetFrameCount) (jvmtiEnv *env,
700 jthread thread,
701 jint *count_ptr);
703 jvmtiError (JNICALL *GetThreadState) (jvmtiEnv *env,
704 jthread thread,
705 jint *thread_state_ptr);
707 void *reserved18;
709 jvmtiError (JNICALL *GetFrameLocation) (jvmtiEnv *env,
710 jthread thread,
711 jint depth,
712 jmethodID *method_ptr,
713 jlocation *location_ptr);
715 jvmtiError (JNICALL *NotifyPopFrame) (jvmtiEnv *env,
716 jthread thread,
717 jint depth);
719 jvmtiError (JNICALL *GetLocalObject) (jvmtiEnv *env,
720 jthread thread,
721 jint depth,
722 jint slot,
723 jobject *value_ptr);
725 jvmtiError (JNICALL *GetLocalInt) (jvmtiEnv *env,
726 jthread thread,
727 jint depth,
728 jint slot,
729 jint *value_ptr);
731 jvmtiError (JNICALL *GetLocalLong) (jvmtiEnv *env,
732 jthread thread,
733 jint depth,
734 jint slot,
735 jlong *value_ptr);
737 jvmtiError (JNICALL *GetLocalFloat) (jvmtiEnv *env,
738 jthread thread,
739 jint depth,
740 jint slot,
741 jfloat *value_ptr);
743 jvmtiError (JNICALL *GetLocalDouble) (jvmtiEnv *env,
744 jthread thread,
745 jint depth,
746 jint slot,
747 jdouble *value_ptr);
749 jvmtiError (JNICALL *SetLocalObject) (jvmtiEnv *env,
750 jthread thread,
751 jint depth,
752 jint slot,
753 jobject value);
755 jvmtiError (JNICALL *SetLocalInt) (jvmtiEnv *env,
756 jthread thread,
757 jint depth,
758 jint slot,
759 jint value);
761 jvmtiError (JNICALL *SetLocalLong) (jvmtiEnv *env,
762 jthread thread,
763 jint depth,
764 jint slot,
765 jlong value);
767 jvmtiError (JNICALL *SetLocalFloat) (jvmtiEnv *env,
768 jthread thread,
769 jint depth,
770 jint slot,
771 jfloat value);
773 jvmtiError (JNICALL *SetLocalDouble) (jvmtiEnv *env,
774 jthread thread,
775 jint depth,
776 jint slot,
777 jdouble value);
779 jvmtiError (JNICALL *CreateRawMonitor) (jvmtiEnv *env,
780 const char *name,
781 jrawMonitorID *monitor_ptr);
783 jvmtiError (JNICALL *DestroyRawMonitor) (jvmtiEnv *env,
784 jrawMonitorID monitor);
786 jvmtiError (JNICALL *RawMonitorEnter) (jvmtiEnv *env,
787 jrawMonitorID monitor);
789 jvmtiError (JNICALL *RawMonitorExit) (jvmtiEnv *env,
790 jrawMonitorID monitor);
792 jvmtiError (JNICALL *RawMonitorWait) (jvmtiEnv *env,
793 jrawMonitorID monitor);
795 jvmtiError (JNICALL *RawMonitorNotify) (jvmtiEnv *env,
796 jrawMonitorID monitor);
798 jvmtiError (JNICALL *RawMonitorNotifyAll) (jvmtiEnv *env,
799 jrawMonitorID monitor);
801 jvmtiError (JNICALL *SetBreakpoint) (jvmtiEnv *env,
802 jmethodID method,
803 jlocation location);
805 jvmtiError (JNICALL *ClearBreakpoint) (jvmtiEnv *env,
806 jmethodID method,
807 jlocation location);
809 void *reserved40;
811 jvmtiError (JNICALL *SetFieldAccessWatch) (jvmtiEnv *env,
812 jclass klass,
813 jfieldID field);
815 jvmtiError (JNICALL *ClearFieldAccessWatch) (jvmtiEnv *env,
816 jclass klass,
817 jfieldID field);
819 jvmtiError (JNICALL *SetFieldModificationWatch) (jvmtiEnv *env,
820 jclass klass,
821 jfieldID field);
823 jvmtiError (JNICALL *ClearFieldModificationWatch) (jvmtiEnv *env,
824 jclass klass,
825 jfieldID field);
827 void *reserved45;
829 jvmtiError (JNICALL *Allocate) (jvmtiEnv *env,
830 jlong size,
831 unsigned char **mem_ptr);
833 jvmtiError (JNICALL *Deallocate) (jvmtiEnv *env,
834 unsigned char *mem);
836 jvmtiError (JNICALL *GetClassSignature) (jvmtiEnv *env,
837 jclass klass,
838 char **signature_ptr,
839 char **generic_ptr);
841 jvmtiError (JNICALL *GetClassStatus) (jvmtiEnv *env,
842 jclass klass,
843 jint *status_ptr);
845 jvmtiError (JNICALL *GetSourceFileName) (jvmtiEnv *env,
846 jclass klass,
847 char *source_name_ptr);
849 jvmtiError (JNICALL *GetClassModifiers) (jvmtiEnv *env,
850 jclass klass,
851 jint *modifiers_ptr);
853 jvmtiError (JNICALL *GetClassMethods) (jvmtiEnv *env,
854 jclass klass,
855 jint *method_count_ptr,
856 jmethodID **methods_ptr);
858 jvmtiError (JNICALL *GetClassFields) (jvmtiEnv *env,
859 jclass klass,
860 jint *field_count_ptr,
861 jfieldID **fields_ptr);
863 jvmtiError (JNICALL *GetImplementedInterfaces) (jvmtiEnv *env,
864 jclass klass,
865 jint *interface_count_ptr,
866 jclass **interfaces_ptr);
868 jvmtiError (JNICALL *IsInterface) (jvmtiEnv *env,
869 jclass klass,
870 jboolean *is_interface_ptr);
872 jvmtiError (JNICALL *IsArrayClass) (jvmtiEnv *env,
873 jclass klass,
874 jboolean *is_array_class_ptr);
876 jvmtiError (JNICALL *GetClassLoader) (jvmtiEnv *env,
877 jclass klass,
878 jobject *classloader_ptr);
880 jvmtiError (JNICALL *GetObjectHashCode) (jvmtiEnv *env,
881 jobject object,
882 jint *hash_code_ptr);
884 jvmtiError (JNICALL *GetObjectMonitorUsage) (jvmtiEnv *env,
885 jobject object,
886 jvmtiMonitorUsage *info_ptr);
888 jvmtiError (JNICALL *GetFieldName) (jvmtiEnv *env,
889 jclass klass,
890 jfieldID field,
891 char **name_ptr,
892 char **signature_ptr,
893 char **generic_ptr);
895 jvmtiError (JNICALL *GetFieldDeclaringClass) (jvmtiEnv *env,
896 jclass klass,
897 jfieldID field,
898 jclass *declaring_class_ptr);
900 jvmtiError (JNICALL *GetFieldModifiers) (jvmtiEnv *env,
901 jclass klass,
902 jfieldID field,
903 jint *modifiers_ptr);
905 jvmtiError (JNICALL *IsFieldSynthetic) (jvmtiEnv *env,
906 jclass klass,
907 jfieldID field,
908 jboolean *is_synthetic_ptr);
910 jvmtiError (JNICALL *GetMethodName) (jvmtiEnv *env,
911 jmethodID method,
912 char **name_ptr,
913 char **signature_ptr,
914 char **generic_ptr);
916 jvmtiError (JNICALL *GetMethodDeclaringClass) (jvmtiEnv *env,
917 jmethodID method,
918 jclass *declaring_class_ptr);
921 jvmtiError (JNICALL *GetMethodModifiers) (jvmtiEnv *env,
922 jmethodID method,
923 jint *modifiers_ptr);
925 void *reserved67;
927 jvmtiError (JNICALL *GetMaxLocals) (jvmtiEnv *env,
928 jmethodID method,
929 jint *max_ptr);
931 jvmtiError (JNICALL *GetArgumentsSize) (jvmtiEnv *env,
932 jmethodID method,
933 jint *size_ptr);
935 jvmtiError (JNICALL *GetLineNumberTable) (jvmtiEnv *env,
936 jmethodID method,
937 jint *entry_count_ptr,
938 jvmtiLineNumberEntry **table_ptr);
940 jvmtiError (JNICALL *GetMethodLocation) (jvmtiEnv *env,
941 jmethodID method,
942 jlocation *start_location_ptr,
943 jlocation *end_location_ptr);
945 jvmtiError (JNICALL *GetLocalVariableTable) (jvmtiEnv *env,
946 jmethodID method,
947 jint *entry_count_ptr,
948 jvmtiLocalVariableEntry **table_ptr);
950 void *reserved73;
952 void *reserved74;
954 jvmtiError (JNICALL *GetBytecodes) (jvmtiEnv *env,
955 jmethodID method,
956 jint *bytecode_count_ptr,
957 unsigned char **bytecodes_ptr);
959 jvmtiError (JNICALL *IsMethodNative) (jvmtiEnv *env,
960 jmethodID method,
961 jboolean *is_native_ptr);
963 jvmtiError (JNICALL *IsMethodSynthetic) (jvmtiEnv *env,
964 jmethodID method,
965 jboolean *is_synthetic_ptr);
967 jvmtiError (JNICALL *GetLoadedClasses) (jvmtiEnv *env,
968 jint *class_count_ptr,
969 jclass **classes_ptr);
971 jvmtiError (JNICALL *GetClassLoaderClasses) (jvmtiEnv *env,
972 jobject initiating_loader,
973 jint *class_count_ptr,
974 jclass **classes_ptr);
976 jvmtiError (JNICALL *PopFrame) (jvmtiEnv *env,
977 jthread thread);
979 void *reserved81;
981 void *reserved82;
983 void *reserved83;
985 void *reserved84;
987 void *reserved85;
989 void *reserved86;
991 jvmtiError (JNICALL *RedefineClasses) (jvmtiEnv *env,
992 jint class_count,
993 const jvmtiClassDefinition* class_definitions);
995 jvmtiError (JNICALL *GetVersionNumber) (jvmtiEnv *env,
996 jint *version_ptr);
998 jvmtiError (JNICALL *GetCapabilities) (jvmtiEnv *env,
999 jvmtiCapabilities *capabilities_ptr);
1001 jvmtiError (JNICALL *GetSourceDebugExtension) (jvmtiEnv *env,
1002 jclass klass,
1003 char **source_debug_extension_ptr);
1005 jvmtiError (JNICALL *IsMethodObsolete) (jvmtiEnv *env,
1006 jmethodID method,
1007 jboolean *is_obsolete_ptr);
1009 jvmtiError (JNICALL *SuspendThreadList) (jvmtiEnv *env,
1010 jint request_count,
1011 const jthread *request_list,
1012 jvmtiError *results);
1014 jvmtiError (JNICALL *ResumeThreadList) (jvmtiEnv *env,
1015 jint request_count,
1016 const jthread *request_list,
1017 jvmtiError *results);
1019 void *reserved94;
1021 void *reserved95;
1023 void *reserved96;
1025 void *reserved97;
1027 void *reserved98;
1029 void *reserved99;
1031 jvmtiError (JNICALL *GetAllStackTraces) (jvmtiEnv *env,
1032 jint max_frame_count,
1033 jvmtiStackInfo **stack_info_ptr,
1034 jint *thread_count_ptr);
1036 jvmtiError (JNICALL *GetThreadListStackTraces) (jvmtiEnv *env,
1037 jint thread_count,
1038 const jthread *thread_list,
1039 jint max_frame_count,
1040 jvmtiStackInfo **stack_info_ptr);
1042 jvmtiError (JNICALL *GetThreadLocalStorage) (jvmtiEnv *env,
1043 jthread thread,
1044 void **data_ptr);
1046 jvmtiError (JNICALL *SetThreadLocalStorage) (jvmtiEnv *env,
1047 jthread thread,
1048 const void *data);
1050 jvmtiError (JNICALL *GetStackTrace) (jvmtiEnv *env,
1051 jthread thread,
1052 jint start_depth,
1053 jint max_frame_count,
1054 jvmtiFrameInfo *frame_buffer,
1055 jint *count_ptr);
1057 void *reserved105;
1059 jvmtiError (JNICALL *GetTag) (jvmtiEnv *env,
1060 jobject object,
1061 jlong *tag_ptr);
1063 jvmtiError (JNICALL *SetTag) (jvmtiEnv *env,
1064 jobject object,
1065 jlong tag);
1067 jvmtiError (JNICALL *ForceGarbageCollection) (jvmtiEnv *env);
1069 jvmtiError (JNICALL *IterateOverObjectsReachableFromObject) (jvmtiEnv *env,
1070 jobject object,
1071 jvmtiObjectReferenceCallback object_reference_callback,
1072 void *user_data);
1074 jvmtiError (JNICALL *IterateOverReachableObjects) (jvmtiEnv *env,
1075 jvmtiHeapRootCallback heap_root_callback,
1076 jvmtiStackReferenceCallback stack_ref_callback,
1077 jvmtiObjectReferenceCallback object_ref_callback,
1078 void *user_data);
1080 jvmtiError (JNICALL *IterateOverHeap) (jvmtiEnv *env,
1081 jvmtiHeapObjectFilter object_filter,
1082 jvmtiHeapObjectCallback heap_object_callback,
1083 void *user_data);
1085 jvmtiError (JNICALL *IterateOverInstanceOfClass) (jvmtiEnv *env,
1086 jclass klass,
1087 jvmtiHeapObjectFilter object_filter,
1088 jvmtiHeapObjectCallback heap_object_callback,
1089 void *user_data);
1091 void *reserved113;
1093 jvmtiError (JNICALL *GetObjectsWithTags) (jvmtiEnv *env,
1094 jint tag_count,
1095 const jlong *tags,
1096 jint *count_ptr,
1097 jobject **object_result_ptr,
1098 jlong **tag_result_ptr);
1100 void *reserved115;
1102 void *reserved116;
1104 void *reserved117;
1106 void *reserved118;
1108 void *reserved119;
1110 jvmtiError (JNICALL *SetJNIFunctionTable) (jvmtiEnv *env,
1111 const jniNativeInterface *function_table);
1113 jvmtiError (JNICALL *GetJNIFunctionTable) (jvmtiEnv *env,
1114 jniNativeInterface **function_table_ptr);
1116 jvmtiError (JNICALL *SetEventCallbacks) (jvmtiEnv *env,
1117 const jvmtiEventCallbacks *callbacks,
1118 jint size_of_callbacks);
1120 jvmtiError (JNICALL *GenerateEvents) (jvmtiEnv *env,
1121 jvmtiEvent event_type);
1123 jvmtiError (JNICALL *GetExtensionFunctions) (jvmtiEnv *env,
1124 jint *extension_count_ptr,
1125 jvmtiExtensionFunctionInfo **extensions);
1127 jvmtiError (JNICALL *GetExtensionEvents) (jvmtiEnv *env,
1128 jint *extension_count_ptr,
1129 jvmtiExtensionEventInfo **extensions);
1131 jvmtiError (JNICALL *SetExtensionEventCallback) (jvmtiEnv *env,
1132 jint extension_event_index,
1133 jvmtiExtensionEvent callback);
1135 jvmtiError (JNICALL *DisposeEnvironment) (jvmtiEnv *env);
1137 jvmtiError (JNICALL *GetErrorName) (jvmtiEnv *env,
1138 jvmtiError error,
1139 char **name_ptr);
1141 jvmtiError (JNICALL *GetJLocationFormat) (jvmtiEnv *env,
1142 jvmtiJlocationFormat *format_ptr);
1144 jvmtiError (JNICALL *GetSystemProperties) (jvmtiEnv *env,
1145 jint *count_ptr,
1146 char ***property_ptr);
1148 jvmtiError (JNICALL *GetSystemProperty) (jvmtiEnv *env,
1149 const char *property,
1150 char **value_ptr);
1152 jvmtiError (JNICALL *SetSystemProperty) (jvmtiEnv *env,
1153 const char *property,
1154 const char *value);
1156 jvmtiError (JNICALL *GetPhase) (jvmtiEnv *env,
1157 jvmtiPhase *phase_ptr);
1159 jvmtiError (JNICALL *GetCurrentThreadCpuTimerInfo) (jvmtiEnv *env,
1160 jvmtiTimerInfo *info_ptr);
1162 jvmtiError (JNICALL *GetCurrentThreadCpuTime) (jvmtiEnv *env,
1163 jlong *nanos_ptr);
1165 jvmtiError (JNICALL *GetThreadCpuTimerInfo) (jvmtiEnv *env,
1166 jvmtiTimerInfo *info_ptr);
1168 jvmtiError (JNICALL *GetThreadCpuTime) (jvmtiEnv *env,
1169 jthread thread,
1170 jlong *nanos_ptr);
1172 jvmtiError (JNICALL *GetTimerInfo) (jvmtiEnv *env,
1173 jvmtiTimerInfo *info_ptr);
1175 jvmtiError (JNICALL *GetTime) (jvmtiEnv *env,
1176 jlong *nanos_ptr);
1178 jvmtiError (JNICALL *GetPotentialCapabilities) (jvmtiEnv *env,
1179 jvmtiCapabilities *capabilities_ptr);
1181 void *reserved141;
1183 jvmtiError (JNICALL *AddCapabilities) (jvmtiEnv *env,
1184 const jvmtiCapabilities *capabilities_ptr);
1186 jvmtiError (JNICALL *RelinquishCapabilities) (jvmtiEnv *env,
1187 const jvmtiCapabilities *capabilities_ptr);
1189 jvmtiError (JNICALL *GetAvailableProcessors) (jvmtiEnv *env,
1190 jint *processor_count_ptr);
1192 void *reserved145;
1194 void *reserved146;
1196 jvmtiError (JNICALL *GetEnvironmentLocalStorage) (jvmtiEnv *env,
1197 void **data_ptr);
1199 jvmtiError (JNICALL *SetEnvironmentLocalStorage) (jvmtiEnv *env,
1200 const void *data);
1202 jvmtiError (JNICALL *AddToBootstrapClassLoaderSearch) (jvmtiEnv *env,
1203 const char *segment);
1205 jvmtiError (JNICALL *SetVerboseFlag) (jvmtiEnv *env,
1206 jvmtiVerboseFlag flag,
1207 jboolean value);
1209 void *reserved151;
1211 void *reserved152;
1213 void *reserved153;
1215 jvmtiError (JNICALL *GetObjectSize) (jvmtiEnv *env,
1216 jobject object,
1217 jlong *size_ptr);
1220 #ifdef __cplusplus
1221 class _Jv_JVMTIEnv
1223 public:
1224 /* Method table */
1225 struct _Jv_jvmtiEnv *p;
1227 #ifdef _CLASSPATH_JVMTIENV_CONTENTS
1228 _CLASSPATH_JVMTIENV_CONTENTS
1229 #endif
1231 jvmtiError SetEventNotificationMode (jvmtiEventMode mode,
1232 jvmtiEvent event_type,
1233 jthread event_thread, ...)
1235 va_list args;
1236 va_start (args, event_thread);
1237 jvmtiError result = p->SetEventNotificationMode (this, mode, event_type,
1238 event_thread, args);
1239 va_end (args);
1240 return result;
1243 jvmtiError GetAllThreads (jint *threads_count_ptr, jthread **threads_ptr)
1244 { return p->GetAllThreads (this, threads_count_ptr, threads_ptr); }
1246 jvmtiError SuspendThread (jthread thread)
1247 { return p->SuspendThread (this, thread); }
1249 jvmtiError ResumeThread (jthread thread)
1250 { return p->ResumeThread (this, thread); }
1252 jvmtiError StopThread (jthread thread)
1253 { return p->StopThread (this, thread); }
1255 jvmtiError InterruptThread (jthread thread)
1256 { return p->InterruptThread (this, thread); }
1258 jvmtiError GetThreadInfo (jthread thread, jvmtiThreadInfo *info_ptr)
1259 { return p->GetThreadInfo (this, thread, info_ptr); }
1261 jvmtiError GetOwnedMonitorInfo (jthread thread,
1262 jint *owned_monitor_count_ptr,
1263 jobject **owned_monitors_ptr)
1265 return p->GetOwnedMonitorInfo (this, thread, owned_monitor_count_ptr,
1266 owned_monitors_ptr);
1269 jvmtiError GetCurrentContendedMonitor (jthread thread, jobject *monitor_ptr)
1270 { return p->GetCurrentContendedMonitor (this, thread, monitor_ptr); }
1272 jvmtiError RunAgentThread (jthread thread, jvmtiStartFunction proc,
1273 const void *arg, jint priority)
1274 { return p->RunAgentThread (this, thread, proc, arg, priority); }
1276 jvmtiError GetTopThreadGroups (jint *group_count_ptr,
1277 jthreadGroup **groups_ptr)
1278 { return p->GetTopThreadGroups (this, group_count_ptr, groups_ptr); }
1280 jvmtiError GetThreadGroupInfo (jthreadGroup group,
1281 jvmtiThreadGroupInfo *info_ptr)
1282 { return p->GetThreadGroupInfo (this, group, info_ptr); }
1284 jvmtiError GetThreadGroupChildren (jthreadGroup group,
1285 jint *thread_count_ptr,
1286 jthread **threads_ptr,
1287 jint *group_count_ptr,
1288 jthreadGroup **groups_ptr)
1290 return p->GetThreadGroupChildren (this, group, thread_count_ptr,
1291 threads_ptr, group_count_ptr,
1292 groups_ptr);
1295 jvmtiError GetFrameCount (jthread thread, jint *count_ptr)
1296 { return p->GetFrameCount (this, thread, count_ptr); }
1298 jvmtiError GetThreadState (jthread thread, jint *thread_state_ptr)
1299 { return p->GetThreadState (this, thread, thread_state_ptr); }
1301 jvmtiError GetFrameLocation (jthread thread, jint depth,
1302 jmethodID *method_ptr, jlocation *location_ptr)
1304 return p->GetFrameLocation (this, thread, depth, method_ptr,
1305 location_ptr);
1308 jvmtiError NotifyPopFrame (jthread thread, jint depth)
1309 { return p->NotifyPopFrame (this, thread, depth); }
1311 jvmtiError GetLocalObject (jthread thread, jint depth, jint slot,
1312 jobject *value_ptr)
1313 { return p->GetLocalObject (this, thread, depth, slot, value_ptr); }
1315 jvmtiError GetLocalInt (jthread thread, jint depth, jint slot,
1316 jint *value_ptr)
1317 { return p->GetLocalInt (this, thread, depth, slot, value_ptr); }
1319 jvmtiError GetLocalLong (jthread thread, jint depth, jint slot,
1320 jlong *value_ptr)
1321 { return p->GetLocalLong (this, thread, depth, slot, value_ptr); }
1323 jvmtiError GetLocalFloat (jthread thread, jint depth, jint slot,
1324 jfloat *value_ptr)
1325 { return p->GetLocalFloat (this, thread, depth, slot, value_ptr); }
1327 jvmtiError GetLocalDouble (jthread thread, jint depth, jint slot,
1328 jdouble *value_ptr)
1329 { return p->GetLocalDouble (this, thread, depth, slot, value_ptr); }
1331 jvmtiError SetLocalObject (jthread thread, jint depth, jint slot,
1332 jobject value)
1333 { return p->SetLocalObject (this, thread, depth, slot, value); }
1335 jvmtiError SetLocalInt (jthread thread, jint depth, jint slot,
1336 jint value)
1337 { return p->SetLocalInt (this, thread, depth, slot, value); }
1339 jvmtiError SetLocalLong (jthread thread, jint depth, jint slot,
1340 jlong value)
1341 { return p->SetLocalLong (this, thread, depth, slot, value); }
1343 jvmtiError SetLocalFloat (jthread thread, jint depth, jint slot,
1344 jfloat value)
1345 { return p->SetLocalFloat (this, thread, depth, slot, value); }
1347 jvmtiError SetLocalDouble (jthread thread, jint depth, jint slot,
1348 jdouble value)
1349 { return p->SetLocalDouble (this, thread, depth, slot, value); }
1351 jvmtiError CreateRawMonitor (const char *name, jrawMonitorID *monitor_ptr)
1352 { return p->CreateRawMonitor (this, name, monitor_ptr); }
1354 jvmtiError DestroyRawMonitor (jrawMonitorID monitor)
1355 { return p->DestroyRawMonitor (this, monitor); }
1357 jvmtiError RawMonitorEnter (jrawMonitorID monitor)
1358 { return p->RawMonitorEnter (this, monitor); }
1360 jvmtiError RawMonitorExit (jrawMonitorID monitor)
1361 { return p->RawMonitorExit (this, monitor); }
1363 jvmtiError RawMonitorWait (jrawMonitorID monitor)
1364 { return p->RawMonitorWait (this, monitor); }
1366 jvmtiError RawMonitorNotify (jrawMonitorID monitor)
1367 { return p->RawMonitorNotify (this, monitor); }
1369 jvmtiError RawMonitorNotifyAll (jrawMonitorID monitor)
1370 { return p->RawMonitorNotifyAll (this, monitor); }
1372 jvmtiError SetBreakpoint (jmethodID method, jlocation location)
1373 { return p->SetBreakpoint (this, method, location); }
1375 jvmtiError ClearBreakpoint (jmethodID method, jlocation location)
1376 { return p->ClearBreakpoint (this, method, location); }
1378 jvmtiError SetFieldAccessWatch (jclass klass, jfieldID field)
1379 { return p->SetFieldAccessWatch (this, klass, field); }
1381 jvmtiError ClearFieldAccessWatch (jclass klass, jfieldID field)
1382 { return p->ClearFieldAccessWatch (this, klass, field); }
1384 jvmtiError SetFieldModificationWatch (jclass klass, jfieldID field)
1385 { return p->SetFieldModificationWatch (this, klass, field); }
1387 jvmtiError ClearFieldModificationWatch (jclass klass, jfieldID field)
1388 { return p->ClearFieldModificationWatch (this, klass, field); }
1390 jvmtiError Allocate (jlong size, unsigned char **mem_ptr)
1391 { return p->Allocate (this, size, mem_ptr); }
1393 jvmtiError Deallocate (unsigned char *mem)
1394 { return p->Deallocate (this, mem); }
1396 jvmtiError GetClassSignature (jclass klass, char **signature_ptr,
1397 char **generic_ptr)
1398 { return p->GetClassSignature (this, klass, signature_ptr, generic_ptr); }
1400 jvmtiError GetClassStatus (jclass klass, jint *status_ptr)
1401 { return p->GetClassStatus (this, klass, status_ptr); }
1403 jvmtiError GetSourceFileName (jclass klass, char *source_name_ptr)
1404 { return p->GetSourceFileName (this, klass, source_name_ptr); }
1406 jvmtiError GetClassModifiers (jclass klass, jint *modifiers_ptr)
1407 { return p->GetClassModifiers (this, klass, modifiers_ptr); }
1409 jvmtiError GetClassMethods (jclass klass, jint *method_count_ptr,
1410 jmethodID **methods_ptr)
1411 { return p->GetClassMethods (this, klass, method_count_ptr, methods_ptr); }
1413 jvmtiError GetClassFields (jclass klass, jint *field_count_ptr,
1414 jfieldID **fields_ptr)
1415 { return p->GetClassFields (this, klass, field_count_ptr, fields_ptr); }
1417 jvmtiError GetImplementedInterfaces (jclass klass,
1418 jint *interface_count_ptr,
1419 jclass **interfaces_ptr)
1421 return p->GetImplementedInterfaces (this, klass, interface_count_ptr,
1422 interfaces_ptr);
1425 jvmtiError IsInterface (jclass klass, jboolean *is_interface_ptr)
1426 { return p->IsInterface (this, klass, is_interface_ptr); }
1428 jvmtiError IsArrayClass (jclass klass, jboolean *is_array_class_ptr)
1429 { return p->IsArrayClass (this, klass, is_array_class_ptr); }
1431 jvmtiError GetClassLoader (jclass klass, jobject *classloader_ptr)
1432 { return p->GetClassLoader (this, klass, classloader_ptr); }
1434 jvmtiError GetObjectHashCode (jobject object, jint *hash_code_ptr)
1435 { return p->GetObjectHashCode (this, object, hash_code_ptr); }
1437 jvmtiError GetObjectMonitorUsage (jobject object,
1438 jvmtiMonitorUsage *info_ptr)
1439 { return p->GetObjectMonitorUsage (this, object, info_ptr); }
1441 jvmtiError GetFieldName (jclass klass, jfieldID field, char **name_ptr,
1442 char **signature_ptr, char **generic_ptr)
1444 return p->GetFieldName (this, klass, field, name_ptr,
1445 signature_ptr, generic_ptr);
1448 jvmtiError GetFieldDeclaringClass (jclass klass, jfieldID field,
1449 jclass *declaring_class_ptr)
1451 return p->GetFieldDeclaringClass (this, klass, field,
1452 declaring_class_ptr);
1455 jvmtiError GetFieldModifiers (jclass klass, jfieldID field,
1456 jint *modifiers_ptr)
1457 { return p->GetFieldModifiers (this, klass, field, modifiers_ptr); }
1459 jvmtiError IsFieldSynthetic (jclass klass, jfieldID field,
1460 jboolean *is_synthetic_ptr)
1461 { return p->IsFieldSynthetic (this, klass, field, is_synthetic_ptr); }
1463 jvmtiError GetMethodName (jmethodID method, char **name_ptr,
1464 char **signature_ptr, char **generic_ptr)
1466 return p->GetMethodName (this, method, name_ptr, signature_ptr,
1467 generic_ptr);
1470 jvmtiError GetMethodDeclaringClass (jmethodID method,
1471 jclass *declaring_class_ptr)
1472 { return p->GetMethodDeclaringClass (this, method, declaring_class_ptr); }
1475 jvmtiError GetMethodModifiers (jmethodID method, jint *modifiers_ptr)
1476 { return p->GetMethodModifiers (this, method, modifiers_ptr); }
1478 jvmtiError GetMaxLocals (jmethodID method, jint *max_ptr)
1479 { return p->GetMaxLocals (this, method, max_ptr); }
1481 jvmtiError GetArgumentsSize (jmethodID method, jint *size_ptr)
1482 { return p->GetArgumentsSize (this, method, size_ptr); }
1484 jvmtiError GetLineNumberTable (jmethodID method, jint *entry_count_ptr,
1485 jvmtiLineNumberEntry **table_ptr)
1486 { return p->GetLineNumberTable (this, method, entry_count_ptr, table_ptr); }
1488 jvmtiError GetMethodLocation (jmethodID method,
1489 jlocation *start_location_ptr,
1490 jlocation *end_location_ptr)
1492 return p->GetMethodLocation (this, method, start_location_ptr,
1493 end_location_ptr);
1496 jvmtiError GetLocalVariableTable (jmethodID method, jint *entry_count_ptr,
1497 jvmtiLocalVariableEntry **table_ptr)
1499 return p->GetLocalVariableTable (this, method, entry_count_ptr,
1500 table_ptr);
1503 jvmtiError GetBytecodes (jmethodID method, jint *bytecode_count_ptr,
1504 unsigned char **bytecodes_ptr)
1506 return p->GetBytecodes (this, method, bytecode_count_ptr,
1507 bytecodes_ptr);
1510 jvmtiError IsMethodNative (jmethodID method, jboolean *is_native_ptr)
1511 { return p->IsMethodNative (this, method, is_native_ptr); }
1513 jvmtiError IsMethodSynthetic (jmethodID method, jboolean *is_synthetic_ptr)
1514 { return p->IsMethodSynthetic (this, method, is_synthetic_ptr); }
1516 jvmtiError GetLoadedClasses (jint *class_count_ptr, jclass **classes_ptr)
1517 { return p->GetLoadedClasses (this, class_count_ptr, classes_ptr); }
1519 jvmtiError GetClassLoaderClasses (jobject initiating_loader,
1520 jint *class_count_ptr,
1521 jclass **classes_ptr)
1523 return p->GetClassLoaderClasses (this, initiating_loader,
1524 class_count_ptr, classes_ptr);
1527 jvmtiError PopFrame (jthread thread)
1528 { return p->PopFrame (this, thread); }
1530 jvmtiError RedefineClasses (jint class_count,
1531 const jvmtiClassDefinition* class_definitions)
1532 { return p->RedefineClasses (this, class_count, class_definitions); }
1534 jvmtiError GetVersionNumber (jint *version_ptr)
1535 { return p->GetVersionNumber (this, version_ptr); }
1537 jvmtiError GetCapabilities (jvmtiCapabilities *capabilities_ptr)
1538 { return p->GetCapabilities (this, capabilities_ptr); }
1540 jvmtiError GetSourceDebugExtension (jclass klass,
1541 char **source_debug_extension_ptr)
1543 return p->GetSourceDebugExtension (this, klass,
1544 source_debug_extension_ptr);
1547 jvmtiError IsMethodObsolete (jmethodID method, jboolean *is_obsolete_ptr)
1548 { return p->IsMethodObsolete (this, method, is_obsolete_ptr); }
1551 jvmtiError SuspendThreadList (jint request_count,
1552 const jthread *request_list,
1553 jvmtiError *results)
1554 { return p->SuspendThreadList (this, request_count, request_list, results); }
1556 jvmtiError ResumeThreadList (jint request_count,
1557 const jthread *request_list,
1558 jvmtiError *results)
1559 { return p->ResumeThreadList (this, request_count, request_list, results); }
1561 jvmtiError GetAllStackTraces (jint max_frame_count,
1562 jvmtiStackInfo **stack_info_ptr,
1563 jint *thread_count_ptr)
1565 return p->GetAllStackTraces (this, max_frame_count, stack_info_ptr,
1566 thread_count_ptr);
1569 jvmtiError GetThreadListStackTraces (jint thread_count,
1570 const jthread *thread_list,
1571 jint max_frame_count,
1572 jvmtiStackInfo **stack_info_ptr)
1574 return p->GetThreadListStackTraces (this, thread_count, thread_list,
1575 max_frame_count, stack_info_ptr);
1578 jvmtiError GetThreadLocalStorage (jthread thread, void **data_ptr)
1579 { return p->GetThreadLocalStorage (this, thread, data_ptr); }
1581 jvmtiError SetThreadLocalStorage (jthread thread, const void *data)
1582 { return p->SetThreadLocalStorage (this, thread, data); }
1584 jvmtiError GetStackTrace (jthread thread, jint start_depth,
1585 jint max_frame_count,
1586 jvmtiFrameInfo *frame_buffer, jint *count_ptr)
1588 return p->GetStackTrace (this, thread, start_depth, max_frame_count,
1589 frame_buffer, count_ptr);
1592 jvmtiError GetTag (jobject object, jlong *tag_ptr)
1593 { return p->GetTag (this, object, tag_ptr); }
1595 jvmtiError SetTag (jobject object, jlong tag)
1596 { return p->SetTag (this, object, tag); }
1598 jvmtiError ForceGarbageCollection (void)
1599 { return p->ForceGarbageCollection (this); }
1601 jvmtiError IterateOverObjectsReachableFromObject (jobject object,
1602 jvmtiObjectReferenceCallback object_reference_callback,
1603 void *user_data)
1605 return p->IterateOverObjectsReachableFromObject (this, object,
1606 object_reference_callback,
1607 user_data);
1610 jvmtiError IterateOverReachableObjects (jvmtiHeapRootCallback heap_root_callback,
1611 jvmtiStackReferenceCallback stack_ref_callback,
1612 jvmtiObjectReferenceCallback object_ref_callback,
1613 void *user_data)
1615 return p->IterateOverReachableObjects (this, heap_root_callback,
1616 stack_ref_callback,
1617 object_ref_callback,
1618 user_data);
1621 jvmtiError IterateOverHeap (jvmtiHeapObjectFilter object_filter,
1622 jvmtiHeapObjectCallback heap_object_callback,
1623 void *user_data)
1625 return p->IterateOverHeap (this, object_filter, heap_object_callback,
1626 user_data);
1629 jvmtiError IterateOverInstanceOfClass (jclass klass,
1630 jvmtiHeapObjectFilter object_filter,
1631 jvmtiHeapObjectCallback heap_object_callback,
1632 void *user_data)
1634 return p->IterateOverInstanceOfClass (this, klass, object_filter,
1635 heap_object_callback, user_data);
1638 jvmtiError GetObjectsWithTags (jint tag_count, const jlong *tags,
1639 jint *count_ptr, jobject **object_result_ptr,
1640 jlong **tag_result_ptr)
1642 return p->GetObjectsWithTags (this, tag_count, tags, count_ptr,
1643 object_result_ptr, tag_result_ptr);
1646 jvmtiError SetJNIFunctionTable (const jniNativeInterface *function_table)
1647 { return p->SetJNIFunctionTable (this, function_table); }
1649 jvmtiError GetJNIFunctionTable (jniNativeInterface **function_table_ptr)
1650 { return p->GetJNIFunctionTable (this, function_table_ptr); }
1652 jvmtiError SetEventCallbacks (const jvmtiEventCallbacks *callbacks,
1653 jint size_of_callbacks)
1654 { return p->SetEventCallbacks (this, callbacks, size_of_callbacks); }
1656 jvmtiError GenerateEvents (jvmtiEvent event_type)
1657 { return p->GenerateEvents (this, event_type); }
1659 jvmtiError GetExtensionFunctions (jint *extension_count_ptr,
1660 jvmtiExtensionFunctionInfo **extensions)
1661 { return p->GetExtensionFunctions (this, extension_count_ptr, extensions); }
1663 jvmtiError GetExtensionEvents (jint *extension_count_ptr,
1664 jvmtiExtensionEventInfo **extensions)
1665 { return p->GetExtensionEvents (this, extension_count_ptr, extensions); }
1667 jvmtiError SetExtensionEventCallback (jint extension_event_index,
1668 jvmtiExtensionEvent callback)
1670 return p->SetExtensionEventCallback (this, extension_event_index,
1671 callback);
1674 jvmtiError DisposeEnvironment (void)
1675 { return p->DisposeEnvironment (this); }
1677 jvmtiError GetErrorName (jvmtiError error, char **name_ptr)
1678 { return p->GetErrorName (this, error, name_ptr); }
1680 jvmtiError GetJLocationFormat (jvmtiJlocationFormat *format_ptr)
1681 { return p->GetJLocationFormat (this, format_ptr); }
1683 jvmtiError GetSystemProperties (jint *count_ptr, char ***property_ptr)
1684 { return p->GetSystemProperties (this, count_ptr, property_ptr); }
1686 jvmtiError GetSystemProperty (const char *property, char **value_ptr)
1687 { return p->GetSystemProperty (this, property, value_ptr); }
1689 jvmtiError SetSystemProperty (const char *property, const char *value)
1690 { return p->SetSystemProperty (this, property, value); }
1692 jvmtiError GetPhase (jvmtiPhase *phase_ptr)
1693 { return p->GetPhase (this, phase_ptr); }
1695 jvmtiError GetCurrentThreadCpuTimerInfo (jvmtiTimerInfo *info_ptr)
1696 { return p->GetCurrentThreadCpuTimerInfo (this, info_ptr); }
1698 jvmtiError GetCurrentThreadCpuTime (jlong *nanos_ptr)
1699 { return p->GetCurrentThreadCpuTime (this, nanos_ptr); }
1701 jvmtiError GetThreadCpuTimerInfo (jvmtiTimerInfo *info_ptr)
1702 { return p->GetThreadCpuTimerInfo (this, info_ptr); }
1704 jvmtiError GetThreadCpuTime (jthread thread, jlong *nanos_ptr)
1705 { return p->GetThreadCpuTime (this, thread, nanos_ptr); }
1707 jvmtiError GetTimerInfo (jvmtiTimerInfo *info_ptr)
1708 { return p->GetTimerInfo (this, info_ptr); }
1710 jvmtiError GetTime (jlong *nanos_ptr)
1711 {return p->GetTime (this, nanos_ptr); }
1713 jvmtiError GetPotentialCapabilities (jvmtiCapabilities *capabilities_ptr)
1714 { return p->GetPotentialCapabilities (this, capabilities_ptr); }
1716 jvmtiError AddCapabilities (const jvmtiCapabilities *capabilities_ptr)
1717 { return p->AddCapabilities (this, capabilities_ptr); }
1719 jvmtiError RelinquishCapabilities (const jvmtiCapabilities *capabilities_ptr)
1720 { return p->RelinquishCapabilities (this, capabilities_ptr); }
1722 jvmtiError GetAvailableProcessors (jint *processor_count_ptr)
1723 { return p->GetAvailableProcessors (this, processor_count_ptr); }
1725 jvmtiError GetEnvironmentLocalStorage (void **data_ptr)
1726 { return p->GetEnvironmentLocalStorage (this, data_ptr); }
1728 jvmtiError SetEnvironmentLocalStorage (const void *data)
1729 { return p->SetEnvironmentLocalStorage (this, data); }
1731 jvmtiError AddToBootstrapClassLoaderSearch (const char *segment)
1732 { return p->AddToBootstrapClassLoaderSearch (this, segment); }
1734 jvmtiError SetVerboseFlag (jvmtiVerboseFlag flag, jboolean value)
1735 { return p->SetVerboseFlag (this, flag, value); }
1737 jvmtiError GetObjectSize (jobject object, jlong *size_ptr)
1738 { return p->GetObjectSize (this, object, size_ptr); }
1740 #endif /* __cplusplus */
1743 * Miscellaneous flags, constants, etc
1746 /* Class status flags */
1747 #define JVMTI_CLASS_STATUS_VERIFIED 1
1748 #define JVMTI_CLASS_STATUS_PREPARED 2
1749 #define JVMTI_CLASS_STATUS_INITIALIZED 4
1750 #define JVMTI_CLASS_STATUS_ERROR 8
1751 #define JVMTI_CLASS_STATUS_ARRAY 16
1752 #define JVMTI_CLASS_STATUS_PRIMITIVE 32
1754 /* Thread state flags */
1755 #define JVMTI_THREAD_STATE_ALIVE 0x0001
1756 #define JVMTI_THREAD_STATE_TERMINATED 0x0002
1757 #define JVMTI_THREAD_STATE_RUNNABLE 0x0004
1758 #define JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER 0x0400
1759 #define JVMTI_THREAD_STATE_WAITING 0x0080
1760 #define JVMTI_THREAD_STATE_WAITING_INDEFINITELY 0x0010
1761 #define JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT 0x0020
1762 #define JVMTI_THREAD_STATE_SLEEPING 0x0040
1763 #define JVMTI_THREAD_STATE_IN_OBJECT_WAIT 0x0100
1764 #define JVMTI_THREAD_STATE_PARKED 0x0200
1765 #define JVMTI_THREAD_STATE_SUSPENDED 0x100000
1766 #define JVMTI_THREAD_STATE_INTERRUPTED 0x200000
1767 #define JVMTI_THREAD_STATE_IN_NATIVE 0x400000
1768 #define JVMTI_THREAD_STATE_VENDOR_1 0x10000000
1769 #define JVMTI_THREAD_STATE_VENDOR_2 0x20000000
1770 #define JVMTI_THREAD_STATE_VENDOR_3 0x40000000
1772 /* java.lang.Thread.State conversion masks */
1773 #define JVMTI_JAVA_LANG_THREAD_STATE_MASK \
1774 (JVMTI_THREAD_STATE_TERMINATED \
1775 | JVMTI_THREAD_STATE_ALIVE \
1776 | JVMTI_THREAD_STATE_RUNNABLE \
1777 | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER \
1778 | JVMTI_THREAD_STATE_WAITING \
1779 | JVMTI_THREAD_STATE_WAITING_INDEFINITELY \
1780 | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT)
1781 #define JVMTI_JAVA_LANG_THREAD_STATE_NEW 0
1782 #define JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED JVMTI_THREAD_STATE_TERMINATED
1783 #define JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE \
1784 (JVMTI_THREAD_STATE_ALIVE \
1785 | JVMTI_THREAD_STATE_RUNNABLE)
1786 #define JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED \
1787 (JVMTI_THREAD_STATE_ALIVE \
1788 | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER)
1789 #define JVMTI_JAVA_LANG_THREAD_STATE_WAITING \
1790 (JVMTI_THREAD_STATE_ALIVE \
1791 | JVMTI_THREAD_STATE_WAITING \
1792 | JVMTI_THREAD_STATE_WAITING_INDEFINITELY)
1793 #define JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING \
1794 (JVMTI_THREAD_STATE_ALIVE \
1795 | JVMTI_THREAD_STATE_WAITING \
1796 | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT)
1798 /* Thread priorities */
1799 #define JVMTI_THREAD_MIN_PRIORITY 1
1800 #define JVMTI_THREAD_NORM_PRIORITY 5
1801 #define JVMTI_THREAD_MAX_PRIORITY 10
1803 /* Keep c-font-lock-extra-types in order: JNI followed by JVMTI,
1804 all in alphabetical order */
1805 /* Local Variables: */
1806 /* c-font-lock-extra-types: ("\\sw+_t"
1807 "JNIEnv" "JNINativeMethod" "JavaVM" "JavaVMOption" "jarray"
1808 "jboolean" "jbooleanArray" "jbyte" "jbyteArray" "jchar" "jcharArray"
1809 "jclass" "jdouble" "jdoubleArray" "jfieldID" "jfloat" "jfloatArray"
1810 "jint" "jintArray" "jlong" "jlongArray" "jmethodID" "jobject" "jstring" "jthrowable"
1811 "jvalue" "jweak"
1812 "jvmtiEnv" "jvmtiError"
1813 "jthread" "jthreadGroup" "jlocation" "jrawMonitorID") */
1814 /* End: */
1815 #endif /* !_CLASSPATH_JVMTI_H */