From 000f35cdf399c9b9f4f55f9b0c0c81b11367f413 Mon Sep 17 00:00:00 2001 From: Kweku Adams Date: Fri, 21 May 2021 16:01:42 -0700 Subject: [PATCH] Add TareHandlerThread. Create a separate thread for TARE so it doesn't get blocked by or block other system components. Bug: 158300259 Test: Android builds Change-Id: Ib0989fb4c7332287ab2e6776d651298c50999e18 --- .../server/tare/TareHandlerThread.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 apex/jobscheduler/service/java/com/android/server/tare/TareHandlerThread.java diff --git a/apex/jobscheduler/service/java/com/android/server/tare/TareHandlerThread.java b/apex/jobscheduler/service/java/com/android/server/tare/TareHandlerThread.java new file mode 100644 index 0000000000000..afd7dc64b74ed --- /dev/null +++ b/apex/jobscheduler/service/java/com/android/server/tare/TareHandlerThread.java @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.tare; + +import android.os.HandlerThread; +import android.os.Looper; +import android.os.Trace; + +/** + * Singleton thread for all of TARE. + * + * @see com.android.internal.os.BackgroundThread + */ +final class TareHandlerThread extends HandlerThread { + + private static TareHandlerThread sInstance; + + private TareHandlerThread() { + super("tare"); + } + + private static void ensureThreadLocked() { + if (sInstance == null) { + sInstance = new TareHandlerThread(); + sInstance.start(); + final Looper looper = sInstance.getLooper(); + looper.setTraceTag(Trace.TRACE_TAG_SYSTEM_SERVER); + } + } + + static TareHandlerThread get() { + synchronized (TareHandlerThread.class) { + ensureThreadLocked(); + } + return sInstance; + } +}