diff options
Diffstat (limited to 'clang-tools-extra/clangd/Threading.cpp')
| -rw-r--r-- | clang-tools-extra/clangd/Threading.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/clang-tools-extra/clangd/Threading.cpp b/clang-tools-extra/clangd/Threading.cpp index acd45108418..9f1cbef95c0 100644 --- a/clang-tools-extra/clangd/Threading.cpp +++ b/clang-tools-extra/clangd/Threading.cpp @@ -1,9 +1,13 @@ #include "Threading.h" #include "Trace.h" #include "llvm/ADT/ScopeExit.h" +#include "llvm/Config/config.h" #include "llvm/Support/FormatVariadic.h" #include "llvm/Support/Threading.h" #include <thread> +#ifdef HAVE_PTHREAD_H +#include <pthread.h> +#endif using namespace llvm; namespace clang { @@ -97,5 +101,15 @@ void wait(std::unique_lock<std::mutex> &Lock, std::condition_variable &CV, CV.wait_until(Lock, D.time()); } +void setThreadPriority(std::thread &T, ThreadPriority Priority) { +#ifdef HAVE_PTHREAD_H + sched_param priority; + priority.sched_priority = 0; + pthread_setschedparam( + T.native_handle(), + Priority == ThreadPriority::Low ? SCHED_IDLE : SCHED_OTHER, &priority); +#endif +} + } // namespace clangd } // namespace clang |

