Loading core/jni/android_util_Process.cpp +13 −9 Original line number Diff line number Diff line Loading @@ -346,30 +346,34 @@ static void parse_cpuset_cpus(char *cpus, cpu_set_t *cpu_set) { static void get_cpuset_cores_for_policy(SchedPolicy policy, cpu_set_t *cpu_set) { FILE *file; const char *filename; std::string filename; CPU_ZERO(cpu_set); switch (policy) { case SP_BACKGROUND: filename = "/dev/cpuset/background/cpus"; if (!CgroupGetAttributePath("LowCapacityCPUs", &filename)) { return; } break; case SP_FOREGROUND: case SP_AUDIO_APP: case SP_AUDIO_SYS: case SP_RT_APP: filename = "/dev/cpuset/foreground/cpus"; if (!CgroupGetAttributePath("HighCapacityCPUs", &filename)) { return; } break; case SP_TOP_APP: filename = "/dev/cpuset/top-app/cpus"; if (!CgroupGetAttributePath("MaxCapacityCPUs", &filename)) { return; } break; default: filename = NULL; return; } if (!filename) return; file = fopen(filename, "re"); file = fopen(filename.c_str(), "re"); if (file != NULL) { // Parse cpus string char *line = NULL; Loading @@ -379,7 +383,7 @@ static void get_cpuset_cores_for_policy(SchedPolicy policy, cpu_set_t *cpu_set) if (num_read > 0) { parse_cpuset_cpus(line, cpu_set); } else { ALOGE("Failed to read %s", filename); ALOGE("Failed to read %s", filename.c_str()); } free(line); } Loading core/jni/com_android_internal_os_Zygote.cpp +4 −7 Original line number Diff line number Diff line Loading @@ -1305,15 +1305,12 @@ static jint com_android_internal_os_Zygote_nativeForkSystemServer( RuntimeAbort(env, __LINE__, "System server process has died. Restarting Zygote!"); } bool low_ram_device = GetBoolProperty("ro.config.low_ram", false); bool per_app_memcg = GetBoolProperty("ro.config.per_app_memcg", low_ram_device); if (per_app_memcg) { if (UsePerAppMemcg()) { // Assign system_server to the correct memory cgroup. // Not all devices mount /dev/memcg so check for the file first // Not all devices mount memcg so check if it is mounted first // to avoid unnecessarily printing errors and denials in the logs. if (!access("/dev/memcg/system/tasks", F_OK) && !WriteStringToFile(StringPrintf("%d", pid), "/dev/memcg/system/tasks")) { ALOGE("couldn't write %d to /dev/memcg/system/tasks", pid); if (!SetTaskProfiles(pid, std::vector<std::string>{"SystemMemoryProcess"})) { ALOGE("couldn't add process %d into system memcg group", pid); } } } Loading media/jni/Android.bp +3 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ cc_library_shared { "libmtp", "libexif", "libpiex", "libprocessgroup", "libandroidfw", "libhidlallocatorutils", "libhidlbase", Loading Loading @@ -131,6 +132,7 @@ cc_library_shared { "libcutils", "libdexfile", "liblzma", "libjsoncpp", "libmedia_helper", "libmedia_player2_util", "libmediadrm", Loading @@ -140,6 +142,7 @@ cc_library_shared { "libmediautils", "libnativehelper", "libnetd_client", "libprocessgroup", "libstagefright_esds", "libstagefright_foundation", "libstagefright_httplive", Loading Loading
core/jni/android_util_Process.cpp +13 −9 Original line number Diff line number Diff line Loading @@ -346,30 +346,34 @@ static void parse_cpuset_cpus(char *cpus, cpu_set_t *cpu_set) { static void get_cpuset_cores_for_policy(SchedPolicy policy, cpu_set_t *cpu_set) { FILE *file; const char *filename; std::string filename; CPU_ZERO(cpu_set); switch (policy) { case SP_BACKGROUND: filename = "/dev/cpuset/background/cpus"; if (!CgroupGetAttributePath("LowCapacityCPUs", &filename)) { return; } break; case SP_FOREGROUND: case SP_AUDIO_APP: case SP_AUDIO_SYS: case SP_RT_APP: filename = "/dev/cpuset/foreground/cpus"; if (!CgroupGetAttributePath("HighCapacityCPUs", &filename)) { return; } break; case SP_TOP_APP: filename = "/dev/cpuset/top-app/cpus"; if (!CgroupGetAttributePath("MaxCapacityCPUs", &filename)) { return; } break; default: filename = NULL; return; } if (!filename) return; file = fopen(filename, "re"); file = fopen(filename.c_str(), "re"); if (file != NULL) { // Parse cpus string char *line = NULL; Loading @@ -379,7 +383,7 @@ static void get_cpuset_cores_for_policy(SchedPolicy policy, cpu_set_t *cpu_set) if (num_read > 0) { parse_cpuset_cpus(line, cpu_set); } else { ALOGE("Failed to read %s", filename); ALOGE("Failed to read %s", filename.c_str()); } free(line); } Loading
core/jni/com_android_internal_os_Zygote.cpp +4 −7 Original line number Diff line number Diff line Loading @@ -1305,15 +1305,12 @@ static jint com_android_internal_os_Zygote_nativeForkSystemServer( RuntimeAbort(env, __LINE__, "System server process has died. Restarting Zygote!"); } bool low_ram_device = GetBoolProperty("ro.config.low_ram", false); bool per_app_memcg = GetBoolProperty("ro.config.per_app_memcg", low_ram_device); if (per_app_memcg) { if (UsePerAppMemcg()) { // Assign system_server to the correct memory cgroup. // Not all devices mount /dev/memcg so check for the file first // Not all devices mount memcg so check if it is mounted first // to avoid unnecessarily printing errors and denials in the logs. if (!access("/dev/memcg/system/tasks", F_OK) && !WriteStringToFile(StringPrintf("%d", pid), "/dev/memcg/system/tasks")) { ALOGE("couldn't write %d to /dev/memcg/system/tasks", pid); if (!SetTaskProfiles(pid, std::vector<std::string>{"SystemMemoryProcess"})) { ALOGE("couldn't add process %d into system memcg group", pid); } } } Loading
media/jni/Android.bp +3 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ cc_library_shared { "libmtp", "libexif", "libpiex", "libprocessgroup", "libandroidfw", "libhidlallocatorutils", "libhidlbase", Loading Loading @@ -131,6 +132,7 @@ cc_library_shared { "libcutils", "libdexfile", "liblzma", "libjsoncpp", "libmedia_helper", "libmedia_player2_util", "libmediadrm", Loading @@ -140,6 +142,7 @@ cc_library_shared { "libmediautils", "libnativehelper", "libnetd_client", "libprocessgroup", "libstagefright_esds", "libstagefright_foundation", "libstagefright_httplive", Loading