// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef DEBUGD_SRC_SCHEDULER_CONFIGURATION_TOOL_H_
#define DEBUGD_SRC_SCHEDULER_CONFIGURATION_TOOL_H_

#include <string>

#include <base/macros.h>
#include <brillo/errors/error.h>

namespace debugd {

class SchedulerConfigurationTool {
 public:
  SchedulerConfigurationTool() = default;
  SchedulerConfigurationTool(const SchedulerConfigurationTool&) = delete;
  SchedulerConfigurationTool& operator=(const SchedulerConfigurationTool&) =
      delete;

  ~SchedulerConfigurationTool() = default;

  // This sets the core sharing policy.
  bool SetPolicy(const std::string& policy,
                 bool lock_policy,
                 brillo::ErrorPtr* error,
                 uint32_t* num_cores_disabled);

 private:
  // Set to true when |SetAndLockConservativePolicy| is called for the first
  // time. If set to |true| can't be set to false and configuration policy can't
  // be changed.
  bool policy_locked_conservative_ = false;
};

}  // namespace debugd

#endif  // DEBUGD_SRC_SCHEDULER_CONFIGURATION_TOOL_H_
