| /** |
| * @author Intel, Petr Ivanov |
| * @version $Revision: 1.1.2.10 $ |
| */ |
| #ifndef _NCAI_TYPES_H_ |
| #define _NCAI_TYPES_H_ |
| |
| #include <stddef.h> |
| #include "jvmti_types.h" |
| |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif |
| |
| struct _ncai; |
| struct ncaiEnv_struct; |
| |
| #ifdef __cplusplus |
| typedef ncaiEnv_struct ncaiEnv; |
| #else |
| typedef const struct _ncai* ncaiEnv; |
| #endif |
| |
| |
| typedef enum { //TBD - work on NCAI errors |
| // Universal errors |
| NCAI_ERROR_NONE = 0, |
| NCAI_ERROR_NULL_POINTER = 100, |
| NCAI_ERROR_ILLEGAL_ARGUMENT = 103, |
| NCAI_ERROR_OUT_OF_MEMORY = 110, |
| NCAI_ERROR_ACCESS_DENIED = 111, |
| NCAI_ERROR_UNATTACHED_THREAD = 115, |
| NCAI_ERROR_INVALID_ENVIRONMENT = 116, |
| NCAI_ERROR_INTERNAL = 113, |
| // function specific |
| NCAI_ERROR_INVALID_THREAD = 10, |
| NCAI_ERROR_THREAD_NOT_SUSPENDED = 13, |
| NCAI_ERROR_THREAD_SUSPENDED = 14, |
| NCAI_ERROR_THREAD_NOT_ALIVE = 15, |
| NCAI_ERROR_INVALID_METHOD = 23, |
| NCAI_ERROR_INVALID_LOCATION = 24, |
| NCAI_ERROR_DUPLICATE = 40, |
| NCAI_ERROR_NOT_FOUND = 41, |
| NCAI_ERROR_NOT_AVAILABLE = 98, |
| NCAI_ERROR_INTERPRETER_USED = 201, |
| NCAI_ERROR_NOT_COMPILED = 211, |
| NCAI_ERROR_INVALID_ADDRESS = 212, |
| NCAI_ERROR_INVALID_MODULE = 213, |
| } ncaiError; |
| |
| typedef enum { |
| NCAI_MODULE_JNI_LIBRARY, |
| NCAI_MODULE_VM_INTERNAL, |
| NCAI_MODULE_OTHER |
| } ncaiModuleKind; |
| |
| typedef enum { |
| NCAI_SEGMENT_UNKNOWN, |
| NCAI_SEGMENT_CODE, |
| NCAI_SEGMENT_DATA |
| } ncaiSegmentKind; |
| |
| typedef struct { |
| ncaiSegmentKind kind; |
| void* base_address; |
| size_t size; |
| } ncaiSegmentInfo; |
| |
| typedef struct { |
| ncaiModuleKind kind; |
| char* name; |
| char* filename; |
| ncaiSegmentInfo* segments; |
| size_t segment_count; |
| } ncaiModuleInfo; |
| |
| struct _ncaiModule; |
| typedef _ncaiModule* ncaiModule; |
| |
| struct _ncaiThread; |
| typedef _ncaiThread* ncaiThread; |
| |
| typedef enum { |
| NCAI_THREAD_JAVA, |
| NCAI_THREAD_VM_INTERNAL, |
| NCAI_THREAD_OTHER |
| } ncaiThreadKind; |
| |
| typedef struct { |
| ncaiThreadKind kind; |
| char* name; |
| } ncaiThreadInfo; |
| |
| |
| typedef struct { |
| jint java_frame_depth; |
| void* pc_address; |
| void* return_address; |
| void* frame_address; |
| void* stack_address; |
| } ncaiFrameInfo; |
| |
| |
| typedef struct { |
| char* name; |
| jint size; |
| } ncaiRegisterInfo; |
| |
| |
| typedef struct { |
| char* name; |
| } ncaiSignalInfo; |
| |
| |
| typedef struct { |
| } ncaiCapabilities; |
| |
| |
| typedef void (JNICALL * ncaiThreadStart) |
| (ncaiEnv* env, ncaiThread thread); |
| typedef void (JNICALL * ncaiThreadEnd) |
| (ncaiEnv* env, ncaiThread thread); |
| typedef void (JNICALL * ncaiBreakpoint) |
| (ncaiEnv *env, ncaiThread thread, void *addr); |
| typedef void (JNICALL * ncaiStep) |
| (ncaiEnv *env, ncaiThread thread, void *addr); |
| typedef void (JNICALL * ncaiWatchpoint) |
| (ncaiEnv *env, ncaiThread thread, void *code_addr, void *data_addr); |
| typedef void (JNICALL * ncaiMethodEntry) |
| (ncaiEnv* env, ncaiThread thread, void* addr); |
| typedef void (JNICALL * ncaiMethodExit) |
| (ncaiEnv* env, ncaiThread thread, void* addr); |
| typedef void (JNICALL * ncaiFramePop) |
| (ncaiEnv* env, ncaiThread thread, void* addr); |
| typedef void (JNICALL * ncaiSignal) |
| (ncaiEnv *env, ncaiThread thread, void *addr, jint signal, jboolean is_internal, jboolean* is_handled); |
| typedef void (JNICALL * ncaiException) |
| (ncaiEnv *env, ncaiThread thread, void *addr, void *exception); |
| typedef void (JNICALL * ncaiModuleLoad) |
| (ncaiEnv *env, ncaiThread thread, ncaiModule module); |
| typedef void (JNICALL * ncaiModuleUnload) |
| (ncaiEnv *env, ncaiThread thread, ncaiModule module); |
| typedef void (JNICALL * ncaiConsoleInput) |
| (ncaiEnv *env, char **message); |
| typedef void (JNICALL * ncaiConsoleOutput) |
| (ncaiEnv *env, char *message); |
| typedef void (JNICALL * ncaiDebugMessage) |
| (ncaiEnv *env, char *message); |
| |
| typedef enum { |
| NCAI_ENABLE = 1, |
| NCAI_DISABLE = 0 |
| } ncaiEventMode; |
| |
| typedef enum { |
| NCAI_MIN_EVENT_TYPE_VAL = 1, |
| NCAI_EVENT_THREAD_START = NCAI_MIN_EVENT_TYPE_VAL, |
| NCAI_EVENT_THREAD_END, |
| NCAI_EVENT_BREAKPOINT, |
| NCAI_EVENT_STEP, |
| NCAI_EVENT_WATCHPOINT, |
| NCAI_EVENT_METHOD_ENTRY, |
| NCAI_EVENT_METHOD_EXIT, |
| NCAI_EVENT_FRAME_POP, |
| NCAI_EVENT_SIGNAL, |
| NCAI_EVENT_EXCEPTION, |
| NCAI_EVENT_MODULE_LOAD, |
| NCAI_EVENT_MODULE_UNLOAD, |
| NCAI_EVENT_CONSOLE_INPUT, |
| NCAI_EVENT_CONSOLE_OUTPUT, |
| NCAI_EVENT_DEBUG_OUTPUT, |
| NCAI_MAX_EVENT_TYPE_VAL = NCAI_EVENT_DEBUG_OUTPUT |
| } ncaiEventKind; |
| |
| typedef struct |
| { |
| ncaiThreadStart ThreadStart; |
| ncaiThreadEnd ThreadEnd; |
| ncaiBreakpoint Breakpoint; |
| ncaiStep Step; |
| ncaiWatchpoint Watchpoint; |
| ncaiMethodEntry MethodEntry; |
| ncaiMethodExit MethodExit; |
| ncaiFramePop FramePop; |
| ncaiSignal Signal; |
| ncaiException Exception; |
| ncaiModuleLoad ModuleLoad; |
| ncaiModuleUnload ModuleUnload; |
| ncaiConsoleInput ConsoleInput; |
| ncaiConsoleOutput ConsoleOutput; |
| ncaiDebugMessage DebugMessage; |
| }ncaiEventCallbacks; |
| |
| typedef enum { |
| NCAI_WATCHPOINT_READ, |
| NCAI_WATCHPOINT_WRITE, |
| NCAI_WATCHPOINT_ACCESS |
| } ncaiWatchpointMode; |
| |
| typedef enum { |
| NCAI_STEP_OFF, |
| NCAI_STEP_INTO, |
| NCAI_STEP_OVER, |
| NCAI_STEP_OUT |
| } ncaiStepMode; |
| |
| |
| #ifdef __cplusplus |
| } /* extern "C" { */ |
| #endif |
| |
| #endif /* _NCAI_TYPES_H_ */ |