resolve merge conflicts of eb8a4ef5d344 to oc-mr1-dev-plus-aosp
Test: I solemnly swear I tested this conflict resolution.
Change-Id: Ia29e31d704982985264b40a78578a4c93d11bf3a
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java
index 9351661..b5d62e5 100644
--- a/core/java/android/os/Process.java
+++ b/core/java/android/os/Process.java
@@ -19,8 +19,8 @@
import android.annotation.TestApi;
import android.system.Os;
import android.system.OsConstants;
-import android.util.Log;
import android.webkit.WebViewZygote;
+
import dalvik.system.VMRuntime;
/**
@@ -423,7 +423,7 @@
*
* 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.
@@ -431,7 +431,7 @@
* @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.
@@ -448,7 +448,7 @@
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,
@@ -457,7 +457,7 @@
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);
}
@@ -465,7 +465,7 @@
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,
@@ -474,7 +474,7 @@
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);
}
diff --git a/core/java/android/os/ZygoteProcess.java b/core/java/android/os/ZygoteProcess.java
index 7a13ee8..670f794 100644
--- a/core/java/android/os/ZygoteProcess.java
+++ b/core/java/android/os/ZygoteProcess.java
@@ -20,9 +20,11 @@
import android.net.LocalSocketAddress;
import android.util.Log;
import android.util.Slog;
+
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;
@@ -173,7 +175,7 @@
*
* 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.
@@ -181,7 +183,7 @@
* @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.
@@ -196,7 +198,7 @@
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,
@@ -206,7 +208,7 @@
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,
@@ -317,7 +319,7 @@
* @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.
@@ -331,7 +333,7 @@
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,
@@ -347,33 +349,7 @@
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) {
diff --git a/core/java/com/android/internal/os/Zygote.java b/core/java/com/android/internal/os/Zygote.java
index a9350db..d611768 100644
--- a/core/java/com/android/internal/os/Zygote.java
+++ b/core/java/com/android/internal/os/Zygote.java
@@ -28,7 +28,7 @@
/** @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.
*/
@@ -75,7 +75,7 @@
* 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
@@ -96,18 +96,18 @@
* @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) {
- Trace.setTracingEnabled(true, debugFlags);
+ Trace.setTracingEnabled(true, runtimeFlags);
// Note that this event ends at the end of handleChildProc,
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "PostFork");
@@ -116,7 +116,7 @@
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);
@@ -137,7 +137,7 @@
* 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
@@ -148,22 +148,22 @@
* @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, debugFlags);
+ Trace.setTracingEnabled(true, runtimeFlags);
}
VM_HOOKS.postForkCommon();
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);
/**
@@ -177,9 +177,9 @@
*/
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);
}
/**
diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java/com/android/internal/os/ZygoteConnection.java
index 9fa3239..6a87b1f 100644
--- a/core/java/com/android/internal/os/ZygoteConnection.java
+++ b/core/java/com/android/internal/os/ZygoteConnection.java
@@ -220,7 +220,7 @@
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);
@@ -349,11 +349,9 @@
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;
@@ -469,26 +467,11 @@
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(
@@ -704,7 +687,7 @@
*/
public static void applyDebuggerSystemProperty(Arguments args) {
if (RoSystemProperties.DEBUGGABLE) {
- args.debugFlags |= Zygote.DEBUG_ENABLE_JDWP;
+ args.runtimeFlags |= Zygote.DEBUG_ENABLE_JDWP;
}
}
@@ -726,7 +709,7 @@
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.");
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java
index 7058193..4abab28 100644
--- a/core/java/com/android/internal/os/ZygoteInit.java
+++ b/core/java/com/android/internal/os/ZygoteInit.java
@@ -669,7 +669,7 @@
pid = Zygote.forkSystemServer(
parsedArgs.uid, parsedArgs.gid,
parsedArgs.gids,
- parsedArgs.debugFlags,
+ parsedArgs.runtimeFlags,
null,
parsedArgs.permittedCapabilities,
parsedArgs.effectiveCapabilities);