| //===-- llvm/System/Threading.h - Control multithreading mode --*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // TThis file defines llvm_start_multithreaded() and friends. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_SYSTEM_THREADING_H |
| #define LLVM_SYSTEM_THREADING_H |
| |
| namespace llvm { |
| /// llvm_start_multithreaded - Allocate and initialize structures needed to |
| /// make LLVM safe for multithreading. The return value indicates whether |
| /// multithreaded initialization succeeded. LLVM will still be operational |
| /// on "failed" return, and will still be safe for hosting threading |
| /// applications in the JIT, but will not be safe for concurrent calls to the |
| /// LLVM APIs. |
| /// THIS MUST EXECUTE IN ISOLATION FROM ALL OTHER LLVM API CALLS. |
| bool llvm_start_multithreaded(); |
| |
| /// llvm_stop_multithreaded - Deallocate structures necessary to make LLVM |
| /// safe for multithreading. |
| /// THIS MUST EXECUTE IN ISOLATION FROM ALL OTHER LLVM API CALLS. |
| void llvm_stop_multithreaded(); |
| |
| /// llvm_is_multithreaded - Check whether LLVM is executing in thread-safe |
| /// mode or not. |
| bool llvm_is_multithreaded(); |
| |
| /// acquire_global_lock - Acquire the global lock. This is a no-op if called |
| /// before llvm_start_multithreaded(). |
| void llvm_acquire_global_lock(); |
| |
| /// release_global_lock - Release the global lock. This is a no-op if called |
| /// before llvm_start_multithreaded(). |
| void llvm_release_global_lock(); |
| } |
| |
| #endif |