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

Commit 766b0fbe authored by Rick Yiu's avatar Rick Yiu Committed by Gerrit Code Review
Browse files

Merge changes from topic "multi_window_foreground_group" into main

* changes:
  Add a new policy for for foreground of multi-window
  Create a new group for foreground of multi-window
parents 04636c8f a726c8c2
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -48,6 +48,7 @@ typedef enum {
    SP_TOP_APP = 5,
    SP_TOP_APP = 5,
    SP_RT_APP = 6,
    SP_RT_APP = 6,
    SP_RESTRICTED = 7,
    SP_RESTRICTED = 7,
    SP_FOREGROUND_WINDOW = 8,
    SP_CNT,
    SP_CNT,
    SP_MAX = SP_CNT - 1,
    SP_MAX = SP_CNT - 1,
    SP_SYSTEM_DEFAULT = SP_FOREGROUND,
    SP_SYSTEM_DEFAULT = SP_FOREGROUND,
+39 −0
Original line number Original line Diff line number Diff line
@@ -10,6 +10,11 @@
      "Controller": "cpuset",
      "Controller": "cpuset",
      "File": "foreground/cpus"
      "File": "foreground/cpus"
    },
    },
    {
      "Name": "HighCapacityWICPUs",
      "Controller": "cpuset",
      "File": "foreground_window/cpus"
    },
    {
    {
      "Name": "MaxCapacityCPUs",
      "Name": "MaxCapacityCPUs",
      "Controller": "cpuset",
      "Controller": "cpuset",
@@ -158,6 +163,19 @@
        }
        }
      ]
      ]
    },
    },
    {
      "Name": "HighPerformanceWI",
      "Actions": [
        {
          "Name": "JoinCgroup",
          "Params":
          {
            "Controller": "cpu",
            "Path": "foreground_window"
          }
        }
      ]
    },
    {
    {
      "Name": "MaxPerformance",
      "Name": "MaxPerformance",
      "Actions": [
      "Actions": [
@@ -381,6 +399,19 @@
        }
        }
      ]
      ]
    },
    },
    {
      "Name": "ProcessCapacityHighWI",
      "Actions": [
        {
          "Name": "JoinCgroup",
          "Params":
          {
            "Controller": "cpuset",
            "Path": "foreground_window"
          }
        }
      ]
    },
    {
    {
      "Name": "ProcessCapacityMax",
      "Name": "ProcessCapacityMax",
      "Actions": [
      "Actions": [
@@ -638,6 +669,10 @@
      "Name": "SCHED_SP_FOREGROUND",
      "Name": "SCHED_SP_FOREGROUND",
      "Profiles": [ "HighPerformance", "HighIoPriority", "TimerSlackNormal" ]
      "Profiles": [ "HighPerformance", "HighIoPriority", "TimerSlackNormal" ]
    },
    },
    {
      "Name": "SCHED_SP_FOREGROUND_WINDOW",
      "Profiles": [ "HighPerformanceWI", "HighIoPriority", "TimerSlackNormal" ]
    },
    {
    {
      "Name": "SCHED_SP_TOP_APP",
      "Name": "SCHED_SP_TOP_APP",
      "Profiles": [ "MaxPerformance", "MaxIoPriority", "TimerSlackNormal" ]
      "Profiles": [ "MaxPerformance", "MaxIoPriority", "TimerSlackNormal" ]
@@ -666,6 +701,10 @@
      "Name": "CPUSET_SP_FOREGROUND",
      "Name": "CPUSET_SP_FOREGROUND",
      "Profiles": [ "HighPerformance", "ProcessCapacityHigh", "HighIoPriority", "TimerSlackNormal" ]
      "Profiles": [ "HighPerformance", "ProcessCapacityHigh", "HighIoPriority", "TimerSlackNormal" ]
    },
    },
    {
      "Name": "CPUSET_SP_FOREGROUND_WINDOW",
      "Profiles": [ "HighPerformanceWI", "ProcessCapacityHighWI", "HighIoPriority", "TimerSlackNormal" ]
    },
    {
    {
      "Name": "CPUSET_SP_TOP_APP",
      "Name": "CPUSET_SP_TOP_APP",
      "Profiles": [ "MaxPerformance", "ProcessCapacityMax", "MaxIoPriority", "TimerSlackNormal" ]
      "Profiles": [ "MaxPerformance", "ProcessCapacityMax", "MaxIoPriority", "TimerSlackNormal" ]
+22 −9
Original line number Original line Diff line number Diff line
@@ -58,6 +58,8 @@ int set_cpuset_policy(pid_t tid, SchedPolicy policy) {
            return SetTaskProfiles(tid, {"CPUSET_SP_SYSTEM"}, true) ? 0 : -1;
            return SetTaskProfiles(tid, {"CPUSET_SP_SYSTEM"}, true) ? 0 : -1;
        case SP_RESTRICTED:
        case SP_RESTRICTED:
            return SetTaskProfiles(tid, {"CPUSET_SP_RESTRICTED"}, true) ? 0 : -1;
            return SetTaskProfiles(tid, {"CPUSET_SP_RESTRICTED"}, true) ? 0 : -1;
        case SP_FOREGROUND_WINDOW:
            return SetTaskProfiles(tid, {"CPUSET_SP_FOREGROUND_WINDOW"}, true) ? 0 : -1;
        default:
        default:
            break;
            break;
    }
    }
@@ -110,6 +112,9 @@ int set_sched_policy(pid_t tid, SchedPolicy policy) {
        case SP_RT_APP:
        case SP_RT_APP:
            SLOGD("RT  tid %d (%s)", tid, thread_name);
            SLOGD("RT  tid %d (%s)", tid, thread_name);
            break;
            break;
        case SP_FOREGROUND_WINDOW:
            SLOGD("WI  tid %d (%s)", tid, thread_name);
            break;
        default:
        default:
            SLOGD("??? tid %d (%s)", tid, thread_name);
            SLOGD("??? tid %d (%s)", tid, thread_name);
            break;
            break;
@@ -129,6 +134,8 @@ int set_sched_policy(pid_t tid, SchedPolicy policy) {
            return SetTaskProfiles(tid, {"SCHED_SP_SYSTEM"}, true) ? 0 : -1;
            return SetTaskProfiles(tid, {"SCHED_SP_SYSTEM"}, true) ? 0 : -1;
        case SP_RT_APP:
        case SP_RT_APP:
            return SetTaskProfiles(tid, {"SCHED_SP_RT_APP"}, true) ? 0 : -1;
            return SetTaskProfiles(tid, {"SCHED_SP_RT_APP"}, true) ? 0 : -1;
        case SP_FOREGROUND_WINDOW:
            return SetTaskProfiles(tid, {"SCHED_SP_FOREGROUND_WINDOW"}, true) ? 0 : -1;
        default:
        default:
            return SetTaskProfiles(tid, {"SCHED_SP_DEFAULT"}, true) ? 0 : -1;
            return SetTaskProfiles(tid, {"SCHED_SP_DEFAULT"}, true) ? 0 : -1;
    }
    }
@@ -179,6 +186,8 @@ static int get_sched_policy_from_group(const std::string& group, SchedPolicy* po
        *policy = SP_TOP_APP;
        *policy = SP_TOP_APP;
    } else if (group == "restricted") {
    } else if (group == "restricted") {
        *policy = SP_RESTRICTED;
        *policy = SP_RESTRICTED;
    } else if (group == "foreground_window") {
        *policy = SP_FOREGROUND_WINDOW;
    } else {
    } else {
        errno = ERANGE;
        errno = ERANGE;
        return -1;
        return -1;
@@ -235,7 +244,7 @@ const char* get_sched_policy_name(SchedPolicy policy) {
    static const char* const kSchedPolicyNames[] = {
    static const char* const kSchedPolicyNames[] = {
            [SP_BACKGROUND] = "bg", [SP_FOREGROUND] = "fg", [SP_SYSTEM] = "  ",
            [SP_BACKGROUND] = "bg", [SP_FOREGROUND] = "fg", [SP_SYSTEM] = "  ",
            [SP_AUDIO_APP] = "aa",  [SP_AUDIO_SYS] = "as",  [SP_TOP_APP] = "ta",
            [SP_AUDIO_APP] = "aa",  [SP_AUDIO_SYS] = "as",  [SP_TOP_APP] = "ta",
            [SP_RT_APP] = "rt",     [SP_RESTRICTED] = "rs",
            [SP_RT_APP] = "rt",     [SP_RESTRICTED] = "rs", [SP_FOREGROUND_WINDOW] = "wi",
    };
    };
    static_assert(arraysize(kSchedPolicyNames) == SP_CNT, "missing name");
    static_assert(arraysize(kSchedPolicyNames) == SP_CNT, "missing name");
    if (policy < SP_BACKGROUND || policy >= SP_CNT) {
    if (policy < SP_BACKGROUND || policy >= SP_CNT) {
@@ -249,14 +258,16 @@ const char* get_cpuset_policy_profile_name(SchedPolicy policy) {
     *  cpuset profile array for:
     *  cpuset profile array for:
     *  SP_DEFAULT(-1), SP_BACKGROUND(0), SP_FOREGROUND(1),
     *  SP_DEFAULT(-1), SP_BACKGROUND(0), SP_FOREGROUND(1),
     *  SP_SYSTEM(2), SP_AUDIO_APP(3), SP_AUDIO_SYS(4),
     *  SP_SYSTEM(2), SP_AUDIO_APP(3), SP_AUDIO_SYS(4),
     *  SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7)
     *  SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7),
     *  SP_FOREGROUND_WINDOW(8)
     *  index is policy + 1
     *  index is policy + 1
     *  this need keep in sync with SchedPolicy enum
     *  this need keep in sync with SchedPolicy enum
     */
     */
    static constexpr const char* kCpusetProfiles[SP_CNT + 1] = {
    static constexpr const char* kCpusetProfiles[SP_CNT + 1] = {
            "CPUSET_SP_DEFAULT",      "CPUSET_SP_BACKGROUND", "CPUSET_SP_FOREGROUND",
            "CPUSET_SP_DEFAULT",      "CPUSET_SP_BACKGROUND", "CPUSET_SP_FOREGROUND",
            "CPUSET_SP_SYSTEM",       "CPUSET_SP_FOREGROUND", "CPUSET_SP_FOREGROUND",
            "CPUSET_SP_SYSTEM",       "CPUSET_SP_FOREGROUND", "CPUSET_SP_FOREGROUND",
            "CPUSET_SP_TOP_APP", "CPUSET_SP_DEFAULT",    "CPUSET_SP_RESTRICTED"};
            "CPUSET_SP_TOP_APP",      "CPUSET_SP_DEFAULT",    "CPUSET_SP_RESTRICTED",
            "CPUSET_SP_FOREGROUND_WINDOW"};
    if (policy < SP_DEFAULT || policy >= SP_CNT) {
    if (policy < SP_DEFAULT || policy >= SP_CNT) {
        return nullptr;
        return nullptr;
    }
    }
@@ -268,14 +279,16 @@ const char* get_sched_policy_profile_name(SchedPolicy policy) {
     *  sched profile array for:
     *  sched profile array for:
     *  SP_DEFAULT(-1), SP_BACKGROUND(0), SP_FOREGROUND(1),
     *  SP_DEFAULT(-1), SP_BACKGROUND(0), SP_FOREGROUND(1),
     *  SP_SYSTEM(2), SP_AUDIO_APP(3), SP_AUDIO_SYS(4),
     *  SP_SYSTEM(2), SP_AUDIO_APP(3), SP_AUDIO_SYS(4),
     *  SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7)
     *  SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7),
     *  SP_FOREGROUND_WINDOW(8)
     *  index is policy + 1
     *  index is policy + 1
     *  this need keep in sync with SchedPolicy enum
     *  this need keep in sync with SchedPolicy enum
     */
     */
    static constexpr const char* kSchedProfiles[SP_CNT + 1] = {
    static constexpr const char* kSchedProfiles[SP_CNT + 1] = {
            "SCHED_SP_DEFAULT",      "SCHED_SP_BACKGROUND", "SCHED_SP_FOREGROUND",
            "SCHED_SP_DEFAULT",      "SCHED_SP_BACKGROUND", "SCHED_SP_FOREGROUND",
            "SCHED_SP_SYSTEM",       "SCHED_SP_FOREGROUND", "SCHED_SP_FOREGROUND",
            "SCHED_SP_SYSTEM",       "SCHED_SP_FOREGROUND", "SCHED_SP_FOREGROUND",
            "SCHED_SP_TOP_APP", "SCHED_SP_RT_APP",     "SCHED_SP_DEFAULT"};
            "SCHED_SP_TOP_APP",      "SCHED_SP_RT_APP",     "SCHED_SP_DEFAULT",
            "SCHED_SP_FOREGROUND_WINDOW"};
    if (policy < SP_DEFAULT || policy >= SP_CNT) {
    if (policy < SP_DEFAULT || policy >= SP_CNT) {
        return nullptr;
        return nullptr;
    }
    }
+14 −0
Original line number Original line Diff line number Diff line
@@ -145,6 +145,7 @@ on init


    # cpuctl hierarchy for devices using utilclamp
    # cpuctl hierarchy for devices using utilclamp
    mkdir /dev/cpuctl/foreground
    mkdir /dev/cpuctl/foreground
    mkdir /dev/cpuctl/foreground_window
    mkdir /dev/cpuctl/background
    mkdir /dev/cpuctl/background
    mkdir /dev/cpuctl/top-app
    mkdir /dev/cpuctl/top-app
    mkdir /dev/cpuctl/rt
    mkdir /dev/cpuctl/rt
@@ -153,6 +154,7 @@ on init
    mkdir /dev/cpuctl/dex2oat
    mkdir /dev/cpuctl/dex2oat
    chown system system /dev/cpuctl
    chown system system /dev/cpuctl
    chown system system /dev/cpuctl/foreground
    chown system system /dev/cpuctl/foreground
    chown system system /dev/cpuctl/foreground_window
    chown system system /dev/cpuctl/background
    chown system system /dev/cpuctl/background
    chown system system /dev/cpuctl/top-app
    chown system system /dev/cpuctl/top-app
    chown system system /dev/cpuctl/rt
    chown system system /dev/cpuctl/rt
@@ -161,6 +163,7 @@ on init
    chown system system /dev/cpuctl/dex2oat
    chown system system /dev/cpuctl/dex2oat
    chown system system /dev/cpuctl/tasks
    chown system system /dev/cpuctl/tasks
    chown system system /dev/cpuctl/foreground/tasks
    chown system system /dev/cpuctl/foreground/tasks
    chown system system /dev/cpuctl/foreground_window/tasks
    chown system system /dev/cpuctl/background/tasks
    chown system system /dev/cpuctl/background/tasks
    chown system system /dev/cpuctl/top-app/tasks
    chown system system /dev/cpuctl/top-app/tasks
    chown system system /dev/cpuctl/rt/tasks
    chown system system /dev/cpuctl/rt/tasks
@@ -169,6 +172,7 @@ on init
    chown system system /dev/cpuctl/dex2oat/tasks
    chown system system /dev/cpuctl/dex2oat/tasks
    chown system system /dev/cpuctl/cgroup.procs
    chown system system /dev/cpuctl/cgroup.procs
    chown system system /dev/cpuctl/foreground/cgroup.procs
    chown system system /dev/cpuctl/foreground/cgroup.procs
    chown system system /dev/cpuctl/foreground_window/cgroup.procs
    chown system system /dev/cpuctl/background/cgroup.procs
    chown system system /dev/cpuctl/background/cgroup.procs
    chown system system /dev/cpuctl/top-app/cgroup.procs
    chown system system /dev/cpuctl/top-app/cgroup.procs
    chown system system /dev/cpuctl/rt/cgroup.procs
    chown system system /dev/cpuctl/rt/cgroup.procs
@@ -177,6 +181,7 @@ on init
    chown system system /dev/cpuctl/dex2oat/cgroup.procs
    chown system system /dev/cpuctl/dex2oat/cgroup.procs
    chmod 0664 /dev/cpuctl/tasks
    chmod 0664 /dev/cpuctl/tasks
    chmod 0664 /dev/cpuctl/foreground/tasks
    chmod 0664 /dev/cpuctl/foreground/tasks
    chmod 0664 /dev/cpuctl/foreground_window/tasks
    chmod 0664 /dev/cpuctl/background/tasks
    chmod 0664 /dev/cpuctl/background/tasks
    chmod 0664 /dev/cpuctl/top-app/tasks
    chmod 0664 /dev/cpuctl/top-app/tasks
    chmod 0664 /dev/cpuctl/rt/tasks
    chmod 0664 /dev/cpuctl/rt/tasks
@@ -185,6 +190,7 @@ on init
    chmod 0664 /dev/cpuctl/dex2oat/tasks
    chmod 0664 /dev/cpuctl/dex2oat/tasks
    chmod 0664 /dev/cpuctl/cgroup.procs
    chmod 0664 /dev/cpuctl/cgroup.procs
    chmod 0664 /dev/cpuctl/foreground/cgroup.procs
    chmod 0664 /dev/cpuctl/foreground/cgroup.procs
    chmod 0664 /dev/cpuctl/foreground_window/cgroup.procs
    chmod 0664 /dev/cpuctl/background/cgroup.procs
    chmod 0664 /dev/cpuctl/background/cgroup.procs
    chmod 0664 /dev/cpuctl/top-app/cgroup.procs
    chmod 0664 /dev/cpuctl/top-app/cgroup.procs
    chmod 0664 /dev/cpuctl/rt/cgroup.procs
    chmod 0664 /dev/cpuctl/rt/cgroup.procs
@@ -354,6 +360,9 @@ on init
    mkdir /dev/cpuset/foreground
    mkdir /dev/cpuset/foreground
    copy /dev/cpuset/cpus /dev/cpuset/foreground/cpus
    copy /dev/cpuset/cpus /dev/cpuset/foreground/cpus
    copy /dev/cpuset/mems /dev/cpuset/foreground/mems
    copy /dev/cpuset/mems /dev/cpuset/foreground/mems
    mkdir /dev/cpuset/foreground_window
    copy /dev/cpuset/cpus /dev/cpuset/foreground_window/cpus
    copy /dev/cpuset/mems /dev/cpuset/foreground_window/mems
    mkdir /dev/cpuset/background
    mkdir /dev/cpuset/background
    copy /dev/cpuset/cpus /dev/cpuset/background/cpus
    copy /dev/cpuset/cpus /dev/cpuset/background/cpus
    copy /dev/cpuset/mems /dev/cpuset/background/mems
    copy /dev/cpuset/mems /dev/cpuset/background/mems
@@ -382,6 +391,7 @@ on init
    # change permissions for all cpusets we'll touch at runtime
    # change permissions for all cpusets we'll touch at runtime
    chown system system /dev/cpuset
    chown system system /dev/cpuset
    chown system system /dev/cpuset/foreground
    chown system system /dev/cpuset/foreground
    chown system system /dev/cpuset/foreground_window
    chown system system /dev/cpuset/background
    chown system system /dev/cpuset/background
    chown system system /dev/cpuset/system-background
    chown system system /dev/cpuset/system-background
    chown system system /dev/cpuset/top-app
    chown system system /dev/cpuset/top-app
@@ -389,6 +399,7 @@ on init
    chown system system /dev/cpuset/camera-daemon
    chown system system /dev/cpuset/camera-daemon
    chown system system /dev/cpuset/tasks
    chown system system /dev/cpuset/tasks
    chown system system /dev/cpuset/foreground/tasks
    chown system system /dev/cpuset/foreground/tasks
    chown system system /dev/cpuset/foreground_window/tasks
    chown system system /dev/cpuset/background/tasks
    chown system system /dev/cpuset/background/tasks
    chown system system /dev/cpuset/system-background/tasks
    chown system system /dev/cpuset/system-background/tasks
    chown system system /dev/cpuset/top-app/tasks
    chown system system /dev/cpuset/top-app/tasks
@@ -396,6 +407,7 @@ on init
    chown system system /dev/cpuset/camera-daemon/tasks
    chown system system /dev/cpuset/camera-daemon/tasks
    chown system system /dev/cpuset/cgroup.procs
    chown system system /dev/cpuset/cgroup.procs
    chown system system /dev/cpuset/foreground/cgroup.procs
    chown system system /dev/cpuset/foreground/cgroup.procs
    chown system system /dev/cpuset/foreground_window/cgroup.procs
    chown system system /dev/cpuset/background/cgroup.procs
    chown system system /dev/cpuset/background/cgroup.procs
    chown system system /dev/cpuset/system-background/cgroup.procs
    chown system system /dev/cpuset/system-background/cgroup.procs
    chown system system /dev/cpuset/top-app/cgroup.procs
    chown system system /dev/cpuset/top-app/cgroup.procs
@@ -406,6 +418,7 @@ on init
    chmod 0775 /dev/cpuset/system-background
    chmod 0775 /dev/cpuset/system-background


    chmod 0664 /dev/cpuset/foreground/tasks
    chmod 0664 /dev/cpuset/foreground/tasks
    chmod 0664 /dev/cpuset/foreground_window/tasks
    chmod 0664 /dev/cpuset/background/tasks
    chmod 0664 /dev/cpuset/background/tasks
    chmod 0664 /dev/cpuset/system-background/tasks
    chmod 0664 /dev/cpuset/system-background/tasks
    chmod 0664 /dev/cpuset/top-app/tasks
    chmod 0664 /dev/cpuset/top-app/tasks
@@ -413,6 +426,7 @@ on init
    chmod 0664 /dev/cpuset/tasks
    chmod 0664 /dev/cpuset/tasks
    chmod 0664 /dev/cpuset/camera-daemon/tasks
    chmod 0664 /dev/cpuset/camera-daemon/tasks
    chmod 0664 /dev/cpuset/foreground/cgroup.procs
    chmod 0664 /dev/cpuset/foreground/cgroup.procs
    chmod 0664 /dev/cpuset/foreground_window/cgroup.procs
    chmod 0664 /dev/cpuset/background/cgroup.procs
    chmod 0664 /dev/cpuset/background/cgroup.procs
    chmod 0664 /dev/cpuset/system-background/cgroup.procs
    chmod 0664 /dev/cpuset/system-background/cgroup.procs
    chmod 0664 /dev/cpuset/top-app/cgroup.procs
    chmod 0664 /dev/cpuset/top-app/cgroup.procs