| // Copyright 2015 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 "base/threading/platform_thread_internal_posix.h" |
| |
| #include "base/containers/adapters.h" |
| #include "base/logging.h" |
| |
| namespace base { |
| |
| namespace internal { |
| |
| int ThreadPriorityToNiceValue(ThreadPriority priority) { |
| for (const auto& pair : kThreadPriorityToNiceValueMap) { |
| if (pair.priority == priority) |
| return pair.nice_value; |
| } |
| NOTREACHED() << "Unknown ThreadPriority"; |
| return 0; |
| } |
| |
| ThreadPriority NiceValueToThreadPriority(int nice_value) { |
| // Try to find a priority that best describes |nice_value|. If there isn't |
| // an exact match, this method returns the closest priority whose nice value |
| // is higher (lower priority) than |nice_value|. |
| for (const auto& pair : Reversed(kThreadPriorityToNiceValueMap)) { |
| if (pair.nice_value >= nice_value) |
| return pair.priority; |
| } |
| |
| // Reaching here means |nice_value| is more than any of the defined |
| // priorities. The lowest priority is suitable in this case. |
| return ThreadPriority::BACKGROUND; |
| } |
| |
| } // namespace internal |
| |
| } // namespace base |