diff options
-rw-r--r-- | core/java/android/os/OomKillRecord.java | 20 | ||||
-rw-r--r-- | services/core/jni/com_android_server_am_OomConnection.cpp | 12 |
2 files changed, 24 insertions, 8 deletions
diff --git a/core/java/android/os/OomKillRecord.java b/core/java/android/os/OomKillRecord.java index ca1d49a93def..78fbce63b00d 100644 --- a/core/java/android/os/OomKillRecord.java +++ b/core/java/android/os/OomKillRecord.java @@ -25,7 +25,7 @@ import com.android.internal.util.FrameworkStatsLog; * Note that this class fields' should be equivalent to the struct * <b>OomKill</b> inside * <pre> - * system/memory/libmeminfo/libmemevents/include/memevents.h + * system/memory/libmeminfo/libmemevents/include/memevents/bpf_types.h * </pre> * * @hide @@ -36,14 +36,27 @@ public final class OomKillRecord { private int mUid; private String mProcessName; private short mOomScoreAdj; + private long mTotalVmInKb; + private long mAnonRssInKb; + private long mFileRssInKb; + private long mShmemRssInKb; + private long mPgTablesInKb; public OomKillRecord(long timeStampInMillis, int pid, int uid, - String processName, short oomScoreAdj) { + String processName, short oomScoreAdj, + long totalVmInKb, long anonRssInKb, + long fileRssInKb, long shmemRssInKb, + long pgTablesInKb) { this.mTimeStampInMillis = timeStampInMillis; this.mPid = pid; this.mUid = uid; this.mProcessName = processName; this.mOomScoreAdj = oomScoreAdj; + this.mTotalVmInKb = totalVmInKb; + this.mAnonRssInKb = anonRssInKb; + this.mFileRssInKb = fileRssInKb; + this.mShmemRssInKb = shmemRssInKb; + this.mPgTablesInKb = pgTablesInKb; } /** @@ -55,7 +68,8 @@ public final class OomKillRecord { FrameworkStatsLog.write( FrameworkStatsLog.KERNEL_OOM_KILL_OCCURRED, mUid, mPid, mOomScoreAdj, mTimeStampInMillis, - mProcessName); + mProcessName, mTotalVmInKb, mAnonRssInKb, + mFileRssInKb, mShmemRssInKb, mPgTablesInKb); } public long getTimestampMilli() { diff --git a/services/core/jni/com_android_server_am_OomConnection.cpp b/services/core/jni/com_android_server_am_OomConnection.cpp index 054937fc683e..4d07776d8023 100644 --- a/services/core/jni/com_android_server_am_OomConnection.cpp +++ b/services/core/jni/com_android_server_am_OomConnection.cpp @@ -92,9 +92,11 @@ static jobjectArray android_server_am_OomConnection_waitOom(JNIEnv* env, jobject memevent_listener.deregisterAllEvents(); jniThrowRuntimeException(env, "Failed creating java string for process name"); } - jobject java_oom_kill = env->NewObject(sOomKillRecordInfo.clazz, sOomKillRecordInfo.ctor, - oom_kill.timestamp_ms, oom_kill.pid, oom_kill.uid, - process_name, oom_kill.oom_score_adj); + jobject java_oom_kill = + env->NewObject(sOomKillRecordInfo.clazz, sOomKillRecordInfo.ctor, + oom_kill.timestamp_ms, oom_kill.pid, oom_kill.uid, process_name, + oom_kill.oom_score_adj, oom_kill.total_vm_kb, oom_kill.anon_rss_kb, + oom_kill.file_rss_kb, oom_kill.shmem_rss_kb, oom_kill.pgtables_kb); if (java_oom_kill == NULL) { memevent_listener.deregisterAllEvents(); jniThrowRuntimeException(env, "Failed to create OomKillRecord object"); @@ -115,8 +117,8 @@ int register_android_server_am_OomConnection(JNIEnv* env) { sOomKillRecordInfo.clazz = FindClassOrDie(env, "android/os/OomKillRecord"); sOomKillRecordInfo.clazz = MakeGlobalRefOrDie(env, sOomKillRecordInfo.clazz); - sOomKillRecordInfo.ctor = - GetMethodIDOrDie(env, sOomKillRecordInfo.clazz, "<init>", "(JIILjava/lang/String;S)V"); + sOomKillRecordInfo.ctor = GetMethodIDOrDie(env, sOomKillRecordInfo.clazz, "<init>", + "(JIILjava/lang/String;SJJJJJ)V"); return RegisterMethodsOrDie(env, "com/android/server/am/OomConnection", sOomConnectionMethods, NELEM(sOomConnectionMethods)); |