Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db250fbe authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Looper: Add app and thread info to slow message log" into main

parents 6d5cbfb0 6259da54
Loading
Loading
Loading
Loading
+41 −2
Original line number Diff line number Diff line
@@ -332,16 +332,55 @@ public final class Looper {
        return -1;
    }

    private static int getThreadGroup() {
        int threadGroup = Process.THREAD_GROUP_DEFAULT;

        if (!Process.isIsolated()) {
            threadGroup = Process.getProcessGroup(Process.myTid());
        }
        return threadGroup;
    }

    private static String threadGroupToString(int threadGroup) {
        switch (threadGroup) {
            case Process.THREAD_GROUP_BACKGROUND:
                return "BACKGROUND";
            case Process.THREAD_GROUP_FOREGROUND:
                return "FOREGROUND";
            case Process.THREAD_GROUP_SYSTEM:
                return "SYSTEM";
            case Process.THREAD_GROUP_AUDIO_APP:
                return "AUDIO_APP";
            case Process.THREAD_GROUP_AUDIO_SYS:
                return "AUDIO_SYS";
            case Process.THREAD_GROUP_TOP_APP:
                return "TOP_APP";
            case Process.THREAD_GROUP_RT_APP:
                return "RT_APP";
            case Process.THREAD_GROUP_RESTRICTED:
                return "RESTRICTED";
            default:
                return "UNKNOWN";
        }
    }

    private static boolean showSlowLog(long threshold, long measureStart, long measureEnd,
            String what, Message msg) {
        final long actualTime = measureEnd - measureStart;
        if (actualTime < threshold) {
            return false;
        }

        String name = Process.myProcessName();
        String threadGroup = threadGroupToString(getThreadGroup());
        boolean isMain = myLooper() == getMainLooper();

        // For slow delivery, the current message isn't really important, but log it anyway.
        Slog.w(TAG, "Slow " + what + " took " + actualTime + "ms "
                + Thread.currentThread().getName() + " h="
                + msg.target.getClass().getName() + " c=" + msg.callback + " m=" + msg.what);
                + Thread.currentThread().getName() + " app=" + name
                + " main=" + isMain + " group=" + threadGroup
                + " h=" + msg.target.getClass().getName() + " c=" + msg.callback
                + " m=" + msg.what);
        return true;
    }

+1 −2
Original line number Diff line number Diff line
@@ -560,10 +560,9 @@ public class Process {
     * Foreground thread group - All threads in
     * this group are scheduled with a normal share of the CPU.
     * Value is same as constant SP_FOREGROUND of enum SchedPolicy.
     * Not used at this level.
     * @hide
     **/
    private static final int THREAD_GROUP_FOREGROUND = 1;
    public static final int THREAD_GROUP_FOREGROUND = 1;

    /**
     * System thread group.