| Index: base/threading/platform_thread_linux.cc
|
| diff --git a/base/threading/platform_thread_linux.cc b/base/threading/platform_thread_linux.cc
|
| index 623a3dee678352aaf8a61b402c431a1727aa2fd9..67dbca6f847eeaafba7f616eeebe64d4bbccefe6 100644
|
| --- a/base/threading/platform_thread_linux.cc
|
| +++ b/base/threading/platform_thread_linux.cc
|
| @@ -37,9 +37,11 @@ const ThreadPriorityToNiceValuePair kThreadPriorityToNiceValueMap[4] = {
|
| {kThreadPriority_Display, -6},
|
| };
|
|
|
| -bool HandleSetThreadPriorityForPlatform(PlatformThreadHandle handle,
|
| - ThreadPriority priority) {
|
| +bool SetThreadPriorityForPlatform(PlatformThreadHandle handle,
|
| + ThreadPriority priority) {
|
| #if !defined(OS_NACL)
|
| + // TODO(gab): Assess the correctness of using |pthread_self()| below instead
|
| + // of |handle|. http://crbug.com/468793.
|
| return priority == kThreadPriority_RealtimeAudio &&
|
| pthread_setschedparam(pthread_self(), SCHED_RR, &kRealTimePrio) == 0;
|
| #else
|
| @@ -47,6 +49,24 @@ bool HandleSetThreadPriorityForPlatform(PlatformThreadHandle handle,
|
| #endif
|
| }
|
|
|
| +bool GetThreadPriorityForPlatform(PlatformThreadHandle handle,
|
| + ThreadPriority* priority) {
|
| +#if !defined(OS_NACL)
|
| + int maybe_sched_rr = 0;
|
| + struct sched_param maybe_realtime_prio = {0};
|
| + // TODO(gab): Assess the correctness of using |pthread_self()| below instead
|
| + // of |handle|. http://crbug.com/468793.
|
| + if (pthread_getschedparam(pthread_self(), &maybe_sched_rr,
|
| + &maybe_realtime_prio) == 0 &&
|
| + maybe_sched_rr == SCHED_RR &&
|
| + maybe_realtime_prio.sched_priority == kRealTimePrio.sched_priority) {
|
| + *priority = kThreadPriority_RealtimeAudio;
|
| + return true;
|
| + }
|
| +#endif
|
| + return false;
|
| +}
|
| +
|
| } // namespace internal
|
|
|
| // static
|
|
|