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

Commit 4d15ed6a authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Make task profiles easier to debug" am: 7a7c8e46

Original change: https://android-review.googlesource.com/c/platform/system/core/+/1962322

Change-Id: I7fa67d9116090a0e65f9a840cea4399082f12526
parents 34d513fa 7a7c8e46
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -477,6 +477,7 @@ void TaskProfile::MoveTo(TaskProfile* profile) {
bool TaskProfile::ExecuteForProcess(uid_t uid, pid_t pid) const {
    for (const auto& element : elements_) {
        if (!element->ExecuteForProcess(uid, pid)) {
            LOG(VERBOSE) << "Applying profile action " << element->Name() << " failed";
            return false;
        }
    }
@@ -489,6 +490,7 @@ bool TaskProfile::ExecuteForTask(int tid) const {
    }
    for (const auto& element : elements_) {
        if (!element->ExecuteForTask(tid)) {
            LOG(VERBOSE) << "Applying profile action " << element->Name() << " failed";
            return false;
        }
    }
@@ -600,7 +602,7 @@ bool TaskProfiles::Load(const CgroupMap& cg_map, const std::string& file_name) {

        std::string profile_name = profile_val["Name"].asString();
        const Json::Value& actions = profile_val["Actions"];
        auto profile = std::make_shared<TaskProfile>();
        auto profile = std::make_shared<TaskProfile>(profile_name);

        for (Json::Value::ArrayIndex act_idx = 0; act_idx < actions.size(); ++act_idx) {
            const Json::Value& action_val = actions[act_idx];
@@ -710,7 +712,7 @@ bool TaskProfiles::Load(const CgroupMap& cg_map, const std::string& file_name) {
            }
        }
        if (ret) {
            auto profile = std::make_shared<TaskProfile>();
            auto profile = std::make_shared<TaskProfile>(aggregateprofile_name);
            profile->Add(std::make_unique<ApplyProfileAction>(profiles));
            profiles_[aggregateprofile_name] = profile;
        }
+11 −1
Original line number Diff line number Diff line
@@ -59,6 +59,8 @@ class ProfileAction {

    virtual ~ProfileAction() {}

    virtual const char* Name() const = 0;

    // Default implementations will fail
    virtual bool ExecuteForProcess(uid_t, pid_t) const { return false; };
    virtual bool ExecuteForTask(int) const { return false; };
@@ -75,6 +77,7 @@ class SetClampsAction : public ProfileAction {
  public:
    SetClampsAction(int boost, int clamp) noexcept : boost_(boost), clamp_(clamp) {}

    const char* Name() const override { return "SetClamps"; }
    bool ExecuteForProcess(uid_t uid, pid_t pid) const override;
    bool ExecuteForTask(int tid) const override;

@@ -87,6 +90,7 @@ class SetTimerSlackAction : public ProfileAction {
  public:
    SetTimerSlackAction(unsigned long slack) noexcept : slack_(slack) {}

    const char* Name() const override { return "SetTimerSlack"; }
    bool ExecuteForTask(int tid) const override;

  private:
@@ -101,6 +105,7 @@ class SetAttributeAction : public ProfileAction {
    SetAttributeAction(const IProfileAttribute* attribute, const std::string& value)
        : attribute_(attribute), value_(value) {}

    const char* Name() const override { return "SetAttribute"; }
    bool ExecuteForProcess(uid_t uid, pid_t pid) const override;
    bool ExecuteForTask(int tid) const override;

@@ -114,6 +119,7 @@ class SetCgroupAction : public ProfileAction {
  public:
    SetCgroupAction(const CgroupController& c, const std::string& p);

    const char* Name() const override { return "SetCgroup"; }
    bool ExecuteForProcess(uid_t uid, pid_t pid) const override;
    bool ExecuteForTask(int tid) const override;
    void EnableResourceCaching(ResourceCacheType cache_type) override;
@@ -136,6 +142,7 @@ class WriteFileAction : public ProfileAction {
  public:
    WriteFileAction(const std::string& path, const std::string& value, bool logfailures);

    const char* Name() const override { return "WriteFile"; }
    bool ExecuteForProcess(uid_t uid, pid_t pid) const override;
    bool ExecuteForTask(int tid) const override;
    void EnableResourceCaching(ResourceCacheType cache_type) override;
@@ -154,8 +161,9 @@ class WriteFileAction : public ProfileAction {

class TaskProfile {
  public:
    TaskProfile() : res_cached_(false) {}
    TaskProfile(const std::string& name) : name_(name), res_cached_(false) {}

    const std::string& Name() const { return name_; }
    void Add(std::unique_ptr<ProfileAction> e) { elements_.push_back(std::move(e)); }
    void MoveTo(TaskProfile* profile);

@@ -165,6 +173,7 @@ class TaskProfile {
    void DropResourceCaching(ProfileAction::ResourceCacheType cache_type);

  private:
    const std::string name_;
    bool res_cached_;
    std::vector<std::unique_ptr<ProfileAction>> elements_;
};
@@ -175,6 +184,7 @@ class ApplyProfileAction : public ProfileAction {
    ApplyProfileAction(const std::vector<std::shared_ptr<TaskProfile>>& profiles)
        : profiles_(profiles) {}

    const char* Name() const override { return "ApplyProfileAction"; }
    bool ExecuteForProcess(uid_t uid, pid_t pid) const override;
    bool ExecuteForTask(int tid) const override;
    void EnableResourceCaching(ProfileAction::ResourceCacheType cache_type) override;