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

Commit 3ac75b08 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Merge cherrypicks of ['googleplex-android-review.googlesource.com/25718466',...

Merge cherrypicks of ['googleplex-android-review.googlesource.com/25718466', 'googleplex-android-review.googlesource.com/26028024'] into 24Q1-release.

Change-Id: I849d6e876e7de8f98109fe3506a92df8050a5ea2
parents 47aa54e5 d0916f9b
Loading
Loading
Loading
Loading
+1 −32
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@
#include <meminfo/sysmeminfo.h>
#include <processgroup/processgroup.h>
#include <processgroup/sched_policy.h>
#include <android-base/logging.h>
#include <android-base/unique_fd.h>

#include <algorithm>
@@ -233,31 +232,6 @@ void android_os_Process_setThreadGroupAndCpuset(JNIEnv* env, jobject clazz, int
    }
}

// Look up the user ID of a process in /proc/${pid}/status. The Uid: line is present in
// /proc/${pid}/status since at least kernel v2.5.
static int uid_from_pid(int pid)
{
    int uid = -1;
    std::array<char, 64> path;
    int res = snprintf(path.data(), path.size(), "/proc/%d/status", pid);
    if (res < 0 || res >= static_cast<int>(path.size())) {
        DCHECK(false);
        return uid;
    }
    FILE* f = fopen(path.data(), "r");
    if (!f) {
        return uid;
    }
    char line[256];
    while (fgets(line, sizeof(line), f)) {
        if (sscanf(line, "Uid: %d", &uid) == 1) {
            break;
        }
    }
    fclose(f);
    return uid;
}

void android_os_Process_setProcessGroup(JNIEnv* env, jobject clazz, int pid, jint grp)
{
    ALOGV("%s pid=%d grp=%" PRId32, __func__, pid, grp);
@@ -301,12 +275,7 @@ void android_os_Process_setProcessGroup(JNIEnv* env, jobject clazz, int pid, jin
        }
    }

    const int uid = uid_from_pid(pid);
    if (uid < 0) {
        signalExceptionForGroupError(env, ESRCH, pid);
        return;
    }
    if (!SetProcessProfilesCached(uid, pid, {get_cpuset_policy_profile_name((SchedPolicy)grp)}))
    if (!SetProcessProfilesCached(0, pid, {get_cpuset_policy_profile_name((SchedPolicy)grp)}))
        signalExceptionForGroupError(env, errno ? errno : EPERM, pid);
}

+2 −0
Original line number Diff line number Diff line
@@ -256,6 +256,7 @@ object KeyguardRootViewBinder {
                                vibratorHelper.performHapticFeedback(
                                    view,
                                    HapticFeedbackConstants.CONFIRM,
                                    HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING,
                                )
                            }
                        }
@@ -265,6 +266,7 @@ object KeyguardRootViewBinder {
                                vibratorHelper.performHapticFeedback(
                                    view,
                                    HapticFeedbackConstants.REJECT,
                                    HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING,
                                )
                            }
                        }