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

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

Merge "libprocessgroup: Remove prctl interface for setting timer slack" into main

parents 53d6db02 07500817
Loading
Loading
Loading
Loading
+7 −25
Original line number Diff line number Diff line
@@ -203,33 +203,15 @@ bool SetClampsAction::ExecuteForTask(int) const {
// To avoid issues in sdk_mac build
#if defined(__ANDROID__)

bool SetTimerSlackAction::IsTimerSlackSupported(pid_t tid) {
    auto file = StringPrintf("/proc/%d/timerslack_ns", tid);

    return (access(file.c_str(), W_OK) == 0);
}

bool SetTimerSlackAction::ExecuteForTask(pid_t tid) const {
    static bool sys_supports_timerslack = IsTimerSlackSupported(tid);

    // v4.6+ kernels support the /proc/<tid>/timerslack_ns interface.
    // TODO: once we've backported this, log if the open(2) fails.
    if (sys_supports_timerslack) {
        auto file = StringPrintf("/proc/%d/timerslack_ns", tid);
    const auto file = StringPrintf("/proc/%d/timerslack_ns", tid);
    if (!WriteStringToFile(std::to_string(slack_), file)) {
        if (errno == ENOENT) {
            // This happens when process is already dead
            return true;
        }
        PLOG(ERROR) << "set_timerslack_ns write failed";
        }
    }

    // TODO: Remove when /proc/<tid>/timerslack_ns interface is backported.
    if (tid == 0 || tid == GetThreadId()) {
        if (prctl(PR_SET_TIMERSLACK, slack_) == -1) {
            PLOG(ERROR) << "set_timerslack_ns prctl failed";
        }
        return false;
    }

    return true;
+0 −2
Original line number Diff line number Diff line
@@ -114,8 +114,6 @@ class SetTimerSlackAction : public ProfileAction {

  private:
    unsigned long slack_;

    static bool IsTimerSlackSupported(pid_t tid);
};

// Set attribute profile element