Loading core/java/android/os/Process.java +7 −7 Original line number Diff line number Diff line Loading @@ -19,8 +19,8 @@ package android.os; import android.annotation.TestApi; import android.system.Os; import android.system.OsConstants; import android.util.Log; import android.webkit.WebViewZygote; import dalvik.system.VMRuntime; /** Loading Loading @@ -417,7 +417,7 @@ public class Process { * * When invokeWith is not null, the process will be started as a fresh app * and not a zygote fork. Note that this is only allowed for uid 0 or when * debugFlags contains DEBUG_ENABLE_DEBUGGER. * runtimeFlags contains DEBUG_ENABLE_DEBUGGER. * * @param processClass The class to use as the process's main entry * point. Loading @@ -425,7 +425,7 @@ public class Process { * @param uid The user-id under which the process will run. * @param gid The group-id under which the process will run. * @param gids Additional group-ids associated with the process. * @param debugFlags Additional flags. * @param runtimeFlags Additional flags for the runtime. * @param targetSdkVersion The target SDK version for the app. * @param seInfo null-ok SELinux information for the new process. * @param abi non-null the ABI this app should be started with. Loading @@ -442,7 +442,7 @@ public class Process { public static final ProcessStartResult start(final String processClass, final String niceName, int uid, int gid, int[] gids, int debugFlags, int mountExternal, int runtimeFlags, int mountExternal, int targetSdkVersion, String seInfo, String abi, Loading @@ -451,7 +451,7 @@ public class Process { String invokeWith, String[] zygoteArgs) { return zygoteProcess.start(processClass, niceName, uid, gid, gids, debugFlags, mountExternal, targetSdkVersion, seInfo, runtimeFlags, mountExternal, targetSdkVersion, seInfo, abi, instructionSet, appDataDir, invokeWith, zygoteArgs); } Loading @@ -459,7 +459,7 @@ public class Process { public static final ProcessStartResult startWebView(final String processClass, final String niceName, int uid, int gid, int[] gids, int debugFlags, int mountExternal, int runtimeFlags, int mountExternal, int targetSdkVersion, String seInfo, String abi, Loading @@ -468,7 +468,7 @@ public class Process { String invokeWith, String[] zygoteArgs) { return WebViewZygote.getProcess().start(processClass, niceName, uid, gid, gids, debugFlags, mountExternal, targetSdkVersion, seInfo, runtimeFlags, mountExternal, targetSdkVersion, seInfo, abi, instructionSet, appDataDir, invokeWith, zygoteArgs); } Loading core/java/android/os/ZygoteProcess.java +9 −33 Original line number Diff line number Diff line Loading @@ -19,9 +19,11 @@ package android.os; import android.net.LocalSocket; import android.net.LocalSocketAddress; import android.util.Log; import com.android.internal.annotations.GuardedBy; import com.android.internal.os.Zygote; import com.android.internal.util.Preconditions; import java.io.BufferedWriter; import java.io.DataInputStream; import java.io.IOException; Loading Loading @@ -172,7 +174,7 @@ public class ZygoteProcess { * * When invokeWith is not null, the process will be started as a fresh app * and not a zygote fork. Note that this is only allowed for uid 0 or when * debugFlags contains DEBUG_ENABLE_DEBUGGER. * runtimeFlags contains DEBUG_ENABLE_DEBUGGER. * * @param processClass The class to use as the process's main entry * point. Loading @@ -180,7 +182,7 @@ public class ZygoteProcess { * @param uid The user-id under which the process will run. * @param gid The group-id under which the process will run. * @param gids Additional group-ids associated with the process. * @param debugFlags Additional flags. * @param runtimeFlags Additional flags. * @param targetSdkVersion The target SDK version for the app. * @param seInfo null-ok SELinux information for the new process. * @param abi non-null the ABI this app should be started with. Loading @@ -195,7 +197,7 @@ public class ZygoteProcess { public final Process.ProcessStartResult start(final String processClass, final String niceName, int uid, int gid, int[] gids, int debugFlags, int mountExternal, int runtimeFlags, int mountExternal, int targetSdkVersion, String seInfo, String abi, Loading @@ -205,7 +207,7 @@ public class ZygoteProcess { String[] zygoteArgs) { try { return startViaZygote(processClass, niceName, uid, gid, gids, debugFlags, mountExternal, targetSdkVersion, seInfo, runtimeFlags, mountExternal, targetSdkVersion, seInfo, abi, instructionSet, appDataDir, invokeWith, zygoteArgs); } catch (ZygoteStartFailedEx ex) { Log.e(LOG_TAG, Loading Loading @@ -316,7 +318,7 @@ public class ZygoteProcess { * @param gid a POSIX gid that the new process shuold setgid() to * @param gids null-ok; a list of supplementary group IDs that the * new process should setgroup() to. * @param debugFlags Additional flags. * @param runtimeFlags Additional flags for the runtime. * @param targetSdkVersion The target SDK version for the app. * @param seInfo null-ok SELinux information for the new process. * @param abi the ABI the process should use. Loading @@ -330,7 +332,7 @@ public class ZygoteProcess { final String niceName, final int uid, final int gid, final int[] gids, int debugFlags, int mountExternal, int runtimeFlags, int mountExternal, int targetSdkVersion, String seInfo, String abi, Loading @@ -346,33 +348,7 @@ public class ZygoteProcess { argsForZygote.add("--runtime-args"); argsForZygote.add("--setuid=" + uid); argsForZygote.add("--setgid=" + gid); if ((debugFlags & Zygote.DEBUG_ENABLE_JNI_LOGGING) != 0) { argsForZygote.add("--enable-jni-logging"); } if ((debugFlags & Zygote.DEBUG_ENABLE_SAFEMODE) != 0) { argsForZygote.add("--enable-safemode"); } if ((debugFlags & Zygote.DEBUG_ENABLE_JDWP) != 0) { argsForZygote.add("--enable-jdwp"); } if ((debugFlags & Zygote.DEBUG_ENABLE_CHECKJNI) != 0) { argsForZygote.add("--enable-checkjni"); } if ((debugFlags & Zygote.DEBUG_GENERATE_DEBUG_INFO) != 0) { argsForZygote.add("--generate-debug-info"); } if ((debugFlags & Zygote.DEBUG_ALWAYS_JIT) != 0) { argsForZygote.add("--always-jit"); } if ((debugFlags & Zygote.DEBUG_NATIVE_DEBUGGABLE) != 0) { argsForZygote.add("--native-debuggable"); } if ((debugFlags & Zygote.DEBUG_JAVA_DEBUGGABLE) != 0) { argsForZygote.add("--java-debuggable"); } if ((debugFlags & Zygote.DEBUG_ENABLE_ASSERT) != 0) { argsForZygote.add("--enable-assert"); } argsForZygote.add("--runtime-flags=" + runtimeFlags); if (mountExternal == Zygote.MOUNT_EXTERNAL_DEFAULT) { argsForZygote.add("--mount-external-default"); } else if (mountExternal == Zygote.MOUNT_EXTERNAL_READ) { Loading core/java/com/android/internal/os/Zygote.java +11 −11 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ import java.lang.reflect.Method; /** @hide */ public final class Zygote { /* * Bit values for "debugFlags" argument. The definitions are duplicated * Bit values for "runtimeFlags" argument. The definitions are duplicated * in the native code. */ Loading Loading @@ -75,7 +75,7 @@ public final class Zygote { * fork()ing and and before spawning any threads. * @param gids null-ok; a list of UNIX gids that the new process should * setgroups() to after fork and before spawning any threads. * @param debugFlags bit flags that enable debugging features. * @param runtimeFlags bit flags that enable ART features. * @param rlimits null-ok an array of rlimit tuples, with the second * dimension having a length of 3 and representing * (resource, rlim_cur, rlim_max). These are set via the posix Loading @@ -96,14 +96,14 @@ public final class Zygote { * @return 0 if this is the child, pid of the child * if this is the parent, or -1 on error. */ public static int forkAndSpecialize(int uid, int gid, int[] gids, int debugFlags, public static int forkAndSpecialize(int uid, int gid, int[] gids, int runtimeFlags, int[][] rlimits, int mountExternal, String seInfo, String niceName, int[] fdsToClose, int[] fdsToIgnore, String instructionSet, String appDataDir) { VM_HOOKS.preFork(); // Resets nice priority for zygote process. resetNicePriority(); int pid = nativeForkAndSpecialize( uid, gid, gids, debugFlags, rlimits, mountExternal, seInfo, niceName, fdsToClose, uid, gid, gids, runtimeFlags, rlimits, mountExternal, seInfo, niceName, fdsToClose, fdsToIgnore, instructionSet, appDataDir); // Enable tracing as soon as possible for the child process. if (pid == 0) { Loading @@ -116,7 +116,7 @@ public final class Zygote { return pid; } native private static int nativeForkAndSpecialize(int uid, int gid, int[] gids,int debugFlags, native private static int nativeForkAndSpecialize(int uid, int gid, int[] gids,int runtimeFlags, int[][] rlimits, int mountExternal, String seInfo, String niceName, int[] fdsToClose, int[] fdsToIgnore, String instructionSet, String appDataDir); Loading @@ -137,7 +137,7 @@ public final class Zygote { * fork()ing and and before spawning any threads. * @param gids null-ok; a list of UNIX gids that the new process should * setgroups() to after fork and before spawning any threads. * @param debugFlags bit flags that enable debugging features. * @param runtimeFlags bit flags that enable ART features. * @param rlimits null-ok an array of rlimit tuples, with the second * dimension having a length of 3 and representing * (resource, rlim_cur, rlim_max). These are set via the posix Loading @@ -148,13 +148,13 @@ public final class Zygote { * @return 0 if this is the child, pid of the child * if this is the parent, or -1 on error. */ public static int forkSystemServer(int uid, int gid, int[] gids, int debugFlags, public static int forkSystemServer(int uid, int gid, int[] gids, int runtimeFlags, int[][] rlimits, long permittedCapabilities, long effectiveCapabilities) { VM_HOOKS.preFork(); // Resets nice priority for zygote process. resetNicePriority(); int pid = nativeForkSystemServer( uid, gid, gids, debugFlags, rlimits, permittedCapabilities, effectiveCapabilities); uid, gid, gids, runtimeFlags, rlimits, permittedCapabilities, effectiveCapabilities); // Enable tracing as soon as we enter the system_server. if (pid == 0) { Trace.setTracingEnabled(true); Loading @@ -163,7 +163,7 @@ public final class Zygote { return pid; } native private static int nativeForkSystemServer(int uid, int gid, int[] gids, int debugFlags, native private static int nativeForkSystemServer(int uid, int gid, int[] gids, int runtimeFlags, int[][] rlimits, long permittedCapabilities, long effectiveCapabilities); /** Loading @@ -177,9 +177,9 @@ public final class Zygote { */ native protected static void nativeUnmountStorageOnInit(); private static void callPostForkChildHooks(int debugFlags, boolean isSystemServer, private static void callPostForkChildHooks(int runtimeFlags, boolean isSystemServer, String instructionSet) { VM_HOOKS.postForkChild(debugFlags, isSystemServer, instructionSet); VM_HOOKS.postForkChild(runtimeFlags, isSystemServer, instructionSet); } /** Loading core/java/com/android/internal/os/ZygoteConnection.java +8 −25 Original line number Diff line number Diff line Loading @@ -230,7 +230,7 @@ class ZygoteConnection { fd = null; pid = Zygote.forkAndSpecialize(parsedArgs.uid, parsedArgs.gid, parsedArgs.gids, parsedArgs.debugFlags, rlimits, parsedArgs.mountExternal, parsedArgs.seInfo, parsedArgs.runtimeFlags, rlimits, parsedArgs.mountExternal, parsedArgs.seInfo, parsedArgs.niceName, fdsToClose, fdsToIgnore, parsedArgs.instructionSet, parsedArgs.appDataDir); } catch (ErrnoException ex) { Loading Loading @@ -363,11 +363,9 @@ class ZygoteConnection { int[] gids; /** * From --enable-jdwp, --enable-checkjni, --enable-assert, * --enable-safemode, --generate-debug-info, --enable-jni-logging, * --java-debuggable, and --native-debuggable. * From --runtime-flags. */ int debugFlags; int runtimeFlags; /** From --mount-external */ int mountExternal = Zygote.MOUNT_EXTERNAL_NONE; Loading Loading @@ -483,26 +481,11 @@ class ZygoteConnection { targetSdkVersionSpecified = true; targetSdkVersion = Integer.parseInt( arg.substring(arg.indexOf('=') + 1)); } else if (arg.equals("--enable-jdwp")) { debugFlags |= Zygote.DEBUG_ENABLE_JDWP; } else if (arg.equals("--enable-safemode")) { debugFlags |= Zygote.DEBUG_ENABLE_SAFEMODE; } else if (arg.equals("--enable-checkjni")) { debugFlags |= Zygote.DEBUG_ENABLE_CHECKJNI; } else if (arg.equals("--generate-debug-info")) { debugFlags |= Zygote.DEBUG_GENERATE_DEBUG_INFO; } else if (arg.equals("--always-jit")) { debugFlags |= Zygote.DEBUG_ALWAYS_JIT; } else if (arg.equals("--native-debuggable")) { debugFlags |= Zygote.DEBUG_NATIVE_DEBUGGABLE; } else if (arg.equals("--java-debuggable")) { debugFlags |= Zygote.DEBUG_JAVA_DEBUGGABLE; } else if (arg.equals("--enable-jni-logging")) { debugFlags |= Zygote.DEBUG_ENABLE_JNI_LOGGING; } else if (arg.equals("--enable-assert")) { debugFlags |= Zygote.DEBUG_ENABLE_ASSERT; } else if (arg.equals("--runtime-args")) { seenRuntimeArgs = true; } else if (arg.startsWith("--runtime-flags=")) { runtimeFlags = Integer.parseInt( arg.substring(arg.indexOf('=') + 1)); } else if (arg.startsWith("--seinfo=")) { if (seInfoSpecified) { throw new IllegalArgumentException( Loading Loading @@ -718,7 +701,7 @@ class ZygoteConnection { */ public static void applyDebuggerSystemProperty(Arguments args) { if (RoSystemProperties.DEBUGGABLE) { args.debugFlags |= Zygote.DEBUG_ENABLE_JDWP; args.runtimeFlags |= Zygote.DEBUG_ENABLE_JDWP; } } Loading @@ -740,7 +723,7 @@ class ZygoteConnection { int peerUid = peer.getUid(); if (args.invokeWith != null && peerUid != 0 && (args.debugFlags & Zygote.DEBUG_ENABLE_JDWP) == 0) { (args.runtimeFlags & Zygote.DEBUG_ENABLE_JDWP) == 0) { throw new ZygoteSecurityException("Peer is permitted to specify an" + "explicit invoke-with wrapper command only for debuggable" + "applications."); Loading core/java/com/android/internal/os/ZygoteInit.java +1 −1 Original line number Diff line number Diff line Loading @@ -642,7 +642,7 @@ public class ZygoteInit { pid = Zygote.forkSystemServer( parsedArgs.uid, parsedArgs.gid, parsedArgs.gids, parsedArgs.debugFlags, parsedArgs.runtimeFlags, null, parsedArgs.permittedCapabilities, parsedArgs.effectiveCapabilities); Loading Loading
core/java/android/os/Process.java +7 −7 Original line number Diff line number Diff line Loading @@ -19,8 +19,8 @@ package android.os; import android.annotation.TestApi; import android.system.Os; import android.system.OsConstants; import android.util.Log; import android.webkit.WebViewZygote; import dalvik.system.VMRuntime; /** Loading Loading @@ -417,7 +417,7 @@ public class Process { * * When invokeWith is not null, the process will be started as a fresh app * and not a zygote fork. Note that this is only allowed for uid 0 or when * debugFlags contains DEBUG_ENABLE_DEBUGGER. * runtimeFlags contains DEBUG_ENABLE_DEBUGGER. * * @param processClass The class to use as the process's main entry * point. Loading @@ -425,7 +425,7 @@ public class Process { * @param uid The user-id under which the process will run. * @param gid The group-id under which the process will run. * @param gids Additional group-ids associated with the process. * @param debugFlags Additional flags. * @param runtimeFlags Additional flags for the runtime. * @param targetSdkVersion The target SDK version for the app. * @param seInfo null-ok SELinux information for the new process. * @param abi non-null the ABI this app should be started with. Loading @@ -442,7 +442,7 @@ public class Process { public static final ProcessStartResult start(final String processClass, final String niceName, int uid, int gid, int[] gids, int debugFlags, int mountExternal, int runtimeFlags, int mountExternal, int targetSdkVersion, String seInfo, String abi, Loading @@ -451,7 +451,7 @@ public class Process { String invokeWith, String[] zygoteArgs) { return zygoteProcess.start(processClass, niceName, uid, gid, gids, debugFlags, mountExternal, targetSdkVersion, seInfo, runtimeFlags, mountExternal, targetSdkVersion, seInfo, abi, instructionSet, appDataDir, invokeWith, zygoteArgs); } Loading @@ -459,7 +459,7 @@ public class Process { public static final ProcessStartResult startWebView(final String processClass, final String niceName, int uid, int gid, int[] gids, int debugFlags, int mountExternal, int runtimeFlags, int mountExternal, int targetSdkVersion, String seInfo, String abi, Loading @@ -468,7 +468,7 @@ public class Process { String invokeWith, String[] zygoteArgs) { return WebViewZygote.getProcess().start(processClass, niceName, uid, gid, gids, debugFlags, mountExternal, targetSdkVersion, seInfo, runtimeFlags, mountExternal, targetSdkVersion, seInfo, abi, instructionSet, appDataDir, invokeWith, zygoteArgs); } Loading
core/java/android/os/ZygoteProcess.java +9 −33 Original line number Diff line number Diff line Loading @@ -19,9 +19,11 @@ package android.os; import android.net.LocalSocket; import android.net.LocalSocketAddress; import android.util.Log; import com.android.internal.annotations.GuardedBy; import com.android.internal.os.Zygote; import com.android.internal.util.Preconditions; import java.io.BufferedWriter; import java.io.DataInputStream; import java.io.IOException; Loading Loading @@ -172,7 +174,7 @@ public class ZygoteProcess { * * When invokeWith is not null, the process will be started as a fresh app * and not a zygote fork. Note that this is only allowed for uid 0 or when * debugFlags contains DEBUG_ENABLE_DEBUGGER. * runtimeFlags contains DEBUG_ENABLE_DEBUGGER. * * @param processClass The class to use as the process's main entry * point. Loading @@ -180,7 +182,7 @@ public class ZygoteProcess { * @param uid The user-id under which the process will run. * @param gid The group-id under which the process will run. * @param gids Additional group-ids associated with the process. * @param debugFlags Additional flags. * @param runtimeFlags Additional flags. * @param targetSdkVersion The target SDK version for the app. * @param seInfo null-ok SELinux information for the new process. * @param abi non-null the ABI this app should be started with. Loading @@ -195,7 +197,7 @@ public class ZygoteProcess { public final Process.ProcessStartResult start(final String processClass, final String niceName, int uid, int gid, int[] gids, int debugFlags, int mountExternal, int runtimeFlags, int mountExternal, int targetSdkVersion, String seInfo, String abi, Loading @@ -205,7 +207,7 @@ public class ZygoteProcess { String[] zygoteArgs) { try { return startViaZygote(processClass, niceName, uid, gid, gids, debugFlags, mountExternal, targetSdkVersion, seInfo, runtimeFlags, mountExternal, targetSdkVersion, seInfo, abi, instructionSet, appDataDir, invokeWith, zygoteArgs); } catch (ZygoteStartFailedEx ex) { Log.e(LOG_TAG, Loading Loading @@ -316,7 +318,7 @@ public class ZygoteProcess { * @param gid a POSIX gid that the new process shuold setgid() to * @param gids null-ok; a list of supplementary group IDs that the * new process should setgroup() to. * @param debugFlags Additional flags. * @param runtimeFlags Additional flags for the runtime. * @param targetSdkVersion The target SDK version for the app. * @param seInfo null-ok SELinux information for the new process. * @param abi the ABI the process should use. Loading @@ -330,7 +332,7 @@ public class ZygoteProcess { final String niceName, final int uid, final int gid, final int[] gids, int debugFlags, int mountExternal, int runtimeFlags, int mountExternal, int targetSdkVersion, String seInfo, String abi, Loading @@ -346,33 +348,7 @@ public class ZygoteProcess { argsForZygote.add("--runtime-args"); argsForZygote.add("--setuid=" + uid); argsForZygote.add("--setgid=" + gid); if ((debugFlags & Zygote.DEBUG_ENABLE_JNI_LOGGING) != 0) { argsForZygote.add("--enable-jni-logging"); } if ((debugFlags & Zygote.DEBUG_ENABLE_SAFEMODE) != 0) { argsForZygote.add("--enable-safemode"); } if ((debugFlags & Zygote.DEBUG_ENABLE_JDWP) != 0) { argsForZygote.add("--enable-jdwp"); } if ((debugFlags & Zygote.DEBUG_ENABLE_CHECKJNI) != 0) { argsForZygote.add("--enable-checkjni"); } if ((debugFlags & Zygote.DEBUG_GENERATE_DEBUG_INFO) != 0) { argsForZygote.add("--generate-debug-info"); } if ((debugFlags & Zygote.DEBUG_ALWAYS_JIT) != 0) { argsForZygote.add("--always-jit"); } if ((debugFlags & Zygote.DEBUG_NATIVE_DEBUGGABLE) != 0) { argsForZygote.add("--native-debuggable"); } if ((debugFlags & Zygote.DEBUG_JAVA_DEBUGGABLE) != 0) { argsForZygote.add("--java-debuggable"); } if ((debugFlags & Zygote.DEBUG_ENABLE_ASSERT) != 0) { argsForZygote.add("--enable-assert"); } argsForZygote.add("--runtime-flags=" + runtimeFlags); if (mountExternal == Zygote.MOUNT_EXTERNAL_DEFAULT) { argsForZygote.add("--mount-external-default"); } else if (mountExternal == Zygote.MOUNT_EXTERNAL_READ) { Loading
core/java/com/android/internal/os/Zygote.java +11 −11 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ import java.lang.reflect.Method; /** @hide */ public final class Zygote { /* * Bit values for "debugFlags" argument. The definitions are duplicated * Bit values for "runtimeFlags" argument. The definitions are duplicated * in the native code. */ Loading Loading @@ -75,7 +75,7 @@ public final class Zygote { * fork()ing and and before spawning any threads. * @param gids null-ok; a list of UNIX gids that the new process should * setgroups() to after fork and before spawning any threads. * @param debugFlags bit flags that enable debugging features. * @param runtimeFlags bit flags that enable ART features. * @param rlimits null-ok an array of rlimit tuples, with the second * dimension having a length of 3 and representing * (resource, rlim_cur, rlim_max). These are set via the posix Loading @@ -96,14 +96,14 @@ public final class Zygote { * @return 0 if this is the child, pid of the child * if this is the parent, or -1 on error. */ public static int forkAndSpecialize(int uid, int gid, int[] gids, int debugFlags, public static int forkAndSpecialize(int uid, int gid, int[] gids, int runtimeFlags, int[][] rlimits, int mountExternal, String seInfo, String niceName, int[] fdsToClose, int[] fdsToIgnore, String instructionSet, String appDataDir) { VM_HOOKS.preFork(); // Resets nice priority for zygote process. resetNicePriority(); int pid = nativeForkAndSpecialize( uid, gid, gids, debugFlags, rlimits, mountExternal, seInfo, niceName, fdsToClose, uid, gid, gids, runtimeFlags, rlimits, mountExternal, seInfo, niceName, fdsToClose, fdsToIgnore, instructionSet, appDataDir); // Enable tracing as soon as possible for the child process. if (pid == 0) { Loading @@ -116,7 +116,7 @@ public final class Zygote { return pid; } native private static int nativeForkAndSpecialize(int uid, int gid, int[] gids,int debugFlags, native private static int nativeForkAndSpecialize(int uid, int gid, int[] gids,int runtimeFlags, int[][] rlimits, int mountExternal, String seInfo, String niceName, int[] fdsToClose, int[] fdsToIgnore, String instructionSet, String appDataDir); Loading @@ -137,7 +137,7 @@ public final class Zygote { * fork()ing and and before spawning any threads. * @param gids null-ok; a list of UNIX gids that the new process should * setgroups() to after fork and before spawning any threads. * @param debugFlags bit flags that enable debugging features. * @param runtimeFlags bit flags that enable ART features. * @param rlimits null-ok an array of rlimit tuples, with the second * dimension having a length of 3 and representing * (resource, rlim_cur, rlim_max). These are set via the posix Loading @@ -148,13 +148,13 @@ public final class Zygote { * @return 0 if this is the child, pid of the child * if this is the parent, or -1 on error. */ public static int forkSystemServer(int uid, int gid, int[] gids, int debugFlags, public static int forkSystemServer(int uid, int gid, int[] gids, int runtimeFlags, int[][] rlimits, long permittedCapabilities, long effectiveCapabilities) { VM_HOOKS.preFork(); // Resets nice priority for zygote process. resetNicePriority(); int pid = nativeForkSystemServer( uid, gid, gids, debugFlags, rlimits, permittedCapabilities, effectiveCapabilities); uid, gid, gids, runtimeFlags, rlimits, permittedCapabilities, effectiveCapabilities); // Enable tracing as soon as we enter the system_server. if (pid == 0) { Trace.setTracingEnabled(true); Loading @@ -163,7 +163,7 @@ public final class Zygote { return pid; } native private static int nativeForkSystemServer(int uid, int gid, int[] gids, int debugFlags, native private static int nativeForkSystemServer(int uid, int gid, int[] gids, int runtimeFlags, int[][] rlimits, long permittedCapabilities, long effectiveCapabilities); /** Loading @@ -177,9 +177,9 @@ public final class Zygote { */ native protected static void nativeUnmountStorageOnInit(); private static void callPostForkChildHooks(int debugFlags, boolean isSystemServer, private static void callPostForkChildHooks(int runtimeFlags, boolean isSystemServer, String instructionSet) { VM_HOOKS.postForkChild(debugFlags, isSystemServer, instructionSet); VM_HOOKS.postForkChild(runtimeFlags, isSystemServer, instructionSet); } /** Loading
core/java/com/android/internal/os/ZygoteConnection.java +8 −25 Original line number Diff line number Diff line Loading @@ -230,7 +230,7 @@ class ZygoteConnection { fd = null; pid = Zygote.forkAndSpecialize(parsedArgs.uid, parsedArgs.gid, parsedArgs.gids, parsedArgs.debugFlags, rlimits, parsedArgs.mountExternal, parsedArgs.seInfo, parsedArgs.runtimeFlags, rlimits, parsedArgs.mountExternal, parsedArgs.seInfo, parsedArgs.niceName, fdsToClose, fdsToIgnore, parsedArgs.instructionSet, parsedArgs.appDataDir); } catch (ErrnoException ex) { Loading Loading @@ -363,11 +363,9 @@ class ZygoteConnection { int[] gids; /** * From --enable-jdwp, --enable-checkjni, --enable-assert, * --enable-safemode, --generate-debug-info, --enable-jni-logging, * --java-debuggable, and --native-debuggable. * From --runtime-flags. */ int debugFlags; int runtimeFlags; /** From --mount-external */ int mountExternal = Zygote.MOUNT_EXTERNAL_NONE; Loading Loading @@ -483,26 +481,11 @@ class ZygoteConnection { targetSdkVersionSpecified = true; targetSdkVersion = Integer.parseInt( arg.substring(arg.indexOf('=') + 1)); } else if (arg.equals("--enable-jdwp")) { debugFlags |= Zygote.DEBUG_ENABLE_JDWP; } else if (arg.equals("--enable-safemode")) { debugFlags |= Zygote.DEBUG_ENABLE_SAFEMODE; } else if (arg.equals("--enable-checkjni")) { debugFlags |= Zygote.DEBUG_ENABLE_CHECKJNI; } else if (arg.equals("--generate-debug-info")) { debugFlags |= Zygote.DEBUG_GENERATE_DEBUG_INFO; } else if (arg.equals("--always-jit")) { debugFlags |= Zygote.DEBUG_ALWAYS_JIT; } else if (arg.equals("--native-debuggable")) { debugFlags |= Zygote.DEBUG_NATIVE_DEBUGGABLE; } else if (arg.equals("--java-debuggable")) { debugFlags |= Zygote.DEBUG_JAVA_DEBUGGABLE; } else if (arg.equals("--enable-jni-logging")) { debugFlags |= Zygote.DEBUG_ENABLE_JNI_LOGGING; } else if (arg.equals("--enable-assert")) { debugFlags |= Zygote.DEBUG_ENABLE_ASSERT; } else if (arg.equals("--runtime-args")) { seenRuntimeArgs = true; } else if (arg.startsWith("--runtime-flags=")) { runtimeFlags = Integer.parseInt( arg.substring(arg.indexOf('=') + 1)); } else if (arg.startsWith("--seinfo=")) { if (seInfoSpecified) { throw new IllegalArgumentException( Loading Loading @@ -718,7 +701,7 @@ class ZygoteConnection { */ public static void applyDebuggerSystemProperty(Arguments args) { if (RoSystemProperties.DEBUGGABLE) { args.debugFlags |= Zygote.DEBUG_ENABLE_JDWP; args.runtimeFlags |= Zygote.DEBUG_ENABLE_JDWP; } } Loading @@ -740,7 +723,7 @@ class ZygoteConnection { int peerUid = peer.getUid(); if (args.invokeWith != null && peerUid != 0 && (args.debugFlags & Zygote.DEBUG_ENABLE_JDWP) == 0) { (args.runtimeFlags & Zygote.DEBUG_ENABLE_JDWP) == 0) { throw new ZygoteSecurityException("Peer is permitted to specify an" + "explicit invoke-with wrapper command only for debuggable" + "applications."); Loading
core/java/com/android/internal/os/ZygoteInit.java +1 −1 Original line number Diff line number Diff line Loading @@ -642,7 +642,7 @@ public class ZygoteInit { pid = Zygote.forkSystemServer( parsedArgs.uid, parsedArgs.gid, parsedArgs.gids, parsedArgs.debugFlags, parsedArgs.runtimeFlags, null, parsedArgs.permittedCapabilities, parsedArgs.effectiveCapabilities); Loading