^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef __JVMTI_AGENT_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define __JVMTI_AGENT_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #include <sys/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #include <stdint.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include <jvmti.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #if defined(__cplusplus)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) extern "C" {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) typedef struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) unsigned long pc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) int line_number;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) int discrim; /* discriminator -- 0 for now */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) jmethodID methodID;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) } jvmti_line_info_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) void *jvmti_open(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) int jvmti_close(void *agent);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) int jvmti_write_code(void *agent, char const *symbol_name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) uint64_t vma, void const *code,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) const unsigned int code_size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) int jvmti_write_debug_info(void *agent, uint64_t code, int nr_lines,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) jvmti_line_info_t *li,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) const char * const * file_names);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #if defined(__cplusplus)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #endif /* __JVMTI_H__ */