diff options
author | Dianne Hackborn <hackbod@google.com> | 2012-05-09 18:45:20 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2012-05-09 18:45:20 -0700 |
commit | 59325eb31f25704bb88c348160bb69e7c1aa3b48 (patch) | |
tree | b0e5c3229fbc35974658646b08b5611f5cad93ff /core/jni/android_util_Process.cpp | |
parent | a53de0629f3b94472c0f160f5bbe1090b020feab (diff) | |
download | frameworks_base-59325eb31f25704bb88c348160bb69e7c1aa3b48.zip frameworks_base-59325eb31f25704bb88c348160bb69e7c1aa3b48.tar.gz frameworks_base-59325eb31f25704bb88c348160bb69e7c1aa3b48.tar.bz2 |
Add new API to find total RAM.
Change-Id: Iad2dff3c44f471515f093e7f0d0d959528881ab9
Diffstat (limited to 'core/jni/android_util_Process.cpp')
-rw-r--r-- | core/jni/android_util_Process.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp index d20cc9e..027ed16 100644 --- a/core/jni/android_util_Process.cpp +++ b/core/jni/android_util_Process.cpp @@ -402,7 +402,7 @@ static int pid_compare(const void* v1, const void* v2) return *((const jint*)v1) - *((const jint*)v2); } -static jlong android_os_Process_getFreeMemory(JNIEnv* env, jobject clazz) +static jlong getFreeMemoryImpl(const char* const sums[], const int sumsLen[], int num) { int fd = open("/proc/meminfo", O_RDONLY); @@ -424,11 +424,8 @@ static jlong android_os_Process_getFreeMemory(JNIEnv* env, jobject clazz) int numFound = 0; jlong mem = 0; - static const char* const sums[] = { "MemFree:", "Cached:", NULL }; - static const int sumsLen[] = { strlen("MemFree:"), strlen("Cached:"), 0 }; - char* p = buffer; - while (*p && numFound < 2) { + while (*p && numFound < num) { int i = 0; while (sums[i]) { if (strncmp(p, sums[i], sumsLen[i]) == 0) { @@ -453,6 +450,20 @@ static jlong android_os_Process_getFreeMemory(JNIEnv* env, jobject clazz) return numFound > 0 ? mem : -1; } +static jlong android_os_Process_getFreeMemory(JNIEnv* env, jobject clazz) +{ + static const char* const sums[] = { "MemFree:", "Cached:", NULL }; + static const int sumsLen[] = { strlen("MemFree:"), strlen("Cached:"), 0 }; + return getFreeMemoryImpl(sums, sumsLen, 2); +} + +static jlong android_os_Process_getTotalMemory(JNIEnv* env, jobject clazz) +{ + static const char* const sums[] = { "MemTotal:", NULL }; + static const int sumsLen[] = { strlen("MemTotal:"), 0 }; + return getFreeMemoryImpl(sums, sumsLen, 1); +} + void android_os_Process_readProcLines(JNIEnv* env, jobject clazz, jstring fileStr, jobjectArray reqFields, jlongArray outFields) { @@ -901,6 +912,7 @@ static const JNINativeMethod methods[] = { {"sendSignal", "(II)V", (void*)android_os_Process_sendSignal}, {"sendSignalQuiet", "(II)V", (void*)android_os_Process_sendSignalQuiet}, {"getFreeMemory", "()J", (void*)android_os_Process_getFreeMemory}, + {"getTotalMemory", "()J", (void*)android_os_Process_getTotalMemory}, {"readProcLines", "(Ljava/lang/String;[Ljava/lang/String;[J)V", (void*)android_os_Process_readProcLines}, {"getPids", "(Ljava/lang/String;[I)[I", (void*)android_os_Process_getPids}, {"readProcFile", "(Ljava/lang/String;[I[Ljava/lang/String;[J[F)Z", (void*)android_os_Process_readProcFile}, |