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

Commit ab8d6ab6 authored by Vic Yang's avatar Vic Yang
Browse files

libprocessgroup: Fix memcg path for apps

The expected memcg path for apps is
/dev/memcg/apps/uid_<uid>/pid_<pid>.  Right now we are missing the
"apps" component.  Fix it.

Bug: 124776663
Test: Boot on a Go device and does not see error from lmkd anymore.
Change-Id: I0e4c1d8520463fabb171ff4e61479034b6446548
parent 7e6dc56b
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -200,7 +200,7 @@ void removeAllProcessGroups() {
        cgroups.push_back(path);
        cgroups.push_back(path);
    }
    }
    if (CgroupGetControllerPath("memory", &path)) {
    if (CgroupGetControllerPath("memory", &path)) {
        cgroups.push_back(path);
        cgroups.push_back(path + "/apps");
    }
    }


    for (std::string cgroup_root_path : cgroups) {
    for (std::string cgroup_root_path : cgroups) {
@@ -317,6 +317,7 @@ static int KillProcessGroup(uid_t uid, int initialPid, int signal, int retries)


    CgroupGetControllerPath("cpuacct", &cpuacct_path);
    CgroupGetControllerPath("cpuacct", &cpuacct_path);
    CgroupGetControllerPath("memory", &memory_path);
    CgroupGetControllerPath("memory", &memory_path);
    memory_path += "/apps";


    const char* cgroup =
    const char* cgroup =
            (!access(ConvertUidPidToPath(cpuacct_path.c_str(), uid, initialPid).c_str(), F_OK))
            (!access(ConvertUidPidToPath(cpuacct_path.c_str(), uid, initialPid).c_str(), F_OK))
@@ -380,6 +381,7 @@ int createProcessGroup(uid_t uid, int initialPid, bool memControl) {
    std::string cgroup;
    std::string cgroup;
    if (isMemoryCgroupSupported() && (memControl || UsePerAppMemcg())) {
    if (isMemoryCgroupSupported() && (memControl || UsePerAppMemcg())) {
        CgroupGetControllerPath("memory", &cgroup);
        CgroupGetControllerPath("memory", &cgroup);
        cgroup += "/apps";
    } else {
    } else {
        CgroupGetControllerPath("cpuacct", &cgroup);
        CgroupGetControllerPath("cpuacct", &cgroup);
    }
    }