diff options
Diffstat (limited to 'runtime/jdwp/jdwp_event.h')
-rw-r--r-- | runtime/jdwp/jdwp_event.h | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/runtime/jdwp/jdwp_event.h b/runtime/jdwp/jdwp_event.h new file mode 100644 index 0000000..a6eabb1 --- /dev/null +++ b/runtime/jdwp/jdwp_event.h @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * Handle registration of events, and debugger event notification. + */ +#ifndef ART_JDWP_JDWPEVENT_H_ +#define ART_JDWP_JDWPEVENT_H_ + +#include "jdwp/jdwp.h" +#include "jdwp/jdwp_constants.h" +#include "jdwp/jdwp_expand_buf.h" + +namespace art { + +namespace JDWP { + +/* + * Event modifiers. A JdwpEvent may have zero or more of these. + */ +union JdwpEventMod { + JdwpModKind modKind; + struct { + JdwpModKind modKind; + int count; + } count; + struct { + JdwpModKind modKind; + uint32_t exprId; + } conditional; + struct { + JdwpModKind modKind; + ObjectId threadId; + } threadOnly; + struct { + JdwpModKind modKind; + RefTypeId refTypeId; + } classOnly; + struct { + JdwpModKind modKind; + char* classPattern; + } classMatch; + struct { + JdwpModKind modKind; + char* classPattern; + } classExclude; + struct { + JdwpModKind modKind; + JdwpLocation loc; + } locationOnly; + struct { + JdwpModKind modKind; + uint8_t caught; + uint8_t uncaught; + RefTypeId refTypeId; + } exceptionOnly; + struct { + JdwpModKind modKind; + RefTypeId refTypeId; + FieldId fieldId; + } fieldOnly; + struct { + JdwpModKind modKind; + ObjectId threadId; + int size; /* JdwpStepSize */ + int depth; /* JdwpStepDepth */ + } step; + struct { + JdwpModKind modKind; + ObjectId objectId; + } instanceOnly; +}; + +/* + * One of these for every registered event. + * + * We over-allocate the struct to hold the modifiers. + */ +struct JdwpEvent { + JdwpEvent* prev; /* linked list */ + JdwpEvent* next; + + JdwpEventKind eventKind; /* what kind of event is this? */ + JdwpSuspendPolicy suspend_policy; /* suspend all, none, or self? */ + int modCount; /* #of entries in mods[] */ + uint32_t requestId; /* serial#, reported to debugger */ + + JdwpEventMod mods[1]; /* MUST be last field in struct */ +}; + +/* + * Allocate an event structure with enough space. + */ +JdwpEvent* EventAlloc(int numMods); +void EventFree(JdwpEvent* pEvent); + +} // namespace JDWP + +} // namespace art + +#endif // ART_JDWP_JDWPEVENT_H_ |