Chromium Code Reviews| Index: chrome/browser/chromeos/power/freezer_cgroup_process_manager.cc |
| diff --git a/chrome/browser/chromeos/power/freezer_cgroup_process_manager.cc b/chrome/browser/chromeos/power/freezer_cgroup_process_manager.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..4afe94008e38591724a1b3aea6de5c4351dad899 |
| --- /dev/null |
| +++ b/chrome/browser/chromeos/power/freezer_cgroup_process_manager.cc |
| @@ -0,0 +1,54 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "chrome/browser/chromeos/power/freezer_cgroup_process_manager.h" |
| + |
| +#include "base/files/file_util.h" |
| +#include "base/logging.h" |
| + |
| +namespace chromeos { |
| + |
| +namespace { |
| +const char kFreezerStatePath[] = |
| + "/sys/fs/cgroup/freezer/chrome_renderers/freezer.state"; |
| +const char kFreezeCommand[] = "FROZEN"; |
| +const char kThawCommand[] = "THAWED"; |
| + |
| +} // namespace |
| + |
| +FreezerCgroupProcessManager::FreezerCgroupProcessManager() |
| + : state_path_(base::FilePath(kFreezerStatePath)), |
| + enabled_(base::PathIsWritable(state_path_)) { |
| +} |
| + |
| +FreezerCgroupProcessManager::~FreezerCgroupProcessManager() { |
| +} |
| + |
| +bool FreezerCgroupProcessManager::FreezeRenderers() { |
| + if (!enabled_) { |
| + LOG(ERROR) << "Attempting to freeze renderers when the freezer cgroup is " |
| + << "not available."; |
| + return false; |
| + } |
| + |
| + return base::WriteFile(state_path_, kFreezeCommand, strlen(kFreezeCommand)) == |
|
Daniel Erat
2014/09/12 22:53:22
nit: i don't think that WriteFile logs any details
|
| + static_cast<int>(strlen(kFreezeCommand)); |
| +} |
| + |
| +bool FreezerCgroupProcessManager::ThawRenderers() { |
| + if (!enabled_) { |
| + LOG(ERROR) << "Attempting to thaw renderers when the freezer cgroup is not " |
| + << "available."; |
| + return false; |
| + } |
| + |
| + return base::WriteFile(state_path_, kThawCommand, strlen(kThawCommand)) == |
| + static_cast<int>(strlen(kThawCommand)); |
| +} |
| + |
| +bool FreezerCgroupProcessManager::CanFreezeRenderers() { |
| + return enabled_; |
| +} |
| + |
| +} // namespace chromeos |