PR libgcj/30647:
[official-gcc.git] / libjava / classpath / jvmti.h
blobb26f7932e54a8589c7fa841ce5352ad3d7b0b41f
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 #include "jvmti_md.h"
50 /* The VM might define JVMTI base types */
51 #ifndef _CLASSPATH_VM_JVMTI_TYPES_DEFINED
53 typedef jobject jthread;
54 typedef jobject jthreadGroup;
55 typedef jlong jlocation;
56 typedef struct _Jv_rawMonitorID *jrawMonitorID;
58 #endif /* !_CLASSPATH_VM_JVMTI_TYPES_DEFINED */
60 /* JVMTI Version */
61 #define JVMTI_VERSION_1_0 0x30010000
62 #define JVMTI_VERSION (JVMTI_VERSION_1_0 + 38) /* Spec version is 1.0.38 */
64 #ifdef __cplusplus
65 extern "C"
67 #endif
69 /* These functions might be defined in libraries which we load; the
70 JVMTI implementation calls them at the appropriate times. */
71 extern JNIEXPORT jint JNICALL Agent_OnLoad (JavaVM *vm, char *options,
72 void *reserved);
73 extern JNIEXPORT void JNICALL Agent_OnUnload (JavaVM *vm);
75 #ifdef __cplusplus
77 #endif
79 /* Forward declarations */
80 typedef struct _jvmtiAddrLocationMap jvmtiAddrLocationMap;
81 #ifdef __cplusplus
82 typedef struct _Jv_JVMTIEnv jvmtiEnv;
83 #else
84 typedef const struct _Jv_jvmtiEnv *jvmtiEnv;
85 #endif
88 * Error constants
91 typedef enum
93 /* Universal Errors */
94 JVMTI_ERROR_NONE = 0,
95 JVMTI_ERROR_NULL_POINTER = 100,
96 JVMTI_ERROR_OUT_OF_MEMORY = 110,
97 JVMTI_ERROR_ACCESS_DENIED = 111,
98 JVMTI_ERROR_WRONG_PHASE = 112,
99 JVMTI_ERROR_INTERNAL = 113,
100 JVMTI_ERROR_UNATTACHED_THREAD = 115,
101 JVMTI_ERROR_INVALID_ENVIRONMENT = 116,
103 /* Function-specific Required Errors */
104 JVMTI_ERROR_INVALID_PRIORITY = 12,
105 JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13,
106 JVMTI_ERROR_THREAD_SUSPENDED = 14,
107 JVMTI_ERROR_THREAD_NOT_ALIVE = 15,
108 JVMTI_ERROR_CLASS_NOT_PREPARED = 22,
109 JVMTI_ERROR_NO_MORE_FRAMES = 31,
110 JVMTI_ERROR_OPAQUE_FRAME = 32,
111 JVMTI_ERROR_DUPLICATE = 40,
112 JVMTI_ERROR_NOT_FOUND = 41,
113 JVMTI_ERROR_NOT_MONITOR_OWNER = 51,
114 JVMTI_ERROR_INTERRUPT = 52,
115 JVMTI_ERROR_UNMODIFIABLE_CLASS = 79,
116 JVMTI_ERROR_NOT_AVAILABLE = 98,
117 JVMTI_ERROR_ABSENT_INFORMATION = 101,
118 JVMTI_ERROR_INVALID_EVENT_TYPE = 102,
119 JVMTI_ERROR_NATIVE_METHOD = 104,
121 /* Function-specific Agent Errors */
122 JVMTI_ERROR_INVALID_THREAD = 10,
123 JVMTI_ERROR_INVALID_THREAD_GROUP = 11,
124 JVMTI_ERROR_INVALID_OBJECT = 20,
125 JVMTI_ERROR_INVALID_CLASS = 21,
126 JVMTI_ERROR_INVALID_METHODID = 23,
127 JVMTI_ERROR_INVALID_LOCATION = 24,
128 JVMTI_ERROR_INVALID_FIELDID = 25,
129 JVMTI_ERROR_TYPE_MISMATCH = 34,
130 JVMTI_ERROR_INVALID_SLOT = 35,
131 JVMTI_ERROR_INVALID_MONITOR = 50,
132 JVMTI_ERROR_INVALID_CLASS_FORMAT = 60,
133 JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION = 61,
134 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED = 63,
135 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED = 64,
136 JVMTI_ERROR_INVALID_TYPESTATE = 65,
137 JVMTI_ERROR_FAILS_VERIFICATION = 62,
138 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED = 66,
139 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED = 67,
140 JVMTI_ERROR_UNSUPPORTED_VERSION = 68,
141 JVMTI_ERROR_NAMES_DONT_MATCH = 69,
142 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70,
143 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71,
144 JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99,
145 JVMTI_ERROR_ILLEGAL_ARGUMENT = 103
146 } jvmtiError;
149 * Enumeration Definitions
152 typedef enum
154 JVMTI_DISABLE = 0,
155 JVMTI_ENABLE = 1
156 } jvmtiEventMode;
158 typedef enum
160 JVMTI_HEAP_OBJECT_TAGGED = 1,
161 JVMTI_HEAP_OBJECT_UNTAGGED = 2,
162 JVMTI_HEAP_OBJECT_EITHER = 3
163 } jvmtiHeapObjectFilter;
165 typedef enum
167 JVMTI_HEAP_ROOT_JNI_GLOBAL = 1,
168 JVMTI_HEAP_ROOT_SYSTEM_CLASS = 2,
169 JVMTI_HEAP_ROOT_MONITOR = 3,
170 JVMTI_HEAP_ROOT_STACK_LOCAL = 4,
171 JVMTI_HEAP_ROOT_JNI_LOCAL = 5,
172 JVMTI_HEAP_ROOT_THREAD = 6,
173 JVMTI_HEAP_ROOT_OTHER = 7
174 } jvmtiHeapRootKind;
176 typedef enum
178 JVMTI_ITERATION_ABORT = 0,
179 JVMTI_ITERATION_CONTINUE = 1,
180 JVMTI_ITERATION_IGNORE = 2
181 } jvmtiIterationControl;
183 typedef enum
185 JVMTI_JLOCATION_OTHER = 0,
186 JVMTI_JLOCATION_JVMBCI = 1,
187 JVMTI_JLOCATION_MACHINEPC = 2
188 } jvmtiJlocationFormat;
190 typedef enum
192 JVMTI_REFERENCE_CLASS = 1,
193 JVMTI_REFERENCE_FIELD = 2,
194 JVMTI_REFERENCE_ARRAY_ELEMENT = 3,
195 JVMTI_REFERENCE_CLASS_LOADER = 4,
196 JVMTI_REFERENCE_SIGNERS = 5,
197 JVMTI_REFERENCE_PROTECTION_DOMAIN = 6,
198 JVMTI_REFERENCE_INTERFACE = 7,
199 JVMTI_REFERENCE_STATIC_FIELD = 8,
200 JVMTI_REFERENCE_CONSTANT_POOL = 9
201 } jvmtiObjectReferenceKind;
203 typedef enum
205 JVMTI_KIND_IN = 91,
206 JVMTI_KIND_IN_PTR = 92,
207 JVMTI_KIND_IN_BUF = 93,
208 JVMTI_KIND_ALLOC_BUF = 94,
209 JVMTI_KIND_ALLOC_ALLOC_BUF = 95,
210 JVMTI_KIND_OUT = 96,
211 JVMTI_KIND_OUT_BUF = 97
212 } jvmtiParamKind;
214 typedef enum
216 JVMTI_TYPE_JBYTE = 101,
217 JVMTI_TYPE_JCHAR = 102,
218 JVMTI_TYPE_JSHORT = 103,
219 JVMTI_TYPE_JINT = 104,
220 JVMTI_TYPE_JLONG = 105,
221 JVMTI_TYPE_JFLOAT = 106,
222 JVMTI_TYPE_JDOUBLE = 107,
223 JVMTI_TYPE_JBOOLEAN = 108,
224 JVMTI_TYPE_JOBJECT = 109,
225 JVMTI_TYPE_JTHREAD = 110,
226 JVMTI_TYPE_JCLASS = 111,
227 JVMTI_TYPE_JVALUE = 112,
228 JVMTI_TYPE_JFIELDID = 113,
229 JVMTI_TYPE_JMETHODID = 114,
230 JVMTI_TYPE_CCHAR = 115,
231 JVMTI_TYPE_CVOID = 116,
232 JVMTI_TYPE_JNIENV = 117
233 } jvmtiParamTypes;
235 typedef enum
237 JVMTI_PHASE_ONLOAD = 1,
238 JVMTI_PHASE_PRIMORDIAL = 2,
239 JVMTI_PHASE_LIVE = 4,
240 JVMTI_PHASE_START = 6,
241 JVMTI_PHASE_DEAD = 8
242 } jvmtiPhase;
244 typedef enum
246 JVMTI_TIMER_USER_CPU = 30,
247 JVMTI_TIMER_TOTAL_CPU = 31,
248 JVMTI_TIMER_ELAPSED = 32
249 } jvmtiTimerKind;
251 typedef enum
253 JVMTI_VERBOSE_OTHER = 0,
254 JVMTI_VERBOSE_GC = 1,
255 JVMTI_VERBOSE_CLASS = 2,
256 JVMTI_VERBOSE_JNI = 4
257 } jvmtiVerboseFlag;
259 /* Version information */
260 #define JVMTI_VERSION_INTERFACE_JNI 0x00000000
261 #define JVMTI_VERSION_INTERFACE_JVMTI 0x30000000
262 #define JVMTI_VERSION_MASK_INTERFACE_TYPE 0x70000000
263 #define JVMTI_VERSION_MASK_MAJOR 0x0FFF0000
264 #define JVMTI_VERSION_MASK_MINOR 0x0000FF00
265 #define JVMTI_VERSION_MASK_MICRO 0x000000FF
266 #define JVMTI_VERSION_SHIFT_MAJOR 16
267 #define JVMTI_VERSION_SHIFT_MINOR 8
268 #define JVMTI_VERSION_SHIFT_MICRO 0
271 * Events and event callbacks
274 typedef enum
276 JVMTI_EVENT_VM_INIT = 50,
277 JVMTI_EVENT_VM_DEATH = 51,
278 JVMTI_EVENT_THREAD_START = 52,
279 JVMTI_EVENT_THREAD_END = 53,
280 JVMTI_EVENT_CLASS_FILE_LOAD_HOOK = 54,
281 JVMTI_EVENT_CLASS_LOAD = 55,
282 JVMTI_EVENT_CLASS_PREPARE = 56,
283 JVMTI_EVENT_VM_START = 57,
284 JVMTI_EVENT_EXCEPTION = 58,
285 JVMTI_EVENT_EXCEPTION_CATCH = 59,
286 JVMTI_EVENT_SINGLE_STEP = 60,
287 JVMTI_EVENT_FRAME_POP = 61,
288 JVMTI_EVENT_BREAKPOINT = 62,
289 JVMTI_EVENT_FIELD_ACCESS = 63,
290 JVMTI_EVENT_FIELD_MODIFICATION = 64,
291 JVMTI_EVENT_METHOD_ENTRY = 65,
292 JVMTI_EVENT_METHOD_EXIT = 66,
293 JVMTI_EVENT_NATIVE_METHOD_BIND = 67,
294 JVMTI_EVENT_COMPILED_METHOD_LOAD = 68,
295 JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69,
296 JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70,
297 JVMTI_EVENT_DATA_DUMP_REQUEST = 71,
298 JVMTI_EVENT_MONITOR_WAIT = 73,
299 JVMTI_EVENT_MONITOR_WAITED = 74,
300 JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75,
301 JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76,
302 JVMTI_EVENT_GARBAGE_COLLECTION_START = 81,
303 JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82,
304 JVMTI_EVENT_OBJECT_FREE = 83,
305 JVMTI_EVENT_VM_OBJECT_ALLOC = 84
306 } jvmtiEvent;
308 typedef void *jvmtiEventReserved;
310 typedef void (JNICALL *jvmtiEventSingleStep)
311 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
312 jlocation location);
314 typedef void (JNICALL *jvmtiEventBreakpoint)
315 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
316 jlocation location);
318 typedef void (JNICALL *jvmtiEventFieldAccess)
319 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
320 jlocation location, jclass field_klass, jobject object, jfieldID field);
322 typedef void (JNICALL *jvmtiEventFieldModification)
323 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
324 jlocation location, jclass field_klass, jobject object, jfieldID field,
325 char signature_type, jvalue new_value);
327 typedef void (JNICALL *jvmtiEventFramePop)
328 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
329 jboolean was_popped_by_exception);
331 typedef void (JNICALL *jvmtiEventMethodEntry)
332 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method);
334 typedef void (JNICALL *jvmtiEventMethodExit)
335 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
336 jboolean was_popped_by_exception, jvalue return_value);
338 typedef void (JNICALL *jvmtiEventNativeMethodBind)
339 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
340 void *address, void **new_address_ptr);
342 typedef void (JNICALL *jvmtiEventException)
343 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
344 jlocation location, jobject exception, jmethodID catch_method,
345 jlocation catch_location);
347 typedef void (JNICALL *jvmtiEventExceptionCatch)
348 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method,
349 jlocation location, jobject exception);
351 typedef void (JNICALL *jvmtiEventThreadStart)
352 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread);
354 typedef void (JNICALL *jvmtiEventThreadEnd)
355 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread);
357 typedef void (JNICALL *jvmtiEventClassLoad)
358 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jclass klass);
360 typedef void (JNICALL *jvmtiEventClassPrepare)
361 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thraed, jclass klass);
363 typedef void (JNICALL *jvmtiEventClassFileLoadHook)
364 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jclass class_being_redefined,
365 jobject loader, const char *name, jobject protection_domain,
366 jint class_data_len, const unsigned char *class_data,
367 jint *new_class_data_len, unsigned char **new_class_data);
369 typedef void (JNICALL *jvmtiEventVMStart)
370 (jvmtiEnv *jvmti_env, JNIEnv *jni_env);
372 typedef void (JNICALL *jvmtiEventVMInit)
373 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread);
375 typedef void (JNICALL *jvmtiEventVMDeath)
376 (jvmtiEnv *jvmti_env, JNIEnv *jni_env);
378 typedef void (JNICALL *jvmtiEventCompiledMethodLoad)
379 (jvmtiEnv *jvmti_env, jmethodID method, jint code_size,
380 const void *code_addr, jint map_length, const jvmtiAddrLocationMap *map,
381 const void *compile_info);
383 typedef void (JNICALL *jvmtiEventCompiledMethodUnload)
384 (jvmtiEnv *jvmti_env, jmethodID method, const void *code_addr);
386 typedef void (JNICALL *jvmtiEventDynamicCodeGenerated)
387 (jvmtiEnv *jvmti_env, const char *name, const void *address, jint length);
389 typedef void (JNICALL *jvmtiEventDataDumpRequest)
390 (jvmtiEnv *jvmti_env);
392 typedef void (JNICALL *jvmtiEventMonitorContendedEnter)
393 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object);
395 typedef void (JNICALL *jvmtiEventMonitorContendedEntered)
396 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object);
398 typedef void (JNICALL *jvmtiEventMonitorWait)
399 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object,
400 jlong timeout);
402 typedef void (JNICALL *jvmtiEventMonitorWaited)
403 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object,
404 jboolean timed_out);
406 typedef void (JNICALL *jvmtiEventVMObjectAlloc)
407 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object,
408 jclass object_klass, jlong size);
410 typedef void (JNICALL *jvmtiEventObjectFree)
411 (jvmtiEnv *jvmti_env, jlong tag);
413 typedef void (JNICALL *jvmtiEventGarbageCollectionStart)
414 (jvmtiEnv *jvmti_env);
416 typedef void (JNICALL *jvmtiEventGarbageCollectionFinish)
417 (jvmtiEnv *jvmti_env);
419 typedef struct
421 jvmtiEventVMInit VMInit;
422 jvmtiEventVMDeath VMDeath;
423 jvmtiEventThreadStart ThreadStart;
424 jvmtiEventThreadEnd ThreadEnd;
425 jvmtiEventClassFileLoadHook ClassFileLoadHook;
426 jvmtiEventClassLoad ClassLoad;
427 jvmtiEventClassPrepare ClassPrepare;
428 jvmtiEventVMStart VMStart;
429 jvmtiEventException Exception;
430 jvmtiEventExceptionCatch ExceptionCatch;
431 jvmtiEventSingleStep SingleStep;
432 jvmtiEventFramePop FramePop;
433 jvmtiEventBreakpoint Breakpoint;
434 jvmtiEventFieldAccess FieldAccess;
435 jvmtiEventFieldModification FieldModification;
436 jvmtiEventMethodEntry MethodEntry;
437 jvmtiEventMethodExit MethodExit;
438 jvmtiEventNativeMethodBind NativeMethodBind;
439 jvmtiEventCompiledMethodLoad CompiledMethodLoad;
440 jvmtiEventCompiledMethodUnload CompiledMethodUnload;
441 jvmtiEventDynamicCodeGenerated DynamicCodeGenerated;
442 jvmtiEventDataDumpRequest DataDumpRequest;
443 jvmtiEventReserved reserved72;
444 jvmtiEventMonitorWait MonitorWait;
445 jvmtiEventMonitorWaited MonitorWaited;
446 jvmtiEventMonitorContendedEnter MonitorContendedEnter;
447 jvmtiEventMonitorContendedEntered MonitorContendedEntered;
448 jvmtiEventReserved reserved77;
449 jvmtiEventReserved reserved78;
450 jvmtiEventReserved reserved79;
451 jvmtiEventReserved reserved80;
452 jvmtiEventGarbageCollectionStart GarbageCollectionStart;
453 jvmtiEventGarbageCollectionFinish GarbageCollectionFinish;
454 jvmtiEventObjectFree ObjectFree;
455 jvmtiEventVMObjectAlloc VMObjectAlloc;
456 } jvmtiEventCallbacks;
459 * Function and Structure Type Definitions
462 struct _jvmtiAddrLocationMap
464 const void *start_address;
465 jlocation location;
468 typedef struct
470 unsigned int can_tag_objects : 1;
471 unsigned int can_generate_field_modification_events : 1;
472 unsigned int can_generate_field_access_events : 1;
473 unsigned int can_get_bytecodes : 1;
474 unsigned int can_get_synthetic_attribute : 1;
475 unsigned int can_get_owned_monitor_info : 1;
476 unsigned int can_get_current_contended_monitor : 1;
477 unsigned int can_get_monitor_info : 1;
478 unsigned int can_pop_frame : 1;
479 unsigned int can_redefine_classes : 1;
480 unsigned int can_signal_thread : 1;
481 unsigned int can_get_source_file_name : 1;
482 unsigned int can_get_line_numbers : 1;
483 unsigned int can_get_source_debug_extension : 1;
484 unsigned int can_access_local_variables : 1;
485 unsigned int can_maintain_original_method_order : 1;
486 unsigned int can_generate_single_step_events : 1;
487 unsigned int can_generate_exception_events : 1;
488 unsigned int can_generate_frame_pop_events : 1;
489 unsigned int can_generate_breakpoint_events : 1;
490 unsigned int can_suspend : 1;
491 unsigned int can_redefine_any_class : 1;
492 unsigned int can_get_current_thread_cpu_time : 1;
493 unsigned int can_get_thread_cpu_time : 1;
494 unsigned int can_generate_method_entry_events : 1;
495 unsigned int can_generate_method_exit_events : 1;
496 unsigned int can_generate_all_class_hook_events : 1;
497 unsigned int can_generate_compiled_method_load_events : 1;
498 unsigned int can_generate_monitor_events : 1;
499 unsigned int can_generate_vm_object_alloc_events : 1;
500 unsigned int can_generate_native_method_bind_events : 1;
501 unsigned int can_generate_garbage_collection_events : 1;
502 unsigned int can_generate_object_free_events : 1;
503 unsigned int : 15;
504 unsigned int : 16;
505 unsigned int : 16;
506 unsigned int : 16;
507 unsigned int : 16;
508 unsigned int : 16;
509 } jvmtiCapabilities;
511 typedef struct
513 jclass klass;
514 jint class_byte_count;
515 const unsigned char *class_bytes;
516 } jvmtiClassDefinition;
518 typedef struct
520 char *name;
521 jvmtiParamKind kind;
522 jvmtiParamTypes base_type;
523 jboolean null_ok;
524 } jvmtiParamInfo;
526 typedef struct
528 jint extension_event_index;
529 char *id;
530 char *short_description;
531 jint param_count;
532 jvmtiParamInfo* params;
533 } jvmtiExtensionEventInfo;
535 typedef jvmtiError (JNICALL *jvmtiExtensionFunction)
536 (jvmtiEnv *jvmti_enf, ...);
538 typedef struct
540 jvmtiExtensionFunction func;
541 char *id;
542 char *short_description;
543 jint param_count;
544 jvmtiParamInfo *params;
545 jint error_count;
546 jvmtiError *errors;
547 } jvmtiExtensionFunctionInfo;
549 typedef struct
551 jmethodID method;
552 jlocation location;
553 } jvmtiFrameInfo;
555 typedef struct
557 jlocation start_location;
558 jint line_number;
559 } jvmtiLineNumberEntry;
561 typedef struct
563 jlocation start_location;
564 jint length;
565 char *name;
566 char *signature;
567 char *generic_signature;
568 jint slot;
569 } jvmtiLocalVariableEntry;
571 typedef struct
573 jthread owner;
574 jint entry_count;
575 jint waiter_count;
576 jthread *waiters;
577 jint notify_waiter_count;
578 jthread *notify_waiters;
579 } jvmtiMonitorUsage;
581 typedef struct
583 jthread thread;
584 jint state;
585 jvmtiFrameInfo *frame_buffer;
586 jint frame_count;
587 } jvmtiStackInfo;
589 typedef struct
591 jthreadGroup parent;
592 char *name;
593 jint max_priority;
594 jboolean is_daemon;
595 } jvmtiThreadGroupInfo;
597 typedef struct
599 char *name;
600 jint priority;
601 jboolean is_daemon;
602 jthreadGroup thread_group;
603 jobject context_class_loader;
604 } jvmtiThreadInfo;
606 typedef struct
608 jlong max_value;
609 jboolean may_skip_forward;
610 jboolean may_skip_backward;
611 jvmtiTimerKind kind;
612 jlong reserved1;
613 jlong reserved2;
614 } jvmtiTimerInfo;
616 typedef void (JNICALL *jvmtiExtensionEvent)
617 (jvmtiEnv *jvmti_env, ...);
619 typedef jvmtiIterationControl (JNICALL *jvmtiHeapObjectCallback)
620 (jlong class_tag, jlong size, jlong *tag_ptr, void *user_data);
622 typedef jvmtiIterationControl (JNICALL *jvmtiHeapRootCallback)
623 (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong *tag_ptr,
624 void *user_data);
626 typedef jvmtiIterationControl (JNICALL *jvmtiObjectReferenceCallback)
627 (jvmtiObjectReferenceKind reference_kind, jlong class_tag, jlong size,
628 jlong *tag_ptr, jlong referrer_tag, jint referrer_index, void *user_data);
630 typedef jvmtiIterationControl (JNICALL *jvmtiStackReferenceCallback)
631 (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong *tag_ptr,
632 jlong thread_tag, jint depth, jmethodID method, jint slot, void *user_data);
634 typedef void (JNICALL *jvmtiStartFunction)
635 (jvmtiEnv *env, JNIEnv *jni_env, void *arg);
638 * JVM Tool Interface Base Types
640 typedef struct JNINativeInterface jniNativeInterface;
642 struct _Jv_jvmtiEnv
644 void *reserved1;
646 jvmtiError (JNICALL *SetEventNotificationMode) (jvmtiEnv *env,
647 jvmtiEventMode mode,
648 jvmtiEvent event_type,
649 jthread event_thread, ...);
650 void *reserved3;
652 jvmtiError (JNICALL *GetAllThreads) (jvmtiEnv *env,
653 jint *threads_count_ptr,
654 jthread **threads_ptr);
656 jvmtiError (JNICALL *SuspendThread) (jvmtiEnv *env,
657 jthread thread);
659 jvmtiError (JNICALL *ResumeThread) (jvmtiEnv *env,
660 jthread thread);
662 jvmtiError (JNICALL *StopThread) (jvmtiEnv *env,
663 jthread thread,
664 jobject exception);
666 jvmtiError (JNICALL *InterruptThread) (jvmtiEnv *env,
667 jthread thread);
669 jvmtiError (JNICALL *GetThreadInfo) (jvmtiEnv *env,
670 jthread thread,
671 jvmtiThreadInfo *info_ptr);
673 jvmtiError (JNICALL *GetOwnedMonitorInfo) (jvmtiEnv *env,
674 jthread thread,
675 jint *owned_monitor_count_ptr,
676 jobject **owned_monitors_ptr);
678 jvmtiError (JNICALL *GetCurrentContendedMonitor) (jvmtiEnv *env,
679 jthread thread,
680 jobject *monitor_ptr);
682 jvmtiError (JNICALL *RunAgentThread) (jvmtiEnv *env,
683 jthread thread,
684 jvmtiStartFunction proc,
685 const void *arg,
686 jint priority);
688 jvmtiError (JNICALL *GetTopThreadGroups) (jvmtiEnv *env,
689 jint *group_count_ptr,
690 jthreadGroup **groups_ptr);
692 jvmtiError (JNICALL *GetThreadGroupInfo) (jvmtiEnv *env,
693 jthreadGroup group,
694 jvmtiThreadGroupInfo *info_ptr);
696 jvmtiError (JNICALL *GetThreadGroupChildren) (jvmtiEnv *env,
697 jthreadGroup group,
698 jint *thread_count_ptr,
699 jthread **threads_ptr,
700 jint *group_count_ptr,
701 jthreadGroup **groups_ptr);
702 jvmtiError (JNICALL *GetFrameCount) (jvmtiEnv *env,
703 jthread thread,
704 jint *count_ptr);
706 jvmtiError (JNICALL *GetThreadState) (jvmtiEnv *env,
707 jthread thread,
708 jint *thread_state_ptr);
710 void *reserved18;
712 jvmtiError (JNICALL *GetFrameLocation) (jvmtiEnv *env,
713 jthread thread,
714 jint depth,
715 jmethodID *method_ptr,
716 jlocation *location_ptr);
718 jvmtiError (JNICALL *NotifyPopFrame) (jvmtiEnv *env,
719 jthread thread,
720 jint depth);
722 jvmtiError (JNICALL *GetLocalObject) (jvmtiEnv *env,
723 jthread thread,
724 jint depth,
725 jint slot,
726 jobject *value_ptr);
728 jvmtiError (JNICALL *GetLocalInt) (jvmtiEnv *env,
729 jthread thread,
730 jint depth,
731 jint slot,
732 jint *value_ptr);
734 jvmtiError (JNICALL *GetLocalLong) (jvmtiEnv *env,
735 jthread thread,
736 jint depth,
737 jint slot,
738 jlong *value_ptr);
740 jvmtiError (JNICALL *GetLocalFloat) (jvmtiEnv *env,
741 jthread thread,
742 jint depth,
743 jint slot,
744 jfloat *value_ptr);
746 jvmtiError (JNICALL *GetLocalDouble) (jvmtiEnv *env,
747 jthread thread,
748 jint depth,
749 jint slot,
750 jdouble *value_ptr);
752 jvmtiError (JNICALL *SetLocalObject) (jvmtiEnv *env,
753 jthread thread,
754 jint depth,
755 jint slot,
756 jobject value);
758 jvmtiError (JNICALL *SetLocalInt) (jvmtiEnv *env,
759 jthread thread,
760 jint depth,
761 jint slot,
762 jint value);
764 jvmtiError (JNICALL *SetLocalLong) (jvmtiEnv *env,
765 jthread thread,
766 jint depth,
767 jint slot,
768 jlong value);
770 jvmtiError (JNICALL *SetLocalFloat) (jvmtiEnv *env,
771 jthread thread,
772 jint depth,
773 jint slot,
774 jfloat value);
776 jvmtiError (JNICALL *SetLocalDouble) (jvmtiEnv *env,
777 jthread thread,
778 jint depth,
779 jint slot,
780 jdouble value);
782 jvmtiError (JNICALL *CreateRawMonitor) (jvmtiEnv *env,
783 const char *name,
784 jrawMonitorID *monitor_ptr);
786 jvmtiError (JNICALL *DestroyRawMonitor) (jvmtiEnv *env,
787 jrawMonitorID monitor);
789 jvmtiError (JNICALL *RawMonitorEnter) (jvmtiEnv *env,
790 jrawMonitorID monitor);
792 jvmtiError (JNICALL *RawMonitorExit) (jvmtiEnv *env,
793 jrawMonitorID monitor);
795 jvmtiError (JNICALL *RawMonitorWait) (jvmtiEnv *env,
796 jrawMonitorID monitor,
797 jlong millis);
799 jvmtiError (JNICALL *RawMonitorNotify) (jvmtiEnv *env,
800 jrawMonitorID monitor);
802 jvmtiError (JNICALL *RawMonitorNotifyAll) (jvmtiEnv *env,
803 jrawMonitorID monitor);
805 jvmtiError (JNICALL *SetBreakpoint) (jvmtiEnv *env,
806 jmethodID method,
807 jlocation location);
809 jvmtiError (JNICALL *ClearBreakpoint) (jvmtiEnv *env,
810 jmethodID method,
811 jlocation location);
813 void *reserved40;
815 jvmtiError (JNICALL *SetFieldAccessWatch) (jvmtiEnv *env,
816 jclass klass,
817 jfieldID field);
819 jvmtiError (JNICALL *ClearFieldAccessWatch) (jvmtiEnv *env,
820 jclass klass,
821 jfieldID field);
823 jvmtiError (JNICALL *SetFieldModificationWatch) (jvmtiEnv *env,
824 jclass klass,
825 jfieldID field);
827 jvmtiError (JNICALL *ClearFieldModificationWatch) (jvmtiEnv *env,
828 jclass klass,
829 jfieldID field);
831 void *reserved45;
833 jvmtiError (JNICALL *Allocate) (jvmtiEnv *env,
834 jlong size,
835 unsigned char **mem_ptr);
837 jvmtiError (JNICALL *Deallocate) (jvmtiEnv *env,
838 unsigned char *mem);
840 jvmtiError (JNICALL *GetClassSignature) (jvmtiEnv *env,
841 jclass klass,
842 char **signature_ptr,
843 char **generic_ptr);
845 jvmtiError (JNICALL *GetClassStatus) (jvmtiEnv *env,
846 jclass klass,
847 jint *status_ptr);
849 jvmtiError (JNICALL *GetSourceFileName) (jvmtiEnv *env,
850 jclass klass,
851 char **source_name_ptr);
853 jvmtiError (JNICALL *GetClassModifiers) (jvmtiEnv *env,
854 jclass klass,
855 jint *modifiers_ptr);
857 jvmtiError (JNICALL *GetClassMethods) (jvmtiEnv *env,
858 jclass klass,
859 jint *method_count_ptr,
860 jmethodID **methods_ptr);
862 jvmtiError (JNICALL *GetClassFields) (jvmtiEnv *env,
863 jclass klass,
864 jint *field_count_ptr,
865 jfieldID **fields_ptr);
867 jvmtiError (JNICALL *GetImplementedInterfaces) (jvmtiEnv *env,
868 jclass klass,
869 jint *interface_count_ptr,
870 jclass **interfaces_ptr);
872 jvmtiError (JNICALL *IsInterface) (jvmtiEnv *env,
873 jclass klass,
874 jboolean *is_interface_ptr);
876 jvmtiError (JNICALL *IsArrayClass) (jvmtiEnv *env,
877 jclass klass,
878 jboolean *is_array_class_ptr);
880 jvmtiError (JNICALL *GetClassLoader) (jvmtiEnv *env,
881 jclass klass,
882 jobject *classloader_ptr);
884 jvmtiError (JNICALL *GetObjectHashCode) (jvmtiEnv *env,
885 jobject object,
886 jint *hash_code_ptr);
888 jvmtiError (JNICALL *GetObjectMonitorUsage) (jvmtiEnv *env,
889 jobject object,
890 jvmtiMonitorUsage *info_ptr);
892 jvmtiError (JNICALL *GetFieldName) (jvmtiEnv *env,
893 jclass klass,
894 jfieldID field,
895 char **name_ptr,
896 char **signature_ptr,
897 char **generic_ptr);
899 jvmtiError (JNICALL *GetFieldDeclaringClass) (jvmtiEnv *env,
900 jclass klass,
901 jfieldID field,
902 jclass *declaring_class_ptr);
904 jvmtiError (JNICALL *GetFieldModifiers) (jvmtiEnv *env,
905 jclass klass,
906 jfieldID field,
907 jint *modifiers_ptr);
909 jvmtiError (JNICALL *IsFieldSynthetic) (jvmtiEnv *env,
910 jclass klass,
911 jfieldID field,
912 jboolean *is_synthetic_ptr);
914 jvmtiError (JNICALL *GetMethodName) (jvmtiEnv *env,
915 jmethodID method,
916 char **name_ptr,
917 char **signature_ptr,
918 char **generic_ptr);
920 jvmtiError (JNICALL *GetMethodDeclaringClass) (jvmtiEnv *env,
921 jmethodID method,
922 jclass *declaring_class_ptr);
925 jvmtiError (JNICALL *GetMethodModifiers) (jvmtiEnv *env,
926 jmethodID method,
927 jint *modifiers_ptr);
929 void *reserved67;
931 jvmtiError (JNICALL *GetMaxLocals) (jvmtiEnv *env,
932 jmethodID method,
933 jint *max_ptr);
935 jvmtiError (JNICALL *GetArgumentsSize) (jvmtiEnv *env,
936 jmethodID method,
937 jint *size_ptr);
939 jvmtiError (JNICALL *GetLineNumberTable) (jvmtiEnv *env,
940 jmethodID method,
941 jint *entry_count_ptr,
942 jvmtiLineNumberEntry **table_ptr);
944 jvmtiError (JNICALL *GetMethodLocation) (jvmtiEnv *env,
945 jmethodID method,
946 jlocation *start_location_ptr,
947 jlocation *end_location_ptr);
949 jvmtiError (JNICALL *GetLocalVariableTable) (jvmtiEnv *env,
950 jmethodID method,
951 jint *entry_count_ptr,
952 jvmtiLocalVariableEntry **table_ptr);
954 void *reserved73;
956 void *reserved74;
958 jvmtiError (JNICALL *GetBytecodes) (jvmtiEnv *env,
959 jmethodID method,
960 jint *bytecode_count_ptr,
961 unsigned char **bytecodes_ptr);
963 jvmtiError (JNICALL *IsMethodNative) (jvmtiEnv *env,
964 jmethodID method,
965 jboolean *is_native_ptr);
967 jvmtiError (JNICALL *IsMethodSynthetic) (jvmtiEnv *env,
968 jmethodID method,
969 jboolean *is_synthetic_ptr);
971 jvmtiError (JNICALL *GetLoadedClasses) (jvmtiEnv *env,
972 jint *class_count_ptr,
973 jclass **classes_ptr);
975 jvmtiError (JNICALL *GetClassLoaderClasses) (jvmtiEnv *env,
976 jobject initiating_loader,
977 jint *class_count_ptr,
978 jclass **classes_ptr);
980 jvmtiError (JNICALL *PopFrame) (jvmtiEnv *env,
981 jthread thread);
983 void *reserved81;
985 void *reserved82;
987 void *reserved83;
989 void *reserved84;
991 void *reserved85;
993 void *reserved86;
995 jvmtiError (JNICALL *RedefineClasses) (jvmtiEnv *env,
996 jint class_count,
997 const jvmtiClassDefinition* class_definitions);
999 jvmtiError (JNICALL *GetVersionNumber) (jvmtiEnv *env,
1000 jint *version_ptr);
1002 jvmtiError (JNICALL *GetCapabilities) (jvmtiEnv *env,
1003 jvmtiCapabilities *capabilities_ptr);
1005 jvmtiError (JNICALL *GetSourceDebugExtension) (jvmtiEnv *env,
1006 jclass klass,
1007 char **source_debug_extension_ptr);
1009 jvmtiError (JNICALL *IsMethodObsolete) (jvmtiEnv *env,
1010 jmethodID method,
1011 jboolean *is_obsolete_ptr);
1013 jvmtiError (JNICALL *SuspendThreadList) (jvmtiEnv *env,
1014 jint request_count,
1015 const jthread *request_list,
1016 jvmtiError *results);
1018 jvmtiError (JNICALL *ResumeThreadList) (jvmtiEnv *env,
1019 jint request_count,
1020 const jthread *request_list,
1021 jvmtiError *results);
1023 void *reserved94;
1025 void *reserved95;
1027 void *reserved96;
1029 void *reserved97;
1031 void *reserved98;
1033 void *reserved99;
1035 jvmtiError (JNICALL *GetAllStackTraces) (jvmtiEnv *env,
1036 jint max_frame_count,
1037 jvmtiStackInfo **stack_info_ptr,
1038 jint *thread_count_ptr);
1040 jvmtiError (JNICALL *GetThreadListStackTraces) (jvmtiEnv *env,
1041 jint thread_count,
1042 const jthread *thread_list,
1043 jint max_frame_count,
1044 jvmtiStackInfo **stack_info_ptr);
1046 jvmtiError (JNICALL *GetThreadLocalStorage) (jvmtiEnv *env,
1047 jthread thread,
1048 void **data_ptr);
1050 jvmtiError (JNICALL *SetThreadLocalStorage) (jvmtiEnv *env,
1051 jthread thread,
1052 const void *data);
1054 jvmtiError (JNICALL *GetStackTrace) (jvmtiEnv *env,
1055 jthread thread,
1056 jint start_depth,
1057 jint max_frame_count,
1058 jvmtiFrameInfo *frame_buffer,
1059 jint *count_ptr);
1061 void *reserved105;
1063 jvmtiError (JNICALL *GetTag) (jvmtiEnv *env,
1064 jobject object,
1065 jlong *tag_ptr);
1067 jvmtiError (JNICALL *SetTag) (jvmtiEnv *env,
1068 jobject object,
1069 jlong tag);
1071 jvmtiError (JNICALL *ForceGarbageCollection) (jvmtiEnv *env);
1073 jvmtiError (JNICALL *IterateOverObjectsReachableFromObject) (jvmtiEnv *env,
1074 jobject object,
1075 jvmtiObjectReferenceCallback object_reference_callback,
1076 void *user_data);
1078 jvmtiError (JNICALL *IterateOverReachableObjects) (jvmtiEnv *env,
1079 jvmtiHeapRootCallback heap_root_callback,
1080 jvmtiStackReferenceCallback stack_ref_callback,
1081 jvmtiObjectReferenceCallback object_ref_callback,
1082 void *user_data);
1084 jvmtiError (JNICALL *IterateOverHeap) (jvmtiEnv *env,
1085 jvmtiHeapObjectFilter object_filter,
1086 jvmtiHeapObjectCallback heap_object_callback,
1087 void *user_data);
1089 jvmtiError (JNICALL *IterateOverInstanceOfClass) (jvmtiEnv *env,
1090 jclass klass,
1091 jvmtiHeapObjectFilter object_filter,
1092 jvmtiHeapObjectCallback heap_object_callback,
1093 void *user_data);
1095 void *reserved113;
1097 jvmtiError (JNICALL *GetObjectsWithTags) (jvmtiEnv *env,
1098 jint tag_count,
1099 const jlong *tags,
1100 jint *count_ptr,
1101 jobject **object_result_ptr,
1102 jlong **tag_result_ptr);
1104 void *reserved115;
1106 void *reserved116;
1108 void *reserved117;
1110 void *reserved118;
1112 void *reserved119;
1114 jvmtiError (JNICALL *SetJNIFunctionTable) (jvmtiEnv *env,
1115 const jniNativeInterface *function_table);
1117 jvmtiError (JNICALL *GetJNIFunctionTable) (jvmtiEnv *env,
1118 jniNativeInterface **function_table_ptr);
1120 jvmtiError (JNICALL *SetEventCallbacks) (jvmtiEnv *env,
1121 const jvmtiEventCallbacks *callbacks,
1122 jint size_of_callbacks);
1124 jvmtiError (JNICALL *GenerateEvents) (jvmtiEnv *env,
1125 jvmtiEvent event_type);
1127 jvmtiError (JNICALL *GetExtensionFunctions) (jvmtiEnv *env,
1128 jint *extension_count_ptr,
1129 jvmtiExtensionFunctionInfo **extensions);
1131 jvmtiError (JNICALL *GetExtensionEvents) (jvmtiEnv *env,
1132 jint *extension_count_ptr,
1133 jvmtiExtensionEventInfo **extensions);
1135 jvmtiError (JNICALL *SetExtensionEventCallback) (jvmtiEnv *env,
1136 jint extension_event_index,
1137 jvmtiExtensionEvent callback);
1139 jvmtiError (JNICALL *DisposeEnvironment) (jvmtiEnv *env);
1141 jvmtiError (JNICALL *GetErrorName) (jvmtiEnv *env,
1142 jvmtiError error,
1143 char **name_ptr);
1145 jvmtiError (JNICALL *GetJLocationFormat) (jvmtiEnv *env,
1146 jvmtiJlocationFormat *format_ptr);
1148 jvmtiError (JNICALL *GetSystemProperties) (jvmtiEnv *env,
1149 jint *count_ptr,
1150 char ***property_ptr);
1152 jvmtiError (JNICALL *GetSystemProperty) (jvmtiEnv *env,
1153 const char *property,
1154 char **value_ptr);
1156 jvmtiError (JNICALL *SetSystemProperty) (jvmtiEnv *env,
1157 const char *property,
1158 const char *value);
1160 jvmtiError (JNICALL *GetPhase) (jvmtiEnv *env,
1161 jvmtiPhase *phase_ptr);
1163 jvmtiError (JNICALL *GetCurrentThreadCpuTimerInfo) (jvmtiEnv *env,
1164 jvmtiTimerInfo *info_ptr);
1166 jvmtiError (JNICALL *GetCurrentThreadCpuTime) (jvmtiEnv *env,
1167 jlong *nanos_ptr);
1169 jvmtiError (JNICALL *GetThreadCpuTimerInfo) (jvmtiEnv *env,
1170 jvmtiTimerInfo *info_ptr);
1172 jvmtiError (JNICALL *GetThreadCpuTime) (jvmtiEnv *env,
1173 jthread thread,
1174 jlong *nanos_ptr);
1176 jvmtiError (JNICALL *GetTimerInfo) (jvmtiEnv *env,
1177 jvmtiTimerInfo *info_ptr);
1179 jvmtiError (JNICALL *GetTime) (jvmtiEnv *env,
1180 jlong *nanos_ptr);
1182 jvmtiError (JNICALL *GetPotentialCapabilities) (jvmtiEnv *env,
1183 jvmtiCapabilities *capabilities_ptr);
1185 void *reserved141;
1187 jvmtiError (JNICALL *AddCapabilities) (jvmtiEnv *env,
1188 const jvmtiCapabilities *capabilities_ptr);
1190 jvmtiError (JNICALL *RelinquishCapabilities) (jvmtiEnv *env,
1191 const jvmtiCapabilities *capabilities_ptr);
1193 jvmtiError (JNICALL *GetAvailableProcessors) (jvmtiEnv *env,
1194 jint *processor_count_ptr);
1196 void *reserved145;
1198 void *reserved146;
1200 jvmtiError (JNICALL *GetEnvironmentLocalStorage) (jvmtiEnv *env,
1201 void **data_ptr);
1203 jvmtiError (JNICALL *SetEnvironmentLocalStorage) (jvmtiEnv *env,
1204 const void *data);
1206 jvmtiError (JNICALL *AddToBootstrapClassLoaderSearch) (jvmtiEnv *env,
1207 const char *segment);
1209 jvmtiError (JNICALL *SetVerboseFlag) (jvmtiEnv *env,
1210 jvmtiVerboseFlag flag,
1211 jboolean value);
1213 void *reserved151;
1215 void *reserved152;
1217 void *reserved153;
1219 jvmtiError (JNICALL *GetObjectSize) (jvmtiEnv *env,
1220 jobject object,
1221 jlong *size_ptr);
1224 #ifdef __cplusplus
1225 class _Jv_JVMTIEnv
1227 public:
1228 /* Method table */
1229 struct _Jv_jvmtiEnv *p;
1231 #ifdef _CLASSPATH_JVMTIENV_CONTENTS
1232 _CLASSPATH_JVMTIENV_CONTENTS
1233 #endif
1235 jvmtiError SetEventNotificationMode (jvmtiEventMode mode,
1236 jvmtiEvent event_type,
1237 jthread event_thread, ...)
1239 va_list args;
1240 va_start (args, event_thread);
1241 jvmtiError result = p->SetEventNotificationMode (this, mode, event_type,
1242 event_thread, args);
1243 va_end (args);
1244 return result;
1247 jvmtiError GetAllThreads (jint *threads_count_ptr, jthread **threads_ptr)
1248 { return p->GetAllThreads (this, threads_count_ptr, threads_ptr); }
1250 jvmtiError SuspendThread (jthread thread)
1251 { return p->SuspendThread (this, thread); }
1253 jvmtiError ResumeThread (jthread thread)
1254 { return p->ResumeThread (this, thread); }
1256 jvmtiError StopThread (jthread thread, jobject exception)
1257 { return p->StopThread (this, thread, exception); }
1259 jvmtiError InterruptThread (jthread thread)
1260 { return p->InterruptThread (this, thread); }
1262 jvmtiError GetThreadInfo (jthread thread, jvmtiThreadInfo *info_ptr)
1263 { return p->GetThreadInfo (this, thread, info_ptr); }
1265 jvmtiError GetOwnedMonitorInfo (jthread thread,
1266 jint *owned_monitor_count_ptr,
1267 jobject **owned_monitors_ptr)
1269 return p->GetOwnedMonitorInfo (this, thread, owned_monitor_count_ptr,
1270 owned_monitors_ptr);
1273 jvmtiError GetCurrentContendedMonitor (jthread thread, jobject *monitor_ptr)
1274 { return p->GetCurrentContendedMonitor (this, thread, monitor_ptr); }
1276 jvmtiError RunAgentThread (jthread thread, jvmtiStartFunction proc,
1277 const void *arg, jint priority)
1278 { return p->RunAgentThread (this, thread, proc, arg, priority); }
1280 jvmtiError GetTopThreadGroups (jint *group_count_ptr,
1281 jthreadGroup **groups_ptr)
1282 { return p->GetTopThreadGroups (this, group_count_ptr, groups_ptr); }
1284 jvmtiError GetThreadGroupInfo (jthreadGroup group,
1285 jvmtiThreadGroupInfo *info_ptr)
1286 { return p->GetThreadGroupInfo (this, group, info_ptr); }
1288 jvmtiError GetThreadGroupChildren (jthreadGroup group,
1289 jint *thread_count_ptr,
1290 jthread **threads_ptr,
1291 jint *group_count_ptr,
1292 jthreadGroup **groups_ptr)
1294 return p->GetThreadGroupChildren (this, group, thread_count_ptr,
1295 threads_ptr, group_count_ptr,
1296 groups_ptr);
1299 jvmtiError GetFrameCount (jthread thread, jint *count_ptr)
1300 { return p->GetFrameCount (this, thread, count_ptr); }
1302 jvmtiError GetThreadState (jthread thread, jint *thread_state_ptr)
1303 { return p->GetThreadState (this, thread, thread_state_ptr); }
1305 jvmtiError GetFrameLocation (jthread thread, jint depth,
1306 jmethodID *method_ptr, jlocation *location_ptr)
1308 return p->GetFrameLocation (this, thread, depth, method_ptr,
1309 location_ptr);
1312 jvmtiError NotifyPopFrame (jthread thread, jint depth)
1313 { return p->NotifyPopFrame (this, thread, depth); }
1315 jvmtiError GetLocalObject (jthread thread, jint depth, jint slot,
1316 jobject *value_ptr)
1317 { return p->GetLocalObject (this, thread, depth, slot, value_ptr); }
1319 jvmtiError GetLocalInt (jthread thread, jint depth, jint slot,
1320 jint *value_ptr)
1321 { return p->GetLocalInt (this, thread, depth, slot, value_ptr); }
1323 jvmtiError GetLocalLong (jthread thread, jint depth, jint slot,
1324 jlong *value_ptr)
1325 { return p->GetLocalLong (this, thread, depth, slot, value_ptr); }
1327 jvmtiError GetLocalFloat (jthread thread, jint depth, jint slot,
1328 jfloat *value_ptr)
1329 { return p->GetLocalFloat (this, thread, depth, slot, value_ptr); }
1331 jvmtiError GetLocalDouble (jthread thread, jint depth, jint slot,
1332 jdouble *value_ptr)
1333 { return p->GetLocalDouble (this, thread, depth, slot, value_ptr); }
1335 jvmtiError SetLocalObject (jthread thread, jint depth, jint slot,
1336 jobject value)
1337 { return p->SetLocalObject (this, thread, depth, slot, value); }
1339 jvmtiError SetLocalInt (jthread thread, jint depth, jint slot,
1340 jint value)
1341 { return p->SetLocalInt (this, thread, depth, slot, value); }
1343 jvmtiError SetLocalLong (jthread thread, jint depth, jint slot,
1344 jlong value)
1345 { return p->SetLocalLong (this, thread, depth, slot, value); }
1347 jvmtiError SetLocalFloat (jthread thread, jint depth, jint slot,
1348 jfloat value)
1349 { return p->SetLocalFloat (this, thread, depth, slot, value); }
1351 jvmtiError SetLocalDouble (jthread thread, jint depth, jint slot,
1352 jdouble value)
1353 { return p->SetLocalDouble (this, thread, depth, slot, value); }
1355 jvmtiError CreateRawMonitor (const char *name, jrawMonitorID *monitor_ptr)
1356 { return p->CreateRawMonitor (this, name, monitor_ptr); }
1358 jvmtiError DestroyRawMonitor (jrawMonitorID monitor)
1359 { return p->DestroyRawMonitor (this, monitor); }
1361 jvmtiError RawMonitorEnter (jrawMonitorID monitor)
1362 { return p->RawMonitorEnter (this, monitor); }
1364 jvmtiError RawMonitorExit (jrawMonitorID monitor)
1365 { return p->RawMonitorExit (this, monitor); }
1367 jvmtiError RawMonitorWait (jrawMonitorID monitor, jlong millis)
1368 { return p->RawMonitorWait (this, monitor, millis); }
1370 jvmtiError RawMonitorNotify (jrawMonitorID monitor)
1371 { return p->RawMonitorNotify (this, monitor); }
1373 jvmtiError RawMonitorNotifyAll (jrawMonitorID monitor)
1374 { return p->RawMonitorNotifyAll (this, monitor); }
1376 jvmtiError SetBreakpoint (jmethodID method, jlocation location)
1377 { return p->SetBreakpoint (this, method, location); }
1379 jvmtiError ClearBreakpoint (jmethodID method, jlocation location)
1380 { return p->ClearBreakpoint (this, method, location); }
1382 jvmtiError SetFieldAccessWatch (jclass klass, jfieldID field)
1383 { return p->SetFieldAccessWatch (this, klass, field); }
1385 jvmtiError ClearFieldAccessWatch (jclass klass, jfieldID field)
1386 { return p->ClearFieldAccessWatch (this, klass, field); }
1388 jvmtiError SetFieldModificationWatch (jclass klass, jfieldID field)
1389 { return p->SetFieldModificationWatch (this, klass, field); }
1391 jvmtiError ClearFieldModificationWatch (jclass klass, jfieldID field)
1392 { return p->ClearFieldModificationWatch (this, klass, field); }
1394 jvmtiError Allocate (jlong size, unsigned char **mem_ptr)
1395 { return p->Allocate (this, size, mem_ptr); }
1397 jvmtiError Deallocate (unsigned char *mem)
1398 { return p->Deallocate (this, mem); }
1400 jvmtiError GetClassSignature (jclass klass, char **signature_ptr,
1401 char **generic_ptr)
1402 { return p->GetClassSignature (this, klass, signature_ptr, generic_ptr); }
1404 jvmtiError GetClassStatus (jclass klass, jint *status_ptr)
1405 { return p->GetClassStatus (this, klass, status_ptr); }
1407 jvmtiError GetSourceFileName (jclass klass, char **source_name_ptr)
1408 { return p->GetSourceFileName (this, klass, source_name_ptr); }
1410 jvmtiError GetClassModifiers (jclass klass, jint *modifiers_ptr)
1411 { return p->GetClassModifiers (this, klass, modifiers_ptr); }
1413 jvmtiError GetClassMethods (jclass klass, jint *method_count_ptr,
1414 jmethodID **methods_ptr)
1415 { return p->GetClassMethods (this, klass, method_count_ptr, methods_ptr); }
1417 jvmtiError GetClassFields (jclass klass, jint *field_count_ptr,
1418 jfieldID **fields_ptr)
1419 { return p->GetClassFields (this, klass, field_count_ptr, fields_ptr); }
1421 jvmtiError GetImplementedInterfaces (jclass klass,
1422 jint *interface_count_ptr,
1423 jclass **interfaces_ptr)
1425 return p->GetImplementedInterfaces (this, klass, interface_count_ptr,
1426 interfaces_ptr);
1429 jvmtiError IsInterface (jclass klass, jboolean *is_interface_ptr)
1430 { return p->IsInterface (this, klass, is_interface_ptr); }
1432 jvmtiError IsArrayClass (jclass klass, jboolean *is_array_class_ptr)
1433 { return p->IsArrayClass (this, klass, is_array_class_ptr); }
1435 jvmtiError GetClassLoader (jclass klass, jobject *classloader_ptr)
1436 { return p->GetClassLoader (this, klass, classloader_ptr); }
1438 jvmtiError GetObjectHashCode (jobject object, jint *hash_code_ptr)
1439 { return p->GetObjectHashCode (this, object, hash_code_ptr); }
1441 jvmtiError GetObjectMonitorUsage (jobject object,
1442 jvmtiMonitorUsage *info_ptr)
1443 { return p->GetObjectMonitorUsage (this, object, info_ptr); }
1445 jvmtiError GetFieldName (jclass klass, jfieldID field, char **name_ptr,
1446 char **signature_ptr, char **generic_ptr)
1448 return p->GetFieldName (this, klass, field, name_ptr,
1449 signature_ptr, generic_ptr);
1452 jvmtiError GetFieldDeclaringClass (jclass klass, jfieldID field,
1453 jclass *declaring_class_ptr)
1455 return p->GetFieldDeclaringClass (this, klass, field,
1456 declaring_class_ptr);
1459 jvmtiError GetFieldModifiers (jclass klass, jfieldID field,
1460 jint *modifiers_ptr)
1461 { return p->GetFieldModifiers (this, klass, field, modifiers_ptr); }
1463 jvmtiError IsFieldSynthetic (jclass klass, jfieldID field,
1464 jboolean *is_synthetic_ptr)
1465 { return p->IsFieldSynthetic (this, klass, field, is_synthetic_ptr); }
1467 jvmtiError GetMethodName (jmethodID method, char **name_ptr,
1468 char **signature_ptr, char **generic_ptr)
1470 return p->GetMethodName (this, method, name_ptr, signature_ptr,
1471 generic_ptr);
1474 jvmtiError GetMethodDeclaringClass (jmethodID method,
1475 jclass *declaring_class_ptr)
1476 { return p->GetMethodDeclaringClass (this, method, declaring_class_ptr); }
1479 jvmtiError GetMethodModifiers (jmethodID method, jint *modifiers_ptr)
1480 { return p->GetMethodModifiers (this, method, modifiers_ptr); }
1482 jvmtiError GetMaxLocals (jmethodID method, jint *max_ptr)
1483 { return p->GetMaxLocals (this, method, max_ptr); }
1485 jvmtiError GetArgumentsSize (jmethodID method, jint *size_ptr)
1486 { return p->GetArgumentsSize (this, method, size_ptr); }
1488 jvmtiError GetLineNumberTable (jmethodID method, jint *entry_count_ptr,
1489 jvmtiLineNumberEntry **table_ptr)
1490 { return p->GetLineNumberTable (this, method, entry_count_ptr, table_ptr); }
1492 jvmtiError GetMethodLocation (jmethodID method,
1493 jlocation *start_location_ptr,
1494 jlocation *end_location_ptr)
1496 return p->GetMethodLocation (this, method, start_location_ptr,
1497 end_location_ptr);
1500 jvmtiError GetLocalVariableTable (jmethodID method, jint *entry_count_ptr,
1501 jvmtiLocalVariableEntry **table_ptr)
1503 return p->GetLocalVariableTable (this, method, entry_count_ptr,
1504 table_ptr);
1507 jvmtiError GetBytecodes (jmethodID method, jint *bytecode_count_ptr,
1508 unsigned char **bytecodes_ptr)
1510 return p->GetBytecodes (this, method, bytecode_count_ptr,
1511 bytecodes_ptr);
1514 jvmtiError IsMethodNative (jmethodID method, jboolean *is_native_ptr)
1515 { return p->IsMethodNative (this, method, is_native_ptr); }
1517 jvmtiError IsMethodSynthetic (jmethodID method, jboolean *is_synthetic_ptr)
1518 { return p->IsMethodSynthetic (this, method, is_synthetic_ptr); }
1520 jvmtiError GetLoadedClasses (jint *class_count_ptr, jclass **classes_ptr)
1521 { return p->GetLoadedClasses (this, class_count_ptr, classes_ptr); }
1523 jvmtiError GetClassLoaderClasses (jobject initiating_loader,
1524 jint *class_count_ptr,
1525 jclass **classes_ptr)
1527 return p->GetClassLoaderClasses (this, initiating_loader,
1528 class_count_ptr, classes_ptr);
1531 jvmtiError PopFrame (jthread thread)
1532 { return p->PopFrame (this, thread); }
1534 jvmtiError RedefineClasses (jint class_count,
1535 const jvmtiClassDefinition* class_definitions)
1536 { return p->RedefineClasses (this, class_count, class_definitions); }
1538 jvmtiError GetVersionNumber (jint *version_ptr)
1539 { return p->GetVersionNumber (this, version_ptr); }
1541 jvmtiError GetCapabilities (jvmtiCapabilities *capabilities_ptr)
1542 { return p->GetCapabilities (this, capabilities_ptr); }
1544 jvmtiError GetSourceDebugExtension (jclass klass,
1545 char **source_debug_extension_ptr)
1547 return p->GetSourceDebugExtension (this, klass,
1548 source_debug_extension_ptr);
1551 jvmtiError IsMethodObsolete (jmethodID method, jboolean *is_obsolete_ptr)
1552 { return p->IsMethodObsolete (this, method, is_obsolete_ptr); }
1555 jvmtiError SuspendThreadList (jint request_count,
1556 const jthread *request_list,
1557 jvmtiError *results)
1558 { return p->SuspendThreadList (this, request_count, request_list, results); }
1560 jvmtiError ResumeThreadList (jint request_count,
1561 const jthread *request_list,
1562 jvmtiError *results)
1563 { return p->ResumeThreadList (this, request_count, request_list, results); }
1565 jvmtiError GetAllStackTraces (jint max_frame_count,
1566 jvmtiStackInfo **stack_info_ptr,
1567 jint *thread_count_ptr)
1569 return p->GetAllStackTraces (this, max_frame_count, stack_info_ptr,
1570 thread_count_ptr);
1573 jvmtiError GetThreadListStackTraces (jint thread_count,
1574 const jthread *thread_list,
1575 jint max_frame_count,
1576 jvmtiStackInfo **stack_info_ptr)
1578 return p->GetThreadListStackTraces (this, thread_count, thread_list,
1579 max_frame_count, stack_info_ptr);
1582 jvmtiError GetThreadLocalStorage (jthread thread, void **data_ptr)
1583 { return p->GetThreadLocalStorage (this, thread, data_ptr); }
1585 jvmtiError SetThreadLocalStorage (jthread thread, const void *data)
1586 { return p->SetThreadLocalStorage (this, thread, data); }
1588 jvmtiError GetStackTrace (jthread thread, jint start_depth,
1589 jint max_frame_count,
1590 jvmtiFrameInfo *frame_buffer, jint *count_ptr)
1592 return p->GetStackTrace (this, thread, start_depth, max_frame_count,
1593 frame_buffer, count_ptr);
1596 jvmtiError GetTag (jobject object, jlong *tag_ptr)
1597 { return p->GetTag (this, object, tag_ptr); }
1599 jvmtiError SetTag (jobject object, jlong tag)
1600 { return p->SetTag (this, object, tag); }
1602 jvmtiError ForceGarbageCollection (void)
1603 { return p->ForceGarbageCollection (this); }
1605 jvmtiError IterateOverObjectsReachableFromObject (jobject object,
1606 jvmtiObjectReferenceCallback object_reference_callback,
1607 void *user_data)
1609 return p->IterateOverObjectsReachableFromObject (this, object,
1610 object_reference_callback,
1611 user_data);
1614 jvmtiError IterateOverReachableObjects (jvmtiHeapRootCallback heap_root_callback,
1615 jvmtiStackReferenceCallback stack_ref_callback,
1616 jvmtiObjectReferenceCallback object_ref_callback,
1617 void *user_data)
1619 return p->IterateOverReachableObjects (this, heap_root_callback,
1620 stack_ref_callback,
1621 object_ref_callback,
1622 user_data);
1625 jvmtiError IterateOverHeap (jvmtiHeapObjectFilter object_filter,
1626 jvmtiHeapObjectCallback heap_object_callback,
1627 void *user_data)
1629 return p->IterateOverHeap (this, object_filter, heap_object_callback,
1630 user_data);
1633 jvmtiError IterateOverInstanceOfClass (jclass klass,
1634 jvmtiHeapObjectFilter object_filter,
1635 jvmtiHeapObjectCallback heap_object_callback,
1636 void *user_data)
1638 return p->IterateOverInstanceOfClass (this, klass, object_filter,
1639 heap_object_callback, user_data);
1642 jvmtiError GetObjectsWithTags (jint tag_count, const jlong *tags,
1643 jint *count_ptr, jobject **object_result_ptr,
1644 jlong **tag_result_ptr)
1646 return p->GetObjectsWithTags (this, tag_count, tags, count_ptr,
1647 object_result_ptr, tag_result_ptr);
1650 jvmtiError SetJNIFunctionTable (const jniNativeInterface *function_table)
1651 { return p->SetJNIFunctionTable (this, function_table); }
1653 jvmtiError GetJNIFunctionTable (jniNativeInterface **function_table_ptr)
1654 { return p->GetJNIFunctionTable (this, function_table_ptr); }
1656 jvmtiError SetEventCallbacks (const jvmtiEventCallbacks *callbacks,
1657 jint size_of_callbacks)
1658 { return p->SetEventCallbacks (this, callbacks, size_of_callbacks); }
1660 jvmtiError GenerateEvents (jvmtiEvent event_type)
1661 { return p->GenerateEvents (this, event_type); }
1663 jvmtiError GetExtensionFunctions (jint *extension_count_ptr,
1664 jvmtiExtensionFunctionInfo **extensions)
1665 { return p->GetExtensionFunctions (this, extension_count_ptr, extensions); }
1667 jvmtiError GetExtensionEvents (jint *extension_count_ptr,
1668 jvmtiExtensionEventInfo **extensions)
1669 { return p->GetExtensionEvents (this, extension_count_ptr, extensions); }
1671 jvmtiError SetExtensionEventCallback (jint extension_event_index,
1672 jvmtiExtensionEvent callback)
1674 return p->SetExtensionEventCallback (this, extension_event_index,
1675 callback);
1678 jvmtiError DisposeEnvironment (void)
1679 { return p->DisposeEnvironment (this); }
1681 jvmtiError GetErrorName (jvmtiError error, char **name_ptr)
1682 { return p->GetErrorName (this, error, name_ptr); }
1684 jvmtiError GetJLocationFormat (jvmtiJlocationFormat *format_ptr)
1685 { return p->GetJLocationFormat (this, format_ptr); }
1687 jvmtiError GetSystemProperties (jint *count_ptr, char ***property_ptr)
1688 { return p->GetSystemProperties (this, count_ptr, property_ptr); }
1690 jvmtiError GetSystemProperty (const char *property, char **value_ptr)
1691 { return p->GetSystemProperty (this, property, value_ptr); }
1693 jvmtiError SetSystemProperty (const char *property, const char *value)
1694 { return p->SetSystemProperty (this, property, value); }
1696 jvmtiError GetPhase (jvmtiPhase *phase_ptr)
1697 { return p->GetPhase (this, phase_ptr); }
1699 jvmtiError GetCurrentThreadCpuTimerInfo (jvmtiTimerInfo *info_ptr)
1700 { return p->GetCurrentThreadCpuTimerInfo (this, info_ptr); }
1702 jvmtiError GetCurrentThreadCpuTime (jlong *nanos_ptr)
1703 { return p->GetCurrentThreadCpuTime (this, nanos_ptr); }
1705 jvmtiError GetThreadCpuTimerInfo (jvmtiTimerInfo *info_ptr)
1706 { return p->GetThreadCpuTimerInfo (this, info_ptr); }
1708 jvmtiError GetThreadCpuTime (jthread thread, jlong *nanos_ptr)
1709 { return p->GetThreadCpuTime (this, thread, nanos_ptr); }
1711 jvmtiError GetTimerInfo (jvmtiTimerInfo *info_ptr)
1712 { return p->GetTimerInfo (this, info_ptr); }
1714 jvmtiError GetTime (jlong *nanos_ptr)
1715 {return p->GetTime (this, nanos_ptr); }
1717 jvmtiError GetPotentialCapabilities (jvmtiCapabilities *capabilities_ptr)
1718 { return p->GetPotentialCapabilities (this, capabilities_ptr); }
1720 jvmtiError AddCapabilities (const jvmtiCapabilities *capabilities_ptr)
1721 { return p->AddCapabilities (this, capabilities_ptr); }
1723 jvmtiError RelinquishCapabilities (const jvmtiCapabilities *capabilities_ptr)
1724 { return p->RelinquishCapabilities (this, capabilities_ptr); }
1726 jvmtiError GetAvailableProcessors (jint *processor_count_ptr)
1727 { return p->GetAvailableProcessors (this, processor_count_ptr); }
1729 jvmtiError GetEnvironmentLocalStorage (void **data_ptr)
1730 { return p->GetEnvironmentLocalStorage (this, data_ptr); }
1732 jvmtiError SetEnvironmentLocalStorage (const void *data)
1733 { return p->SetEnvironmentLocalStorage (this, data); }
1735 jvmtiError AddToBootstrapClassLoaderSearch (const char *segment)
1736 { return p->AddToBootstrapClassLoaderSearch (this, segment); }
1738 jvmtiError SetVerboseFlag (jvmtiVerboseFlag flag, jboolean value)
1739 { return p->SetVerboseFlag (this, flag, value); }
1741 jvmtiError GetObjectSize (jobject object, jlong *size_ptr)
1742 { return p->GetObjectSize (this, object, size_ptr); }
1744 #endif /* __cplusplus */
1747 * Miscellaneous flags, constants, etc
1750 /* Class status flags */
1751 #define JVMTI_CLASS_STATUS_VERIFIED 1
1752 #define JVMTI_CLASS_STATUS_PREPARED 2
1753 #define JVMTI_CLASS_STATUS_INITIALIZED 4
1754 #define JVMTI_CLASS_STATUS_ERROR 8
1755 #define JVMTI_CLASS_STATUS_ARRAY 16
1756 #define JVMTI_CLASS_STATUS_PRIMITIVE 32
1758 /* Thread state flags */
1759 #define JVMTI_THREAD_STATE_ALIVE 0x0001
1760 #define JVMTI_THREAD_STATE_TERMINATED 0x0002
1761 #define JVMTI_THREAD_STATE_RUNNABLE 0x0004
1762 #define JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER 0x0400
1763 #define JVMTI_THREAD_STATE_WAITING 0x0080
1764 #define JVMTI_THREAD_STATE_WAITING_INDEFINITELY 0x0010
1765 #define JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT 0x0020
1766 #define JVMTI_THREAD_STATE_SLEEPING 0x0040
1767 #define JVMTI_THREAD_STATE_IN_OBJECT_WAIT 0x0100
1768 #define JVMTI_THREAD_STATE_PARKED 0x0200
1769 #define JVMTI_THREAD_STATE_SUSPENDED 0x100000
1770 #define JVMTI_THREAD_STATE_INTERRUPTED 0x200000
1771 #define JVMTI_THREAD_STATE_IN_NATIVE 0x400000
1772 #define JVMTI_THREAD_STATE_VENDOR_1 0x10000000
1773 #define JVMTI_THREAD_STATE_VENDOR_2 0x20000000
1774 #define JVMTI_THREAD_STATE_VENDOR_3 0x40000000
1776 /* java.lang.Thread.State conversion masks */
1777 #define JVMTI_JAVA_LANG_THREAD_STATE_MASK \
1778 (JVMTI_THREAD_STATE_TERMINATED \
1779 | JVMTI_THREAD_STATE_ALIVE \
1780 | JVMTI_THREAD_STATE_RUNNABLE \
1781 | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER \
1782 | JVMTI_THREAD_STATE_WAITING \
1783 | JVMTI_THREAD_STATE_WAITING_INDEFINITELY \
1784 | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT)
1785 #define JVMTI_JAVA_LANG_THREAD_STATE_NEW 0
1786 #define JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED JVMTI_THREAD_STATE_TERMINATED
1787 #define JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE \
1788 (JVMTI_THREAD_STATE_ALIVE \
1789 | JVMTI_THREAD_STATE_RUNNABLE)
1790 #define JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED \
1791 (JVMTI_THREAD_STATE_ALIVE \
1792 | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER)
1793 #define JVMTI_JAVA_LANG_THREAD_STATE_WAITING \
1794 (JVMTI_THREAD_STATE_ALIVE \
1795 | JVMTI_THREAD_STATE_WAITING \
1796 | JVMTI_THREAD_STATE_WAITING_INDEFINITELY)
1797 #define JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING \
1798 (JVMTI_THREAD_STATE_ALIVE \
1799 | JVMTI_THREAD_STATE_WAITING \
1800 | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT)
1802 /* Thread priorities */
1803 #define JVMTI_THREAD_MIN_PRIORITY 1
1804 #define JVMTI_THREAD_NORM_PRIORITY 5
1805 #define JVMTI_THREAD_MAX_PRIORITY 10
1807 /* Keep c-font-lock-extra-types in order: JNI followed by JVMTI,
1808 all in alphabetical order */
1809 /* Local Variables: */
1810 /* c-font-lock-extra-types: ("\\sw+_t"
1811 "JNIEnv" "JNINativeMethod" "JavaVM" "JavaVMOption" "jarray"
1812 "jboolean" "jbooleanArray" "jbyte" "jbyteArray" "jchar" "jcharArray"
1813 "jclass" "jdouble" "jdoubleArray" "jfieldID" "jfloat" "jfloatArray"
1814 "jint" "jintArray" "jlong" "jlongArray" "jmethodID" "jobject" "jstring" "jthrowable"
1815 "jvalue" "jweak"
1816 "jvmtiEnv" "jvmtiError"
1817 "jthread" "jthreadGroup" "jlocation" "jrawMonitorID") */
1818 /* End: */
1819 #endif /* !_CLASSPATH_JVMTI_H */