OSDN Git Service

Added system_server to system group
authorCarmen Jackson <carmenjackson@google.com>
Thu, 23 Feb 2017 23:21:10 +0000 (15:21 -0800)
committerRobert Benea <robenea@google.com>
Tue, 29 Aug 2017 01:00:10 +0000 (18:00 -0700)
Test: on gobo
pidof system_server appears in the correct file:
$ adb shell pidof system_server
859
$ adb shell cat /dev/memcg/system/tasks | grep '859'
859

Bug: 65130832
Change-Id: Id63abd473a7f2001688b0be06bfec6472c7f8648

core/jni/com_android_internal_os_Zygote.cpp

index 3887c76..e1c2cb0 100644 (file)
@@ -45,6 +45,8 @@
 #include <unistd.h>
 
 #include "android-base/logging.h"
+#include <android-base/file.h>
+#include <android-base/stringprintf.h>
 #include <cutils/fs.h>
 #include <cutils/multiuser.h>
 #include <cutils/sched_policy.h>
@@ -65,6 +67,8 @@
 namespace {
 
 using android::String8;
+using android::base::StringPrintf;
+using android::base::WriteStringToFile;
 
 static pid_t gSystemServerPid = 0;
 
@@ -754,6 +758,11 @@ static jint com_android_internal_os_Zygote_nativeForkSystemServer(
           ALOGE("System server process %d has died. Restarting Zygote!", pid);
           RuntimeAbort(env, __LINE__, "System server process has died. Restarting Zygote!");
       }
+
+      // Assign system_server to the correct memory cgroup.
+      if (!WriteStringToFile(StringPrintf("%d", pid), "/dev/memcg/system/tasks")) {
+        ALOGE("couldn't write %d to /dev/memcg/system/tasks", pid);
+      }
   }
   return pid;
 }