Loading core/java/android/os/Process.java +10 −0 Original line number Diff line number Diff line Loading @@ -969,6 +969,16 @@ public class Process { public static final native int getProcessGroup(int pid) throws IllegalArgumentException, SecurityException; /** * * Create a new process group in the cgroup uid/pid hierarchy * * @return <0 in case of error * * @hide */ public static final native int createProcessGroup(int uid, int pid); /** * On some devices, the foreground process may have one or more CPU * cores exclusively reserved for it. This method can be used to Loading core/jni/android_util_Process.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -377,6 +377,10 @@ jint android_os_Process_getProcessGroup(JNIEnv* env, jobject clazz, jint pid) return (int) sp; } jint android_os_Process_createProcessGroup(JNIEnv* env, jobject clazz, jint uid, jint pid) { return createProcessGroup(uid, pid); } /** Sample CPUset list format: * 0-3,4,6-8 */ Loading Loading @@ -1358,6 +1362,7 @@ static const JNINativeMethod methods[] = { {"setThreadGroupAndCpuset", "(II)V", (void*)android_os_Process_setThreadGroupAndCpuset}, {"setProcessGroup", "(II)V", (void*)android_os_Process_setProcessGroup}, {"getProcessGroup", "(I)I", (void*)android_os_Process_getProcessGroup}, {"createProcessGroup", "(II)I", (void*)android_os_Process_createProcessGroup}, {"getExclusiveCores", "()[I", (void*)android_os_Process_getExclusiveCores}, {"setSwappiness", "(IZ)Z", (void*)android_os_Process_setSwappiness}, {"setArgV0", "(Ljava/lang/String;)V", (void*)android_os_Process_setArgV0}, Loading services/core/java/com/android/server/am/ProcessList.java +5 −0 Original line number Diff line number Diff line Loading @@ -2407,6 +2407,11 @@ public final class ProcessList { app.getDisabledCompatChanges(), pkgDataInfoMap, allowlistedAppDataInfoMap, false, false, new String[]{PROC_START_SEQ_IDENT + app.getStartSeq()}); if (Process.createProcessGroup(uid, startResult.pid) < 0) { Slog.e(ActivityManagerService.TAG, "Unable to create process group for " + app.processName + " (" + startResult.pid + ")"); } } else { startResult = Process.start(entryPoint, app.processName, uid, uid, gids, runtimeFlags, mountExternal, Loading Loading
core/java/android/os/Process.java +10 −0 Original line number Diff line number Diff line Loading @@ -969,6 +969,16 @@ public class Process { public static final native int getProcessGroup(int pid) throws IllegalArgumentException, SecurityException; /** * * Create a new process group in the cgroup uid/pid hierarchy * * @return <0 in case of error * * @hide */ public static final native int createProcessGroup(int uid, int pid); /** * On some devices, the foreground process may have one or more CPU * cores exclusively reserved for it. This method can be used to Loading
core/jni/android_util_Process.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -377,6 +377,10 @@ jint android_os_Process_getProcessGroup(JNIEnv* env, jobject clazz, jint pid) return (int) sp; } jint android_os_Process_createProcessGroup(JNIEnv* env, jobject clazz, jint uid, jint pid) { return createProcessGroup(uid, pid); } /** Sample CPUset list format: * 0-3,4,6-8 */ Loading Loading @@ -1358,6 +1362,7 @@ static const JNINativeMethod methods[] = { {"setThreadGroupAndCpuset", "(II)V", (void*)android_os_Process_setThreadGroupAndCpuset}, {"setProcessGroup", "(II)V", (void*)android_os_Process_setProcessGroup}, {"getProcessGroup", "(I)I", (void*)android_os_Process_getProcessGroup}, {"createProcessGroup", "(II)I", (void*)android_os_Process_createProcessGroup}, {"getExclusiveCores", "()[I", (void*)android_os_Process_getExclusiveCores}, {"setSwappiness", "(IZ)Z", (void*)android_os_Process_setSwappiness}, {"setArgV0", "(Ljava/lang/String;)V", (void*)android_os_Process_setArgV0}, Loading
services/core/java/com/android/server/am/ProcessList.java +5 −0 Original line number Diff line number Diff line Loading @@ -2407,6 +2407,11 @@ public final class ProcessList { app.getDisabledCompatChanges(), pkgDataInfoMap, allowlistedAppDataInfoMap, false, false, new String[]{PROC_START_SEQ_IDENT + app.getStartSeq()}); if (Process.createProcessGroup(uid, startResult.pid) < 0) { Slog.e(ActivityManagerService.TAG, "Unable to create process group for " + app.processName + " (" + startResult.pid + ")"); } } else { startResult = Process.start(entryPoint, app.processName, uid, uid, gids, runtimeFlags, mountExternal, Loading