OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/threading/platform_thread.h" | 5 #include "base/threading/platform_thread.h" |
6 | 6 |
7 #include <errno.h> | 7 #include <errno.h> |
8 #include <pthread.h> | 8 #include <pthread.h> |
9 #include <sched.h> | 9 #include <sched.h> |
10 #include <stddef.h> | 10 #include <stddef.h> |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 // equivalent but makes sandboxing easier (https://crbug.com/399473). | 226 // equivalent but makes sandboxing easier (https://crbug.com/399473). |
227 const int nice_setting = internal::ThreadPriorityToNiceValue(priority); | 227 const int nice_setting = internal::ThreadPriorityToNiceValue(priority); |
228 if (setpriority(PRIO_PROCESS, 0, nice_setting)) { | 228 if (setpriority(PRIO_PROCESS, 0, nice_setting)) { |
229 DVPLOG(1) << "Failed to set nice value of thread (" | 229 DVPLOG(1) << "Failed to set nice value of thread (" |
230 << PlatformThread::CurrentId() << ") to " << nice_setting; | 230 << PlatformThread::CurrentId() << ") to " << nice_setting; |
231 } | 231 } |
232 #endif // defined(OS_NACL) | 232 #endif // defined(OS_NACL) |
233 } | 233 } |
234 | 234 |
235 // static | 235 // static |
| 236 bool PlatformThread::SetThreadPriority(PlatformThreadId tid, |
| 237 ThreadPriority priority) { |
| 238 return internal::SetThreadPriority(tid, priority); |
| 239 } |
| 240 |
| 241 // static |
236 ThreadPriority PlatformThread::GetCurrentThreadPriority() { | 242 ThreadPriority PlatformThread::GetCurrentThreadPriority() { |
237 #if defined(OS_NACL) | 243 #if defined(OS_NACL) |
238 NOTIMPLEMENTED(); | 244 NOTIMPLEMENTED(); |
239 return ThreadPriority::NORMAL; | 245 return ThreadPriority::NORMAL; |
240 #else | 246 #else |
241 // Mirrors SetCurrentThreadPriority()'s implementation. | 247 // Mirrors SetCurrentThreadPriority()'s implementation. |
242 ThreadPriority platform_specific_priority; | 248 ThreadPriority platform_specific_priority; |
243 if (internal::GetCurrentThreadPriorityForPlatform( | 249 if (internal::GetCurrentThreadPriorityForPlatform( |
244 &platform_specific_priority)) { | 250 &platform_specific_priority)) { |
245 return platform_specific_priority; | 251 return platform_specific_priority; |
246 } | 252 } |
247 | 253 |
248 // Need to clear errno before calling getpriority(): | 254 // Need to clear errno before calling getpriority(): |
249 // http://man7.org/linux/man-pages/man2/getpriority.2.html | 255 // http://man7.org/linux/man-pages/man2/getpriority.2.html |
250 errno = 0; | 256 errno = 0; |
251 int nice_value = getpriority(PRIO_PROCESS, 0); | 257 int nice_value = getpriority(PRIO_PROCESS, 0); |
252 if (errno != 0) { | 258 if (errno != 0) { |
253 DVPLOG(1) << "Failed to get nice value of thread (" | 259 DVPLOG(1) << "Failed to get nice value of thread (" |
254 << PlatformThread::CurrentId() << ")"; | 260 << PlatformThread::CurrentId() << ")"; |
255 return ThreadPriority::NORMAL; | 261 return ThreadPriority::NORMAL; |
256 } | 262 } |
257 | 263 |
258 return internal::NiceValueToThreadPriority(nice_value); | 264 return internal::NiceValueToThreadPriority(nice_value); |
259 #endif // !defined(OS_NACL) | 265 #endif // !defined(OS_NACL) |
260 } | 266 } |
261 | 267 |
262 #endif // !defined(OS_MACOSX) | 268 #endif // !defined(OS_MACOSX) |
263 | 269 |
264 } // namespace base | 270 } // namespace base |
OLD | NEW |