diff options
author | Dianne Hackborn <hackbod@google.com> | 2014-12-09 01:53:35 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-12-09 01:53:37 +0000 |
commit | 8b33cf4d34a9ea75e1121ee2f1d829b21f3cb5d6 (patch) | |
tree | 6309c2313651a681589d5ed56e36a6b530375af1 /core | |
parent | 52070f81f2c4c41ffe74adcabda64c2b0349c62d (diff) | |
parent | 1a4b5a4f02e7d8ff8ff645377d97e6062d36aeaa (diff) | |
download | frameworks_base-8b33cf4d34a9ea75e1121ee2f1d829b21f3cb5d6.zip frameworks_base-8b33cf4d34a9ea75e1121ee2f1d829b21f3cb5d6.tar.gz frameworks_base-8b33cf4d34a9ea75e1121ee2f1d829b21f3cb5d6.tar.bz2 |
Merge "Work on issue #18640385: Add procstats test mode" into lmp-mr1-dev
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/os/Debug.java | 5 | ||||
-rw-r--r-- | core/jni/android_os_Debug.cpp | 20 |
2 files changed, 19 insertions, 6 deletions
diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java index 7eb606a..a9deaf3 100644 --- a/core/java/android/os/Debug.java +++ b/core/java/android/os/Debug.java @@ -1074,9 +1074,10 @@ href="{@docRoot}guide/developing/tools/traceview.html">Traceview: A Graphical Lo /** * Retrieves the PSS memory used by the process as given by the * smaps. Optionally supply a long array of 1 entry to also - * receive the uss of the process. @hide + * receive the uss of the process, and another array to also + * retrieve the separate memtrack size. @hide */ - public static native long getPss(int pid, long[] outUss); + public static native long getPss(int pid, long[] outUss, long[] outMemtrack); /** @hide */ public static final int MEMINFO_TOTAL = 0; diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp index 91daee8..5a32718 100644 --- a/core/jni/android_os_Debug.cpp +++ b/core/jni/android_os_Debug.cpp @@ -495,11 +495,13 @@ static void android_os_Debug_getDirtyPages(JNIEnv *env, jobject clazz, jobject o android_os_Debug_getDirtyPagesPid(env, clazz, getpid(), object); } -static jlong android_os_Debug_getPssPid(JNIEnv *env, jobject clazz, jint pid, jlongArray outUss) +static jlong android_os_Debug_getPssPid(JNIEnv *env, jobject clazz, jint pid, jlongArray outUss, + jlongArray outMemtrack) { char line[1024]; jlong pss = 0; jlong uss = 0; + jlong memtrack = 0; unsigned temp; char tmp[128]; @@ -507,7 +509,7 @@ static jlong android_os_Debug_getPssPid(JNIEnv *env, jobject clazz, jint pid, jl struct graphics_memory_pss graphics_mem; if (read_memtrack_memory(pid, &graphics_mem) == 0) { - pss = uss = graphics_mem.graphics + graphics_mem.gl + graphics_mem.other; + pss = uss = memtrack = graphics_mem.graphics + graphics_mem.gl + graphics_mem.other; } sprintf(tmp, "/proc/%d/smaps", pid); @@ -550,12 +552,22 @@ static jlong android_os_Debug_getPssPid(JNIEnv *env, jobject clazz, jint pid, jl } } + if (outMemtrack != NULL) { + if (env->GetArrayLength(outMemtrack) >= 1) { + jlong* outMemtrackArray = env->GetLongArrayElements(outMemtrack, 0); + if (outMemtrackArray != NULL) { + outMemtrackArray[0] = memtrack; + } + env->ReleaseLongArrayElements(outMemtrack, outMemtrackArray, 0); + } + } + return pss; } static jlong android_os_Debug_getPss(JNIEnv *env, jobject clazz) { - return android_os_Debug_getPssPid(env, clazz, getpid(), NULL); + return android_os_Debug_getPssPid(env, clazz, getpid(), NULL, NULL); } enum { @@ -963,7 +975,7 @@ static JNINativeMethod gMethods[] = { (void*) android_os_Debug_getDirtyPagesPid }, { "getPss", "()J", (void*) android_os_Debug_getPss }, - { "getPss", "(I[J)J", + { "getPss", "(I[J[J)J", (void*) android_os_Debug_getPssPid }, { "getMemInfo", "([J)V", (void*) android_os_Debug_getMemInfo }, |