diff options
Diffstat (limited to 'base/threading/platform_thread_freebsd.cc')
-rw-r--r-- | base/threading/platform_thread_freebsd.cc | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/base/threading/platform_thread_freebsd.cc b/base/threading/platform_thread_freebsd.cc index a163f65..dc5d34b 100644 --- a/base/threading/platform_thread_freebsd.cc +++ b/base/threading/platform_thread_freebsd.cc @@ -36,9 +36,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 @@ -46,6 +48,24 @@ bool HandleSetThreadPriorityForPlatform(PlatformThreadHandle handle, #endif } +bool GetThreadPriorityForPlatform(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. + int maybe_sched_rr = 0; + struct sched_param maybe_realtime_prio = {0}; + 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 |