| // Copyright 2017 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. |
| |
| #ifndef BASE_TASK_TASK_SCHEDULER_ENVIRONMENT_CONFIG_H_ |
| #define BASE_TASK_TASK_SCHEDULER_ENVIRONMENT_CONFIG_H_ |
| |
| #include "base/base_export.h" |
| #include "base/task/task_traits.h" |
| #include "base/threading/thread.h" |
| #include "starboard/types.h" |
| |
| namespace base { |
| namespace internal { |
| |
| enum EnvironmentType { |
| FOREGROUND = 0, |
| FOREGROUND_BLOCKING, |
| // Pools will only be created for the environment above on platforms that |
| // don't support SchedulerWorkers running with a background priority. |
| ENVIRONMENT_COUNT_WITHOUT_BACKGROUND_PRIORITY, |
| BACKGROUND = ENVIRONMENT_COUNT_WITHOUT_BACKGROUND_PRIORITY, |
| BACKGROUND_BLOCKING, |
| ENVIRONMENT_COUNT // Always last. |
| }; |
| |
| // Order must match the EnvironmentType enum. |
| constexpr struct { |
| // The threads and histograms of this environment will be labeled with |
| // the task scheduler name concatenated to this. |
| const char* name_suffix; |
| |
| // Preferred priority for threads in this environment; the actual thread |
| // priority depends on shutdown state and platform capabilities. |
| ThreadPriority priority_hint; |
| } kEnvironmentParams[] = { |
| {"Foreground", base::ThreadPriority::NORMAL}, |
| {"ForegroundBlocking", base::ThreadPriority::NORMAL}, |
| {"Background", base::ThreadPriority::BACKGROUND}, |
| {"BackgroundBlocking", base::ThreadPriority::BACKGROUND}, |
| }; |
| |
| size_t BASE_EXPORT GetEnvironmentIndexForTraits(const TaskTraits& traits); |
| |
| // Returns true if this platform supports having SchedulerWorkers running with a |
| // background priority. |
| bool BASE_EXPORT CanUseBackgroundPriorityForSchedulerWorker(); |
| |
| } // namespace internal |
| } // namespace base |
| |
| #endif // BASE_TASK_TASK_SCHEDULER_ENVIRONMENT_CONFIG_H_ |