/*
* 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.
*/
/*
* Dalvik Debug Monitor
*/
#ifndef _DALVIK_DDM
#define _DALVIK_DDM
/*
* Handle a packet full of DDM goodness.
*
* Returns "true" if we have anything to say in return; in which case,
* "*pReplyBuf" and "*pReplyLen" will also be set.
*/
bool dvmDdmHandlePacket(const u1* buf, int dataLen, u1** pReplyBuf,
int* pReplyLen);
/*
* Deal with the DDM server connecting and disconnecting.
*/
void dvmDdmConnected(void);
void dvmDdmDisconnected(void);
/*
* Turn thread notification on or off.
*/
void dvmDdmSetThreadNotification(bool enable);
/*
* If thread start/stop notification is enabled, call this when threads
* are created or die.
*/
void dvmDdmSendThreadNotification(Thread* thread, bool started);
/*
* If thread start/stop notification is enabled, call this when the
* thread name changes.
*/
void dvmDdmSendThreadNameChange(int threadId, StringObject* newName);
/*
* Generate a byte[] full of thread stats for a THST packet.
*/
ArrayObject* dvmDdmGenerateThreadStats(void);
/*
* Let the heap know that the HPIF when value has changed.
*
* @return true iff the when value is supported by the VM.
*/
bool dvmDdmHandleHpifChunk(int when);
/*
* Let the heap know that the HPSG or NHSG what/when values have changed.
*
* @param native false for an HPSG chunk, true for an NHSG chunk
*
* @return true iff the what/when values are supported by the VM.
*/
bool dvmDdmHandleHpsgNhsgChunk(int when, int what, bool native);
/*
* Get an array of StackTraceElement objects for the specified thread.
*/
ArrayObject* dvmDdmGetStackTraceById(u4 threadId);
/*
* Gather up recent allocation data and return it in a byte[].
*
* Returns NULL on failure with an exception raised.
*/
ArrayObject* dvmDdmGetRecentAllocations(void);
#endif /*_DALVIK_DDM*/