• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_H_
20 #define DALVIK_JDWP_JDWPCONSTANTS_H_
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 const char* dvmJdwpErrorStr(JdwpError error);
84 
85 
86 /*
87  * ClassStatus constants.  These are bit flags that can be ORed together.
88  */
89 enum JdwpClassStatus {
90     CS_VERIFIED             = 0x01,
91     CS_PREPARED             = 0x02,
92     CS_INITIALIZED          = 0x04,
93     CS_ERROR                = 0x08,
94 };
95 
96 /*
97  * EventKind constants.
98  */
99 enum JdwpEventKind {
100     EK_SINGLE_STEP          = 1,
101     EK_BREAKPOINT           = 2,
102     EK_FRAME_POP            = 3,
103     EK_EXCEPTION            = 4,
104     EK_USER_DEFINED         = 5,
105     EK_THREAD_START         = 6,
106     EK_THREAD_END           = 7,
107     EK_CLASS_PREPARE        = 8,
108     EK_CLASS_UNLOAD         = 9,
109     EK_CLASS_LOAD           = 10,
110     EK_FIELD_ACCESS         = 20,
111     EK_FIELD_MODIFICATION   = 21,
112     EK_EXCEPTION_CATCH      = 30,
113     EK_METHOD_ENTRY         = 40,
114     EK_METHOD_EXIT          = 41,
115     EK_VM_INIT              = 90,
116     EK_VM_DEATH             = 99,
117     EK_VM_DISCONNECTED      = 100,  /* "Never sent across JDWP */
118     EK_VM_START             = EK_VM_INIT,
119     EK_THREAD_DEATH         = EK_THREAD_END,
120 };
121 const char* dvmJdwpEventKindStr(JdwpEventKind kind);
122 
123 /*
124  * Values for "modKind" in EventRequest.Set.
125  */
126 enum JdwpModKind {
127     MK_COUNT                = 1,
128     MK_CONDITIONAL          = 2,
129     MK_THREAD_ONLY          = 3,
130     MK_CLASS_ONLY           = 4,
131     MK_CLASS_MATCH          = 5,
132     MK_CLASS_EXCLUDE        = 6,
133     MK_LOCATION_ONLY        = 7,
134     MK_EXCEPTION_ONLY       = 8,
135     MK_FIELD_ONLY           = 9,
136     MK_STEP                 = 10,
137     MK_INSTANCE_ONLY        = 11,
138 };
139 const char* dvmJdwpModKindStr(JdwpModKind kind);
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(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(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(JdwpSuspendPolicy policy);
177 
178 /*
179  * SuspendStatus constants.
180  */
181 enum JdwpSuspendStatus {
182     SUSPEND_STATUS_NOT_SUSPENDED = 0,
183     SUSPEND_STATUS_SUSPENDED     = 1,
184 };
185 const char* dvmJdwpSuspendStatusStr(JdwpSuspendStatus status);
186 
187 /*
188  * ThreadStatus constants.
189  */
190 enum JdwpThreadStatus {
191     TS_ZOMBIE               = 0,
192     TS_RUNNING              = 1,        // RUNNING
193     TS_SLEEPING             = 2,        // (in Thread.sleep())
194     TS_MONITOR              = 3,        // WAITING (monitor wait)
195     TS_WAIT                 = 4,        // (in Object.wait())
196 };
197 const char* dvmJdwpThreadStatusStr(JdwpThreadStatus status);
198 
199 /*
200  * TypeTag constants.
201  */
202 enum JdwpTypeTag {
203     TT_CLASS                = 1,
204     TT_INTERFACE            = 2,
205     TT_ARRAY                = 3,
206 };
207 
208 /*
209  * Tag constants.
210  */
211 enum JdwpType {
212     JT_ARRAY                 = '[',
213     JT_BYTE                  = 'B',
214     JT_CHAR                  = 'C',
215     JT_OBJECT                = 'L',
216     JT_FLOAT                 = 'F',
217     JT_DOUBLE                = 'D',
218     JT_INT                   = 'I',
219     JT_LONG                  = 'J',
220     JT_SHORT                 = 'S',
221     JT_VOID                  = 'V',
222     JT_BOOLEAN               = 'Z',
223     JT_STRING                = 's',
224     JT_THREAD                = 't',
225     JT_THREAD_GROUP          = 'g',
226     JT_CLASS_LOADER          = 'l',
227     JT_CLASS_OBJECT          = 'c',
228 };
229 
230 #endif  // DALVIK_JDWP_JDWPCONSTANTS_H_
231