jvmti_rs/sys/
jvmtienv.rs

1#![allow(non_snake_case, non_camel_case_types)]
2
3use jni_sys::*;
4use std::os::raw::c_char;
5use std::os::raw::c_void;
6use std::os::raw::c_uchar;
7use std::option::Option;
8
9use crate::sys::r#type::*;
10use crate::sys::constant::{jvmtiEventMode, jvmtiEvent, jvmtiError, jvmtiHeapObjectFilter, jvmtiJlocationFormat, jvmtiPhase, jvmtiVerboseFlag};
11
12pub type jvmtiEnv = *const jvmtiInterface_;
13
14#[repr(C)]
15#[derive(Debug, Copy, Clone)]
16pub struct jvmtiInterface_ {
17    pub reserved1: *mut c_void,
18    pub SetEventNotificationMode: Option<
19        unsafe extern "C" fn(
20            env: *mut jvmtiEnv,
21            mode: jvmtiEventMode,
22            event_type: jvmtiEvent,
23            event_thread: jthread,
24            ...
25        ) -> jvmtiError,
26    >,
27    pub reserved3: *mut c_void,
28    pub GetAllThreads: Option<
29        unsafe extern "C" fn(
30            env: *mut jvmtiEnv,
31            threads_count_ptr: *mut jint,
32            threads_ptr: *mut *mut jthread,
33        ) -> jvmtiError,
34    >,
35    pub SuspendThread: Option<
36        unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread) -> jvmtiError,
37    >,
38    pub ResumeThread: Option<
39        unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread) -> jvmtiError,
40    >,
41    pub StopThread: Option<
42        unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, exception: jobject) -> jvmtiError,
43    >,
44    pub InterruptThread: Option<
45        unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread) -> jvmtiError,
46    >,
47    pub GetThreadInfo: Option<
48        unsafe extern "C" fn(
49            env: *mut jvmtiEnv,
50            thread: jthread,
51            info_ptr: *mut jvmtiThreadInfo,
52        ) -> jvmtiError,
53    >,
54    pub GetOwnedMonitorInfo: Option<
55        unsafe extern "C" fn(
56            env: *mut jvmtiEnv,
57            thread: jthread,
58            owned_monitor_count_ptr: *mut jint,
59            owned_monitors_ptr: *mut *mut jobject,
60        ) -> jvmtiError,
61    >,
62    pub GetCurrentContendedMonitor: Option<
63        unsafe extern "C" fn(
64            env: *mut jvmtiEnv,
65            thread: jthread,
66            monitor_ptr: *mut jobject,
67        ) -> jvmtiError,
68    >,
69    pub RunAgentThread: Option<
70        unsafe extern "C" fn(
71            env: *mut jvmtiEnv,
72            thread: jthread,
73            proc_: jvmtiStartFunction,
74            arg: *const c_void,
75            priority: jint,
76        ) -> jvmtiError,
77    >,
78    pub GetTopThreadGroups: Option<
79        unsafe extern "C" fn(
80            env: *mut jvmtiEnv,
81            group_count_ptr: *mut jint,
82            groups_ptr: *mut *mut jthreadGroup,
83        ) -> jvmtiError,
84    >,
85    pub GetThreadGroupInfo: Option<
86        unsafe extern "C" fn(
87            env: *mut jvmtiEnv,
88            group: jthreadGroup,
89            info_ptr: *mut jvmtiThreadGroupInfo,
90        ) -> jvmtiError,
91    >,
92    pub GetThreadGroupChildren: Option<
93        unsafe extern "C" fn(
94            env: *mut jvmtiEnv,
95            group: jthreadGroup,
96            thread_count_ptr: *mut jint,
97            threads_ptr: *mut *mut jthread,
98            group_count_ptr: *mut jint,
99            groups_ptr: *mut *mut jthreadGroup,
100        ) -> jvmtiError,
101    >,
102    pub GetFrameCount: Option<
103        unsafe extern "C" fn(
104            env: *mut jvmtiEnv,
105            thread: jthread,
106            count_ptr: *mut jint,
107        ) -> jvmtiError,
108    >,
109    pub GetThreadState: Option<
110        unsafe extern "C" fn(
111            env: *mut jvmtiEnv,
112            thread: jthread,
113            thread_state_ptr: *mut jint,
114        ) -> jvmtiError,
115    >,
116    pub GetCurrentThread: Option<
117        unsafe extern "C" fn(env: *mut jvmtiEnv, thread_ptr: *mut jthread) -> jvmtiError,
118    >,
119    pub GetFrameLocation: Option<
120        unsafe extern "C" fn(
121            env: *mut jvmtiEnv,
122            thread: jthread,
123            depth: jint,
124            method_ptr: *mut jmethodID,
125            location_ptr: *mut jlocation,
126        ) -> jvmtiError,
127    >,
128    pub NotifyFramePop: Option<
129        unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, depth: jint) -> jvmtiError,
130    >,
131    pub GetLocalObject: Option<
132        unsafe extern "C" fn(
133            env: *mut jvmtiEnv,
134            thread: jthread,
135            depth: jint,
136            slot: jint,
137            value_ptr: *mut jobject,
138        ) -> jvmtiError,
139    >,
140    pub GetLocalInt: Option<
141        unsafe extern "C" fn(
142            env: *mut jvmtiEnv,
143            thread: jthread,
144            depth: jint,
145            slot: jint,
146            value_ptr: *mut jint,
147        ) -> jvmtiError,
148    >,
149    pub GetLocalLong: Option<
150        unsafe extern "C" fn(
151            env: *mut jvmtiEnv,
152            thread: jthread,
153            depth: jint,
154            slot: jint,
155            value_ptr: *mut jlong,
156        ) -> jvmtiError,
157    >,
158    pub GetLocalFloat: Option<
159        unsafe extern "C" fn(
160            env: *mut jvmtiEnv,
161            thread: jthread,
162            depth: jint,
163            slot: jint,
164            value_ptr: *mut jfloat,
165        ) -> jvmtiError,
166    >,
167    pub GetLocalDouble: Option<
168        unsafe extern "C" fn(
169            env: *mut jvmtiEnv,
170            thread: jthread,
171            depth: jint,
172            slot: jint,
173            value_ptr: *mut jdouble,
174        ) -> jvmtiError,
175    >,
176    pub SetLocalObject: Option<
177        unsafe extern "C" fn(
178            env: *mut jvmtiEnv,
179            thread: jthread,
180            depth: jint,
181            slot: jint,
182            value: jobject,
183        ) -> jvmtiError,
184    >,
185    pub SetLocalInt: Option<
186        unsafe extern "C" fn(
187            env: *mut jvmtiEnv,
188            thread: jthread,
189            depth: jint,
190            slot: jint,
191            value: jint,
192        ) -> jvmtiError,
193    >,
194    pub SetLocalLong: Option<
195        unsafe extern "C" fn(
196            env: *mut jvmtiEnv,
197            thread: jthread,
198            depth: jint,
199            slot: jint,
200            value: jlong,
201        ) -> jvmtiError,
202    >,
203    pub SetLocalFloat: Option<
204        unsafe extern "C" fn(
205            env: *mut jvmtiEnv,
206            thread: jthread,
207            depth: jint,
208            slot: jint,
209            value: jfloat,
210        ) -> jvmtiError,
211    >,
212    pub SetLocalDouble: Option<
213        unsafe extern "C" fn(
214            env: *mut jvmtiEnv,
215            thread: jthread,
216            depth: jint,
217            slot: jint,
218            value: jdouble,
219        ) -> jvmtiError,
220    >,
221    pub CreateRawMonitor: Option<
222        unsafe extern "C" fn(
223            env: *mut jvmtiEnv,
224            name: *const c_char,
225            monitor_ptr: *mut jrawMonitorID,
226        ) -> jvmtiError,
227    >,
228    pub DestroyRawMonitor: Option<
229        unsafe extern "C" fn(env: *mut jvmtiEnv, monitor: jrawMonitorID) -> jvmtiError,
230    >,
231    pub RawMonitorEnter: Option<
232        unsafe extern "C" fn(env: *mut jvmtiEnv, monitor: jrawMonitorID) -> jvmtiError,
233    >,
234    pub RawMonitorExit: Option<
235        unsafe extern "C" fn(env: *mut jvmtiEnv, monitor: jrawMonitorID) -> jvmtiError,
236    >,
237    pub RawMonitorWait: Option<
238        unsafe extern "C" fn(
239            env: *mut jvmtiEnv,
240            monitor: jrawMonitorID,
241            millis: jlong,
242        ) -> jvmtiError,
243    >,
244    pub RawMonitorNotify: Option<
245        unsafe extern "C" fn(env: *mut jvmtiEnv, monitor: jrawMonitorID) -> jvmtiError,
246    >,
247    pub RawMonitorNotifyAll: Option<
248        unsafe extern "C" fn(env: *mut jvmtiEnv, monitor: jrawMonitorID) -> jvmtiError,
249    >,
250    pub SetBreakpoint: Option<
251        unsafe extern "C" fn(
252            env: *mut jvmtiEnv,
253            method: jmethodID,
254            location: jlocation,
255        ) -> jvmtiError,
256    >,
257    pub ClearBreakpoint: Option<
258        unsafe extern "C" fn(
259            env: *mut jvmtiEnv,
260            method: jmethodID,
261            location: jlocation,
262        ) -> jvmtiError,
263    >,
264    pub reserved40: *mut c_void,
265    pub SetFieldAccessWatch: Option<
266        unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, field: jfieldID) -> jvmtiError,
267    >,
268    pub ClearFieldAccessWatch: Option<
269        unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, field: jfieldID) -> jvmtiError,
270    >,
271    pub SetFieldModificationWatch: Option<
272        unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, field: jfieldID) -> jvmtiError,
273    >,
274    pub ClearFieldModificationWatch: Option<
275        unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, field: jfieldID) -> jvmtiError,
276    >,
277    pub IsModifiableClass: Option<
278        unsafe extern "C" fn(
279            env: *mut jvmtiEnv,
280            klass: jclass,
281            is_modifiable_class_ptr: *mut jboolean,
282        ) -> jvmtiError,
283    >,
284    pub Allocate: Option<
285        unsafe extern "C" fn(
286            env: *mut jvmtiEnv,
287            size: jlong,
288            mem_ptr: *mut *mut c_uchar,
289        ) -> jvmtiError,
290    >,
291    pub Deallocate: Option<
292        unsafe extern "C" fn(env: *mut jvmtiEnv, mem: *mut c_uchar) -> jvmtiError,
293    >,
294    pub GetClassSignature: Option<
295        unsafe extern "C" fn(
296            env: *mut jvmtiEnv,
297            klass: jclass,
298            signature_ptr: *mut *mut c_char,
299            generic_ptr: *mut *mut c_char,
300        ) -> jvmtiError,
301    >,
302    pub GetClassStatus: Option<
303        unsafe extern "C" fn(
304            env: *mut jvmtiEnv,
305            klass: jclass,
306            status_ptr: *mut jint,
307        ) -> jvmtiError,
308    >,
309    pub GetSourceFileName: Option<
310        unsafe extern "C" fn(
311            env: *mut jvmtiEnv,
312            klass: jclass,
313            source_name_ptr: *mut *mut c_char,
314        ) -> jvmtiError,
315    >,
316    pub GetClassModifiers: Option<
317        unsafe extern "C" fn(
318            env: *mut jvmtiEnv,
319            klass: jclass,
320            modifiers_ptr: *mut jint,
321        ) -> jvmtiError,
322    >,
323    pub GetClassMethods: Option<
324        unsafe extern "C" fn(
325            env: *mut jvmtiEnv,
326            klass: jclass,
327            method_count_ptr: *mut jint,
328            methods_ptr: *mut *mut jmethodID,
329        ) -> jvmtiError,
330    >,
331    pub GetClassFields: Option<
332        unsafe extern "C" fn(
333            env: *mut jvmtiEnv,
334            klass: jclass,
335            field_count_ptr: *mut jint,
336            fields_ptr: *mut *mut jfieldID,
337        ) -> jvmtiError,
338    >,
339    pub GetImplementedInterfaces: Option<
340        unsafe extern "C" fn(
341            env: *mut jvmtiEnv,
342            klass: jclass,
343            interface_count_ptr: *mut jint,
344            interfaces_ptr: *mut *mut jclass,
345        ) -> jvmtiError,
346    >,
347    pub IsInterface: Option<
348        unsafe extern "C" fn(
349            env: *mut jvmtiEnv,
350            klass: jclass,
351            is_interface_ptr: *mut jboolean,
352        ) -> jvmtiError,
353    >,
354    pub IsArrayClass: Option<
355        unsafe extern "C" fn(
356            env: *mut jvmtiEnv,
357            klass: jclass,
358            is_array_class_ptr: *mut jboolean,
359        ) -> jvmtiError,
360    >,
361    pub GetClassLoader: Option<
362        unsafe extern "C" fn(
363            env: *mut jvmtiEnv,
364            klass: jclass,
365            classloader_ptr: *mut jobject,
366        ) -> jvmtiError,
367    >,
368    pub GetObjectHashCode: Option<
369        unsafe extern "C" fn(
370            env: *mut jvmtiEnv,
371            object: jobject,
372            hash_code_ptr: *mut jint,
373        ) -> jvmtiError,
374    >,
375    pub GetObjectMonitorUsage: Option<
376        unsafe extern "C" fn(
377            env: *mut jvmtiEnv,
378            object: jobject,
379            info_ptr: *mut jvmtiMonitorUsage,
380        ) -> jvmtiError,
381    >,
382    pub GetFieldName: Option<
383        unsafe extern "C" fn(
384            env: *mut jvmtiEnv,
385            klass: jclass,
386            field: jfieldID,
387            name_ptr: *mut *mut c_char,
388            signature_ptr: *mut *mut c_char,
389            generic_ptr: *mut *mut c_char,
390        ) -> jvmtiError,
391    >,
392    pub GetFieldDeclaringClass: Option<
393        unsafe extern "C" fn(
394            env: *mut jvmtiEnv,
395            klass: jclass,
396            field: jfieldID,
397            declaring_class_ptr: *mut jclass,
398        ) -> jvmtiError,
399    >,
400    pub GetFieldModifiers: Option<
401        unsafe extern "C" fn(
402            env: *mut jvmtiEnv,
403            klass: jclass,
404            field: jfieldID,
405            modifiers_ptr: *mut jint,
406        ) -> jvmtiError,
407    >,
408    pub IsFieldSynthetic: Option<
409        unsafe extern "C" fn(
410            env: *mut jvmtiEnv,
411            klass: jclass,
412            field: jfieldID,
413            is_synthetic_ptr: *mut jboolean,
414        ) -> jvmtiError,
415    >,
416    pub GetMethodName: Option<
417        unsafe extern "C" fn(
418            env: *mut jvmtiEnv,
419            method: jmethodID,
420            name_ptr: *mut *mut c_char,
421            signature_ptr: *mut *mut c_char,
422            generic_ptr: *mut *mut c_char,
423        ) -> jvmtiError,
424    >,
425    pub GetMethodDeclaringClass: Option<
426        unsafe extern "C" fn(
427            env: *mut jvmtiEnv,
428            method: jmethodID,
429            declaring_class_ptr: *mut jclass,
430        ) -> jvmtiError,
431    >,
432    pub GetMethodModifiers: Option<
433        unsafe extern "C" fn(
434            env: *mut jvmtiEnv,
435            method: jmethodID,
436            modifiers_ptr: *mut jint,
437        ) -> jvmtiError,
438    >,
439    pub reserved67: *mut c_void,
440    pub GetMaxLocals: Option<
441        unsafe extern "C" fn(
442            env: *mut jvmtiEnv,
443            method: jmethodID,
444            max_ptr: *mut jint,
445        ) -> jvmtiError,
446    >,
447    pub GetArgumentsSize: Option<
448        unsafe extern "C" fn(
449            env: *mut jvmtiEnv,
450            method: jmethodID,
451            size_ptr: *mut jint,
452        ) -> jvmtiError,
453    >,
454    pub GetLineNumberTable: Option<
455        unsafe extern "C" fn(
456            env: *mut jvmtiEnv,
457            method: jmethodID,
458            entry_count_ptr: *mut jint,
459            table_ptr: *mut *mut jvmtiLineNumberEntry,
460        ) -> jvmtiError,
461    >,
462    pub GetMethodLocation: Option<
463        unsafe extern "C" fn(
464            env: *mut jvmtiEnv,
465            method: jmethodID,
466            start_location_ptr: *mut jlocation,
467            end_location_ptr: *mut jlocation,
468        ) -> jvmtiError,
469    >,
470    pub GetLocalVariableTable: Option<
471        unsafe extern "C" fn(
472            env: *mut jvmtiEnv,
473            method: jmethodID,
474            entry_count_ptr: *mut jint,
475            table_ptr: *mut *mut jvmtiLocalVariableEntry,
476        ) -> jvmtiError,
477    >,
478    pub SetNativeMethodPrefix: Option<
479        unsafe extern "C" fn(
480            env: *mut jvmtiEnv,
481            prefix: *const c_char,
482        ) -> jvmtiError,
483    >,
484    pub SetNativeMethodPrefixes: Option<
485        unsafe extern "C" fn(
486            env: *mut jvmtiEnv,
487            prefix_count: jint,
488            prefixes: *mut *mut c_char,
489        ) -> jvmtiError,
490    >,
491    pub GetBytecodes: Option<
492        unsafe extern "C" fn(
493            env: *mut jvmtiEnv,
494            method: jmethodID,
495            bytecode_count_ptr: *mut jint,
496            bytecodes_ptr: *mut *mut c_uchar,
497        ) -> jvmtiError,
498    >,
499    pub IsMethodNative: Option<
500        unsafe extern "C" fn(
501            env: *mut jvmtiEnv,
502            method: jmethodID,
503            is_native_ptr: *mut jboolean,
504        ) -> jvmtiError,
505    >,
506    pub IsMethodSynthetic: Option<
507        unsafe extern "C" fn(
508            env: *mut jvmtiEnv,
509            method: jmethodID,
510            is_synthetic_ptr: *mut jboolean,
511        ) -> jvmtiError,
512    >,
513    pub GetLoadedClasses: Option<
514        unsafe extern "C" fn(
515            env: *mut jvmtiEnv,
516            class_count_ptr: *mut jint,
517            classes_ptr: *mut *mut jclass,
518        ) -> jvmtiError,
519    >,
520    pub GetClassLoaderClasses: Option<
521        unsafe extern "C" fn(
522            env: *mut jvmtiEnv,
523            initiating_loader: jobject,
524            class_count_ptr: *mut jint,
525            classes_ptr: *mut *mut jclass,
526        ) -> jvmtiError,
527    >,
528    pub PopFrame: Option<
529        unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread) -> jvmtiError,
530    >,
531    pub ForceEarlyReturnObject: Option<
532        unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, value: jobject) -> jvmtiError,
533    >,
534    pub ForceEarlyReturnInt: Option<
535        unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, value: jint) -> jvmtiError,
536    >,
537    pub ForceEarlyReturnLong: Option<
538        unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, value: jlong) -> jvmtiError,
539    >,
540    pub ForceEarlyReturnFloat: Option<
541        unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, value: jfloat) -> jvmtiError,
542    >,
543    pub ForceEarlyReturnDouble: Option<
544        unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, value: jdouble) -> jvmtiError,
545    >,
546    pub ForceEarlyReturnVoid: Option<
547        unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread) -> jvmtiError,
548    >,
549    pub RedefineClasses: Option<
550        unsafe extern "C" fn(
551            env: *mut jvmtiEnv,
552            class_count: jint,
553            class_definitions: *const jvmtiClassDefinition,
554        ) -> jvmtiError,
555    >,
556    pub GetVersionNumber: Option<
557        unsafe extern "C" fn(env: *mut jvmtiEnv, version_ptr: *mut jint) -> jvmtiError,
558    >,
559    pub GetCapabilities: Option<
560        unsafe extern "C" fn(
561            env: *mut jvmtiEnv,
562            capabilities_ptr: *mut jvmtiCapabilities,
563        ) -> jvmtiError,
564    >,
565    pub GetSourceDebugExtension: Option<
566        unsafe extern "C" fn(
567            env: *mut jvmtiEnv,
568            klass: jclass,
569            source_debug_extension_ptr: *mut *mut c_char,
570        ) -> jvmtiError,
571    >,
572    pub IsMethodObsolete: Option<
573        unsafe extern "C" fn(
574            env: *mut jvmtiEnv,
575            method: jmethodID,
576            is_obsolete_ptr: *mut jboolean,
577        ) -> jvmtiError,
578    >,
579    pub SuspendThreadList: Option<
580        unsafe extern "C" fn(
581            env: *mut jvmtiEnv,
582            request_count: jint,
583            request_list: *const jthread,
584            results: *mut jvmtiError,
585        ) -> jvmtiError,
586    >,
587    pub ResumeThreadList: Option<
588        unsafe extern "C" fn(
589            env: *mut jvmtiEnv,
590            request_count: jint,
591            request_list: *const jthread,
592            results: *mut jvmtiError,
593        ) -> jvmtiError,
594    >,
595    pub reserved94: *mut c_void,
596    pub reserved95: *mut c_void,
597    pub reserved96: *mut c_void,
598    pub reserved97: *mut c_void,
599    pub reserved98: *mut c_void,
600    pub reserved99: *mut c_void,
601    pub GetAllStackTraces: Option<
602        unsafe extern "C" fn(
603            env: *mut jvmtiEnv,
604            max_frame_count: jint,
605            stack_info_ptr: *mut *mut jvmtiStackInfo,
606            thread_count_ptr: *mut jint,
607        ) -> jvmtiError,
608    >,
609    pub GetThreadListStackTraces: Option<
610        unsafe extern "C" fn(
611            env: *mut jvmtiEnv,
612            thread_count: jint,
613            thread_list: *const jthread,
614            max_frame_count: jint,
615            stack_info_ptr: *mut *mut jvmtiStackInfo,
616        ) -> jvmtiError,
617    >,
618    pub GetThreadLocalStorage: Option<
619        unsafe extern "C" fn(
620            env: *mut jvmtiEnv,
621            thread: jthread,
622            data_ptr: *mut *mut c_void,
623        ) -> jvmtiError,
624    >,
625    pub SetThreadLocalStorage: Option<
626        unsafe extern "C" fn(
627            env: *mut jvmtiEnv,
628            thread: jthread,
629            data: *const c_void,
630        ) -> jvmtiError,
631    >,
632    pub GetStackTrace: Option<
633        unsafe extern "C" fn(
634            env: *mut jvmtiEnv,
635            thread: jthread,
636            start_depth: jint,
637            max_frame_count: jint,
638            frame_buffer: *mut jvmtiFrameInfo,
639            count_ptr: *mut jint,
640        ) -> jvmtiError,
641    >,
642    pub reserved105: *mut c_void,
643    pub GetTag: Option<
644        unsafe extern "C" fn(
645            env: *mut jvmtiEnv,
646            object: jobject,
647            tag_ptr: *mut jlong,
648        ) -> jvmtiError,
649    >,
650    pub SetTag: Option<
651        unsafe extern "C" fn(env: *mut jvmtiEnv, object: jobject, tag: jlong) -> jvmtiError,
652    >,
653    pub ForceGarbageCollection:
654    Option<unsafe extern "C" fn(env: *mut jvmtiEnv) -> jvmtiError>,
655    pub IterateOverObjectsReachableFromObject: Option<
656        unsafe extern "C" fn(
657            env: *mut jvmtiEnv,
658            object: jobject,
659            object_reference_callback: jvmtiObjectReferenceCallback,
660            user_data: *const c_void,
661        ) -> jvmtiError,
662    >,
663    pub IterateOverReachableObjects: Option<
664        unsafe extern "C" fn(
665            env: *mut jvmtiEnv,
666            heap_root_callback: jvmtiHeapRootCallback,
667            stack_ref_callback: jvmtiStackReferenceCallback,
668            object_ref_callback: jvmtiObjectReferenceCallback,
669            user_data: *const c_void,
670        ) -> jvmtiError,
671    >,
672    pub IterateOverHeap: Option<
673        unsafe extern "C" fn(
674            env: *mut jvmtiEnv,
675            object_filter: jvmtiHeapObjectFilter,
676            heap_object_callback: jvmtiHeapObjectCallback,
677            user_data: *const c_void,
678        ) -> jvmtiError,
679    >,
680    pub IterateOverInstancesOfClass: Option<
681        unsafe extern "C" fn(
682            env: *mut jvmtiEnv,
683            klass: jclass,
684            object_filter: jvmtiHeapObjectFilter,
685            heap_object_callback: jvmtiHeapObjectCallback,
686            user_data: *const c_void,
687        ) -> jvmtiError,
688    >,
689    pub reserved113: *mut c_void,
690    pub GetObjectsWithTags: Option<
691        unsafe extern "C" fn(
692            env: *mut jvmtiEnv,
693            tag_count: jint,
694            tags: *const jlong,
695            count_ptr: *mut jint,
696            object_result_ptr: *mut *mut jobject,
697            tag_result_ptr: *mut *mut jlong,
698        ) -> jvmtiError,
699    >,
700    pub FollowReferences: Option<
701        unsafe extern "C" fn(
702            env: *mut jvmtiEnv,
703            heap_filter: jint,
704            klass: jclass,
705            initial_object: jobject,
706            callbacks: *const jvmtiHeapCallbacks,
707            user_data: *const c_void,
708        ) -> jvmtiError,
709    >,
710    pub IterateThroughHeap: Option<
711        unsafe extern "C" fn(
712            env: *mut jvmtiEnv,
713            heap_filter: jint,
714            klass: jclass,
715            callbacks: *const jvmtiHeapCallbacks,
716            user_data: *const c_void,
717        ) -> jvmtiError,
718    >,
719    pub reserved117: *mut c_void,
720    pub reserved118: *mut c_void,
721    pub reserved119: *mut c_void,
722    pub SetJNIFunctionTable: Option<
723        unsafe extern "C" fn(
724            env: *mut jvmtiEnv,
725            function_table: *const jniNativeInterface,
726        ) -> jvmtiError,
727    >,
728    pub GetJNIFunctionTable: Option<
729        unsafe extern "C" fn(
730            env: *mut jvmtiEnv,
731            function_table: *mut *mut jniNativeInterface,
732        ) -> jvmtiError,
733    >,
734    pub SetEventCallbacks: Option<
735        unsafe extern "C" fn(
736            env: *mut jvmtiEnv,
737            callbacks: *const jvmtiEventCallbacks,
738            size_of_callbacks: jint,
739        ) -> jvmtiError
740    >,
741    pub GenerateEvents: Option<
742        unsafe extern "C" fn(env: *mut jvmtiEnv, event_type: jvmtiEvent) -> jvmtiError,
743    >,
744    pub GetExtensionFunctions: Option<
745        unsafe extern "C" fn(
746            env: *mut jvmtiEnv,
747            extension_count_ptr: *mut jint,
748            extensions: *mut *mut jvmtiExtensionFunctionInfo,
749        ) -> jvmtiError,
750    >,
751    pub GetExtensionEvents: Option<
752        unsafe extern "C" fn(
753            env: *mut jvmtiEnv,
754            extension_count_ptr: *mut jint,
755            extensions: *mut *mut jvmtiExtensionEventInfo,
756        ) -> jvmtiError,
757    >,
758    pub SetExtensionEventCallback: Option<
759        unsafe extern "C" fn(
760            env: *mut jvmtiEnv,
761            extension_event_index: jint,
762            callback: jvmtiExtensionEvent,
763        ) -> jvmtiError,
764    >,
765    pub DisposeEnvironment:
766    Option<unsafe extern "C" fn(env: *mut jvmtiEnv) -> jvmtiError>,
767    pub GetErrorName: Option<
768        unsafe extern "C" fn(
769            env: *mut jvmtiEnv,
770            error: jvmtiError,
771            name_ptr: *mut *mut c_char,
772        ) -> jvmtiError,
773    >,
774    pub GetJLocationFormat: Option<
775        unsafe extern "C" fn(
776            env: *mut jvmtiEnv,
777            format_ptr: *mut jvmtiJlocationFormat,
778        ) -> jvmtiError,
779    >,
780    pub GetSystemProperties: Option<
781        unsafe extern "C" fn(
782            env: *mut jvmtiEnv,
783            count_ptr: *mut jint,
784            property_ptr: *mut *mut *mut c_char,
785        ) -> jvmtiError,
786    >,
787    pub GetSystemProperty: Option<
788        unsafe extern "C" fn(
789            env: *mut jvmtiEnv,
790            property: *const c_char,
791            value_ptr: *mut *mut c_char,
792        ) -> jvmtiError,
793    >,
794    pub SetSystemProperty: Option<
795        unsafe extern "C" fn(
796            env: *mut jvmtiEnv,
797            property: *const c_char,
798            value: *const c_char,
799        ) -> jvmtiError,
800    >,
801    pub GetPhase: Option<
802        unsafe extern "C" fn(env: *mut jvmtiEnv, phase_ptr: *mut jvmtiPhase) -> jvmtiError,
803    >,
804    pub GetCurrentThreadCpuTimerInfo: Option<
805        unsafe extern "C" fn(env: *mut jvmtiEnv, info_ptr: *mut jvmtiTimerInfo) -> jvmtiError,
806    >,
807    pub GetCurrentThreadCpuTime: Option<
808        unsafe extern "C" fn(env: *mut jvmtiEnv, nanos_ptr: *mut jlong) -> jvmtiError,
809    >,
810    pub GetThreadCpuTimerInfo: Option<
811        unsafe extern "C" fn(env: *mut jvmtiEnv, info_ptr: *mut jvmtiTimerInfo) -> jvmtiError,
812    >,
813    pub GetThreadCpuTime: Option<
814        unsafe extern "C" fn(
815            env: *mut jvmtiEnv,
816            thread: jthread,
817            nanos_ptr: *mut jlong,
818        ) -> jvmtiError,
819    >,
820    pub GetTimerInfo: Option<
821        unsafe extern "C" fn(env: *mut jvmtiEnv, info_ptr: *mut jvmtiTimerInfo) -> jvmtiError,
822    >,
823    pub GetTime: Option<
824        unsafe extern "C" fn(env: *mut jvmtiEnv, nanos_ptr: *mut jlong) -> jvmtiError,
825    >,
826    pub GetPotentialCapabilities: Option<
827        unsafe extern "C" fn(
828            env: *mut jvmtiEnv,
829            capabilities_ptr: *mut jvmtiCapabilities,
830        ) -> jvmtiError,
831    >,
832    pub reserved141: *mut c_void,
833    pub AddCapabilities: Option<
834        unsafe extern "C" fn(
835            env: *mut jvmtiEnv,
836            capabilities_ptr: *const jvmtiCapabilities,
837        ) -> jvmtiError,
838    >,
839    pub RelinquishCapabilities: Option<
840        unsafe extern "C" fn(
841            env: *mut jvmtiEnv,
842            capabilities_ptr: *const jvmtiCapabilities,
843        ) -> jvmtiError,
844    >,
845    pub GetAvailableProcessors: Option<
846        unsafe extern "C" fn(env: *mut jvmtiEnv, processor_count_ptr: *mut jint) -> jvmtiError,
847    >,
848    pub GetClassVersionNumbers: Option<
849        unsafe extern "C" fn(
850            env: *mut jvmtiEnv,
851            klass: jclass,
852            minor_version_ptr: *mut jint,
853            major_version_ptr: *mut jint,
854        ) -> jvmtiError,
855    >,
856    pub GetConstantPool: Option<
857        unsafe extern "C" fn(
858            env: *mut jvmtiEnv,
859            klass: jclass,
860            constant_pool_count_ptr: *mut jint,
861            constant_pool_byte_count_ptr: *mut jint,
862            constant_pool_bytes_ptr: *mut *mut c_uchar,
863        ) -> jvmtiError,
864    >,
865    pub GetEnvironmentLocalStorage: Option<
866        unsafe extern "C" fn(
867            env: *mut jvmtiEnv,
868            data_ptr: *mut *mut c_void,
869        ) -> jvmtiError,
870    >,
871    pub SetEnvironmentLocalStorage: Option<
872        unsafe extern "C" fn(env: *mut jvmtiEnv, data: *const c_void) -> jvmtiError,
873    >,
874    pub AddToBootstrapClassLoaderSearch: Option<
875        unsafe extern "C" fn(
876            env: *mut jvmtiEnv,
877            segment: *const c_char,
878        ) -> jvmtiError,
879    >,
880    pub SetVerboseFlag: Option<
881        unsafe extern "C" fn(
882            env: *mut jvmtiEnv,
883            flag: jvmtiVerboseFlag,
884            value: jboolean,
885        ) -> jvmtiError,
886    >,
887    pub AddToSystemClassLoaderSearch: Option<
888        unsafe extern "C" fn(
889            env: *mut jvmtiEnv,
890            segment: *const c_char,
891        ) -> jvmtiError,
892    >,
893    pub RetransformClasses: Option<
894        unsafe extern "C" fn(
895            env: *mut jvmtiEnv,
896            class_count: jint,
897            classes: *const jclass,
898        ) -> jvmtiError,
899    >,
900    pub GetOwnedMonitorStackDepthInfo: Option<
901        unsafe extern "C" fn(
902            env: *mut jvmtiEnv,
903            thread: jthread,
904            monitor_info_count_ptr: *mut jint,
905            monitor_info_ptr: *mut *mut jvmtiMonitorStackDepthInfo,
906        ) -> jvmtiError,
907    >,
908    pub GetObjectSize: Option<
909        unsafe extern "C" fn(
910            env: *mut jvmtiEnv,
911            object: jobject,
912            size_ptr: *mut jlong,
913        ) -> jvmtiError,
914    >,
915    pub GetLocalInstance: Option<
916        unsafe extern "C" fn(
917            env: *mut jvmtiEnv,
918            thread: jthread,
919            depth: jint,
920            value_ptr: *mut jobject,
921        ) -> jvmtiError,
922    >,
923}