blob: fbfd2511734ef01e00e8ba35e6fa7c93f3d39553 [file] [log] [blame]
Greg Kerr888f1ce2019-01-31 10:49:11 -08001// Copyright 2019 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef DEBUGD_SRC_SCHEDULER_CONFIGURATION_TOOL_H_
6#define DEBUGD_SRC_SCHEDULER_CONFIGURATION_TOOL_H_
7
8#include <string>
9
10#include <base/macros.h>
11#include <brillo/errors/error.h>
12
13namespace debugd {
14
15class SchedulerConfigurationTool {
16 public:
17 SchedulerConfigurationTool() = default;
Qijiang Fan6bc59e12020-11-11 02:51:06 +090018 SchedulerConfigurationTool(const SchedulerConfigurationTool&) = delete;
19 SchedulerConfigurationTool& operator=(const SchedulerConfigurationTool&) =
20 delete;
21
Greg Kerr888f1ce2019-01-31 10:49:11 -080022 ~SchedulerConfigurationTool() = default;
23
24 // This sets the core sharing policy.
Abhishek Bhardwaj08d907e2019-08-27 14:22:41 -070025 bool SetPolicy(const std::string& policy,
26 bool lock_policy,
Yusuke Satob64c3562019-09-19 11:28:34 -070027 brillo::ErrorPtr* error,
28 uint32_t* num_cores_disabled);
Greg Kerr888f1ce2019-01-31 10:49:11 -080029
30 private:
Abhishek Bhardwaj08d907e2019-08-27 14:22:41 -070031 // Set to true when |SetAndLockConservativePolicy| is called for the first
32 // time. If set to |true| can't be set to false and configuration policy can't
33 // be changed.
34 bool policy_locked_conservative_ = false;
Greg Kerr888f1ce2019-01-31 10:49:11 -080035};
36
37} // namespace debugd
38
39#endif // DEBUGD_SRC_SCHEDULER_CONFIGURATION_TOOL_H_