Skip to content
Snippets Groups Projects
Commit bc0290a7 authored by Rick Yiu's avatar Rick Yiu Committed by Gerrit Code Review
Browse files

Merge "Implement the ThreadPrioritySetter interface"

parents 267b83e7 a7612150
No related branches found
No related tags found
No related merge requests found
......@@ -35,6 +35,7 @@ import com.android.internal.logging.AndroidConfig;
import com.android.server.NetworkManagementSocketTagger;
import dalvik.system.RuntimeHooks;
import dalvik.system.ThreadPrioritySetter;
import dalvik.system.VMRuntime;
import libcore.content.type.MimeMap;
......@@ -204,6 +205,7 @@ public class RuntimeInit {
*/
public static void preForkInit() {
if (DEBUG) Slog.d(TAG, "Entered preForkInit.");
RuntimeHooks.setThreadPrioritySetter(new RuntimeThreadPrioritySetter());
RuntimeInit.enableDdms();
// TODO(b/142019040#comment13): Decide whether to load the default instance eagerly, i.e.
// MimeMap.setDefault(DefaultMimeMapFactory.create());
......@@ -216,6 +218,35 @@ public class RuntimeInit {
MimeMap.setDefaultSupplier(DefaultMimeMapFactory::create);
}
private static class RuntimeThreadPrioritySetter implements ThreadPrioritySetter {
// Should remain consistent with kNiceValues[] in system/libartpalette/palette_android.cc
private static final int[] NICE_VALUES = {
Process.THREAD_PRIORITY_LOWEST, // 1 (MIN_PRIORITY)
Process.THREAD_PRIORITY_BACKGROUND + 6,
Process.THREAD_PRIORITY_BACKGROUND + 3,
Process.THREAD_PRIORITY_BACKGROUND,
Process.THREAD_PRIORITY_DEFAULT, // 5 (NORM_PRIORITY)
Process.THREAD_PRIORITY_DEFAULT - 2,
Process.THREAD_PRIORITY_DEFAULT - 4,
Process.THREAD_PRIORITY_URGENT_DISPLAY + 3,
Process.THREAD_PRIORITY_URGENT_DISPLAY + 2,
Process.THREAD_PRIORITY_URGENT_DISPLAY // 10 (MAX_PRIORITY)
};
@Override
public void setPriority(int priority) {
// Check NICE_VALUES[] length first.
if (NICE_VALUES.length != (1 + Thread.MAX_PRIORITY - Thread.MIN_PRIORITY)) {
throw new AssertionError("Unexpected NICE_VALUES.length=" + NICE_VALUES.length);
}
// Priority should be in the range of MIN_PRIORITY (1) to MAX_PRIORITY (10).
if (priority < Thread.MIN_PRIORITY || priority > Thread.MAX_PRIORITY) {
throw new IllegalArgumentException("Priority out of range: " + priority);
}
Process.setThreadPriority(NICE_VALUES[priority - Thread.MIN_PRIORITY]);
}
}
@UnsupportedAppUsage
protected static final void commonInit() {
if (DEBUG) Slog.d(TAG, "Entered RuntimeInit!");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment