1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * you may not use this file except in compliance with the License. 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * You may obtain a copy of the License at 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Dalvik Debug Monitor 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 19375fb116bcb817b37509ab579dbd55cdbb765cbfCarl Shapiro#ifndef DALVIK_DDM_H_ 20375fb116bcb817b37509ab579dbd55cdbb765cbfCarl Shapiro#define DALVIK_DDM_H_ 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Handle a packet full of DDM goodness. 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns "true" if we have anything to say in return; in which case, 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * "*pReplyBuf" and "*pReplyLen" will also be set. 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectbool dvmDdmHandlePacket(const u1* buf, int dataLen, u1** pReplyBuf, 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int* pReplyLen); 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Deal with the DDM server connecting and disconnecting. 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectvoid dvmDdmConnected(void); 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectvoid dvmDdmDisconnected(void); 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Turn thread notification on or off. 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectvoid dvmDdmSetThreadNotification(bool enable); 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * If thread start/stop notification is enabled, call this when threads 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * are created or die. 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectvoid dvmDdmSendThreadNotification(Thread* thread, bool started); 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * If thread start/stop notification is enabled, call this when the 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * thread name changes. 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectvoid dvmDdmSendThreadNameChange(int threadId, StringObject* newName); 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Generate a byte[] full of thread stats for a THST packet. 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source ProjectArrayObject* dvmDdmGenerateThreadStats(void); 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Let the heap know that the HPIF when value has changed. 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return true iff the when value is supported by the VM. 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectbool dvmDdmHandleHpifChunk(int when); 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Let the heap know that the HPSG or NHSG what/when values have changed. 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param native false for an HPSG chunk, true for an NHSG chunk 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return true iff the what/when values are supported by the VM. 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectbool dvmDdmHandleHpsgNhsgChunk(int when, int what, bool native); 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Get an array of StackTraceElement objects for the specified thread. 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source ProjectArrayObject* dvmDdmGetStackTraceById(u4 threadId); 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Gather up recent allocation data and return it in a byte[]. 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns NULL on failure with an exception raised. 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source ProjectArrayObject* dvmDdmGetRecentAllocations(void); 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 87375fb116bcb817b37509ab579dbd55cdbb765cbfCarl Shapiro#endif // DALVIK_DDM_H_ 88