| // 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 |