1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 /* 17 * These come out of the JDWP documentation. 18 */ 19 #ifndef _DALVIK_JDWP_JDWPCONSTANTS 20 #define _DALVIK_JDWP_JDWPCONSTANTS 21 22 /* 23 * Error constants. 24 */ 25 enum JdwpError { 26 ERR_NONE = 0, 27 ERR_INVALID_THREAD = 10, 28 ERR_INVALID_THREAD_GROUP = 11, 29 ERR_INVALID_PRIORITY = 12, 30 ERR_THREAD_NOT_SUSPENDED = 13, 31 ERR_THREAD_SUSPENDED = 14, 32 ERR_INVALID_OBJECT = 20, 33 ERR_INVALID_CLASS = 21, 34 ERR_CLASS_NOT_PREPARED = 22, 35 ERR_INVALID_METHODID = 23, 36 ERR_INVALID_LOCATION = 24, 37 ERR_INVALID_FIELDID = 25, 38 ERR_INVALID_FRAMEID = 30, 39 ERR_NO_MORE_FRAMES = 31, 40 ERR_OPAQUE_FRAME = 32, 41 ERR_NOT_CURRENT_FRAME = 33, 42 ERR_TYPE_MISMATCH = 34, 43 ERR_INVALID_SLOT = 35, 44 ERR_DUPLICATE = 40, 45 ERR_NOT_FOUND = 41, 46 ERR_INVALID_MONITOR = 50, 47 ERR_NOT_MONITOR_OWNER = 51, 48 ERR_INTERRUPT = 52, 49 ERR_INVALID_CLASS_FORMAT = 60, 50 ERR_CIRCULAR_CLASS_DEFINITION = 61, 51 ERR_FAILS_VERIFICATION = 62, 52 ERR_ADD_METHOD_NOT_IMPLEMENTED = 63, 53 ERR_SCHEMA_CHANGE_NOT_IMPLEMENTED = 64, 54 ERR_INVALID_TYPESTATE = 65, 55 ERR_HIERARCHY_CHANGE_NOT_IMPLEMENTED = 66, 56 ERR_DELETE_METHOD_NOT_IMPLEMENTED = 67, 57 ERR_UNSUPPORTED_VERSION = 68, 58 ERR_NAMES_DONT_MATCH = 69, 59 ERR_CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED = 70, 60 ERR_METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED = 71, 61 ERR_NOT_IMPLEMENTED = 99, 62 ERR_NULL_POINTER = 100, 63 ERR_ABSENT_INFORMATION = 101, 64 ERR_INVALID_EVENT_TYPE = 102, 65 ERR_ILLEGAL_ARGUMENT = 103, 66 ERR_OUT_OF_MEMORY = 110, 67 ERR_ACCESS_DENIED = 111, 68 ERR_VM_DEAD = 112, 69 ERR_INTERNAL = 113, 70 ERR_UNATTACHED_THREAD = 115, 71 ERR_INVALID_TAG = 500, 72 ERR_ALREADY_INVOKING = 502, 73 ERR_INVALID_INDEX = 503, 74 ERR_INVALID_LENGTH = 504, 75 ERR_INVALID_STRING = 506, 76 ERR_INVALID_CLASS_LOADER = 507, 77 ERR_INVALID_ARRAY = 508, 78 ERR_TRANSPORT_LOAD = 509, 79 ERR_TRANSPORT_INIT = 510, 80 ERR_NATIVE_METHOD = 511, 81 ERR_INVALID_COUNT = 512, 82 }; 83 typedef enum JdwpError JdwpError; 84 const char* dvmJdwpErrorStr(enum JdwpError error); 85 86 87 /* 88 * ClassStatus constants. These are bit flags that can be ORed together. 89 */ 90 enum JdwpClassStatus { 91 CS_VERIFIED = 0x01, 92 CS_PREPARED = 0x02, 93 CS_INITIALIZED = 0x04, 94 CS_ERROR = 0x08, 95 }; 96 97 /* 98 * EventKind constants. 99 */ 100 enum JdwpEventKind { 101 EK_SINGLE_STEP = 1, 102 EK_BREAKPOINT = 2, 103 EK_FRAME_POP = 3, 104 EK_EXCEPTION = 4, 105 EK_USER_DEFINED = 5, 106 EK_THREAD_START = 6, 107 EK_THREAD_END = 7, 108 EK_CLASS_PREPARE = 8, 109 EK_CLASS_UNLOAD = 9, 110 EK_CLASS_LOAD = 10, 111 EK_FIELD_ACCESS = 20, 112 EK_FIELD_MODIFICATION = 21, 113 EK_EXCEPTION_CATCH = 30, 114 EK_METHOD_ENTRY = 40, 115 EK_METHOD_EXIT = 41, 116 EK_VM_INIT = 90, 117 EK_VM_DEATH = 99, 118 EK_VM_DISCONNECTED = 100, /* "Never sent across JDWP */ 119 EK_VM_START = EK_VM_INIT, 120 EK_THREAD_DEATH = EK_THREAD_END, 121 }; 122 const char* dvmJdwpEventKindStr(enum JdwpEventKind kind); 123 124 /* 125 * Values for "modKind" in EventRequest.Set. 126 */ 127 enum JdwpModKind { 128 MK_COUNT = 1, 129 MK_CONDITIONAL = 2, 130 MK_THREAD_ONLY = 3, 131 MK_CLASS_ONLY = 4, 132 MK_CLASS_MATCH = 5, 133 MK_CLASS_EXCLUDE = 6, 134 MK_LOCATION_ONLY = 7, 135 MK_EXCEPTION_ONLY = 8, 136 MK_FIELD_ONLY = 9, 137 MK_STEP = 10, 138 MK_INSTANCE_ONLY = 11, 139 }; 140 141 /* 142 * InvokeOptions constants (bit flags). 143 */ 144 enum JdwpInvokeOptions { 145 INVOKE_SINGLE_THREADED = 0x01, 146 INVOKE_NONVIRTUAL = 0x02, 147 }; 148 149 /* 150 * StepDepth constants. 151 */ 152 enum JdwpStepDepth { 153 SD_INTO = 0, /* step into method calls */ 154 SD_OVER = 1, /* step over method calls */ 155 SD_OUT = 2, /* step out of current method */ 156 }; 157 const char* dvmJdwpStepDepthStr(enum JdwpStepDepth depth); 158 159 /* 160 * StepSize constants. 161 */ 162 enum JdwpStepSize { 163 SS_MIN = 0, /* step by minimum (e.g. 1 bytecode inst) */ 164 SS_LINE = 1, /* if possible, step to next line */ 165 }; 166 const char* dvmJdwpStepSizeStr(enum JdwpStepSize size); 167 168 /* 169 * SuspendPolicy constants. 170 */ 171 enum JdwpSuspendPolicy { 172 SP_NONE = 0, /* suspend no threads */ 173 SP_EVENT_THREAD = 1, /* suspend event thread */ 174 SP_ALL = 2, /* suspend all threads */ 175 }; 176 const char* dvmJdwpSuspendPolicyStr(enum JdwpSuspendPolicy policy); 177 178 /* 179 * SuspendStatus constants. 180 */ 181 enum JdwpSuspendStatus { 182 SUSPEND_STATUS_SUSPENDED = 1, 183 }; 184 const char* dvmJdwpSuspendStatusStr(enum JdwpSuspendStatus status); 185 186 /* 187 * ThreadStatus constants. 188 */ 189 enum JdwpThreadStatus { 190 TS_ZOMBIE = 0, 191 TS_RUNNING = 1, // RUNNING 192 TS_SLEEPING = 2, // (in Thread.sleep()) 193 TS_MONITOR = 3, // WAITING (monitor wait) 194 TS_WAIT = 4, // (in Object.wait()) 195 }; 196 const char* dvmJdwpThreadStatusStr(enum JdwpThreadStatus status); 197 198 /* 199 * TypeTag constants. 200 */ 201 enum JdwpTypeTag { 202 TT_CLASS = 1, 203 TT_INTERFACE = 2, 204 TT_ARRAY = 3, 205 }; 206 207 /* 208 * Tag constants. 209 */ 210 enum JdwpType { 211 JT_ARRAY = '[', 212 JT_BYTE = 'B', 213 JT_CHAR = 'C', 214 JT_OBJECT = 'L', 215 JT_FLOAT = 'F', 216 JT_DOUBLE = 'D', 217 JT_INT = 'I', 218 JT_LONG = 'J', 219 JT_SHORT = 'S', 220 JT_VOID = 'V', 221 JT_BOOLEAN = 'Z', 222 JT_STRING = 's', 223 JT_THREAD = 't', 224 JT_THREAD_GROUP = 'g', 225 JT_CLASS_LOADER = 'l', 226 JT_CLASS_OBJECT = 'c', 227 }; 228 229 #endif /*_DALVIK_JDWP_JDWPCONSTANTS*/ 230