am 5d21168b: am 366291e2: Merge "Add frameworks support for sample profiling from traceview gui."

* commit '5d21168bb4b33fb5eb8770996895a729880c7dbc':
  Add frameworks support for sample profiling from traceview gui.
This commit is contained in:
Jeff Hao
2013-08-27 18:21:23 -07:00
committed by Android Git Automerger
2 changed files with 54 additions and 3 deletions

View File

@@ -34,6 +34,8 @@ public class DdmHandleProfiling extends ChunkHandler {
public static final int CHUNK_MPSS = type("MPSS"); public static final int CHUNK_MPSS = type("MPSS");
public static final int CHUNK_MPSE = type("MPSE"); public static final int CHUNK_MPSE = type("MPSE");
public static final int CHUNK_MPRQ = type("MPRQ"); public static final int CHUNK_MPRQ = type("MPRQ");
public static final int CHUNK_SPSS = type("SPSS");
public static final int CHUNK_SPSE = type("SPSE");
private static DdmHandleProfiling mInstance = new DdmHandleProfiling(); private static DdmHandleProfiling mInstance = new DdmHandleProfiling();
@@ -50,6 +52,8 @@ public class DdmHandleProfiling extends ChunkHandler {
DdmServer.registerHandler(CHUNK_MPSS, mInstance); DdmServer.registerHandler(CHUNK_MPSS, mInstance);
DdmServer.registerHandler(CHUNK_MPSE, mInstance); DdmServer.registerHandler(CHUNK_MPSE, mInstance);
DdmServer.registerHandler(CHUNK_MPRQ, mInstance); DdmServer.registerHandler(CHUNK_MPRQ, mInstance);
DdmServer.registerHandler(CHUNK_SPSS, mInstance);
DdmServer.registerHandler(CHUNK_SPSE, mInstance);
} }
/** /**
@@ -82,6 +86,10 @@ public class DdmHandleProfiling extends ChunkHandler {
return handleMPSE(request); return handleMPSE(request);
} else if (type == CHUNK_MPRQ) { } else if (type == CHUNK_MPRQ) {
return handleMPRQ(request); return handleMPRQ(request);
} else if (type == CHUNK_SPSS) {
return handleSPSS(request);
} else if (type == CHUNK_SPSE) {
return handleSPSE(request);
} else { } else {
throw new RuntimeException("Unknown packet " throw new RuntimeException("Unknown packet "
+ ChunkHandler.name(type)); + ChunkHandler.name(type));
@@ -144,7 +152,7 @@ public class DdmHandleProfiling extends ChunkHandler {
} }
try { try {
Debug.startMethodTracingDdms(bufferSize, flags); Debug.startMethodTracingDdms(bufferSize, flags, false, 0);
return null; // empty response return null; // empty response
} catch (RuntimeException re) { } catch (RuntimeException re) {
return createFailChunk(1, re.getMessage()); return createFailChunk(1, re.getMessage());
@@ -184,5 +192,47 @@ public class DdmHandleProfiling extends ChunkHandler {
byte[] reply = { (byte) result }; byte[] reply = { (byte) result };
return new Chunk(CHUNK_MPRQ, reply, 0, reply.length); return new Chunk(CHUNK_MPRQ, reply, 0, reply.length);
} }
/*
* Handle a "Sample Profiling w/Streaming Start" request.
*/
private Chunk handleSPSS(Chunk request) {
ByteBuffer in = wrapChunk(request);
int bufferSize = in.getInt();
int flags = in.getInt();
int interval = in.getInt();
if (false) {
Log.v("ddm-heap", "Sample prof stream start: size=" + bufferSize
+ ", flags=" + flags + ", interval=" + interval);
}
try {
Debug.startMethodTracingDdms(bufferSize, flags, true, interval);
return null; // empty response
} catch (RuntimeException re) {
return createFailChunk(1, re.getMessage());
}
}
/*
* Handle a "Sample Profiling w/Streaming End" request.
*/
private Chunk handleSPSE(Chunk request) {
if (false) {
Log.v("ddm-heap", "Sample prof stream end");
}
try {
Debug.stopMethodTracing();
} catch (RuntimeException re) {
Log.w("ddm-heap", "Sample prof stream end failed: "
+ re.getMessage());
return createFailChunk(1, re.getMessage());
}
/* VM sent the (perhaps very large) response directly */
return null;
}
} }

View File

@@ -639,8 +639,9 @@ href="{@docRoot}guide/developing/tools/traceview.html">Traceview: A Graphical Lo
* *
* @hide * @hide
*/ */
public static void startMethodTracingDdms(int bufferSize, int flags) { public static void startMethodTracingDdms(int bufferSize, int flags,
VMDebug.startMethodTracingDdms(bufferSize, flags); boolean samplingEnabled, int intervalUs) {
VMDebug.startMethodTracingDdms(bufferSize, flags, samplingEnabled, intervalUs);
} }
/** /**