-
Notifications
You must be signed in to change notification settings - Fork 707
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Renamed function. Added boost header.
- Loading branch information
1 parent
222c472
commit aafc7e0
Showing
6 changed files
with
167 additions
and
5 deletions.
There are no files selected for viewing
160 changes: 160 additions & 0 deletions
160
bundled/boost-1.70.0/include/boost/thread/detail/thread_safety.hpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,160 @@ | ||
#ifndef BOOST_THREAD_DETAIL_THREAD_SAFETY_HPP | ||
#define BOOST_THREAD_DETAIL_THREAD_SAFETY_HPP | ||
|
||
#if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) | ||
// | ||
// This is horrible, but it seems to be the only we can shut up the | ||
// "anonymous variadic macros were introduced in C99 [-Wvariadic-macros]" | ||
// warning that get spewed out otherwise in non-C++11 mode. | ||
// | ||
#pragma GCC system_header | ||
#endif | ||
|
||
// See https://clang.llvm.org/docs/ThreadSafetyAnalysis.html | ||
|
||
// Un-comment to enable Thread Safety Analysis | ||
//#define BOOST_THREAD_ENABLE_THREAD_SAFETY_ANALYSIS | ||
|
||
// Enable thread safety attributes only with clang. | ||
// The attributes can be safely erased when compiling with other compilers. | ||
#if defined (BOOST_THREAD_ENABLE_THREAD_SAFETY_ANALYSIS) && defined(__clang__) && (!defined(SWIG)) | ||
#define BOOST_THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x)) | ||
#else | ||
#define BOOST_THREAD_ANNOTATION_ATTRIBUTE__(x) // no-op | ||
#endif | ||
|
||
#define BOOST_THREAD_CAPABILITY(x) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(capability(x)) | ||
|
||
#define BOOST_THREAD_SCOPED_CAPABILITY \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable) | ||
|
||
#define BOOST_THREAD_GUARDED_BY(x) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x)) | ||
|
||
#define BOOST_THREAD_PT_GUARDED_BY(x) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x)) | ||
|
||
#define BOOST_THREAD_ACQUIRED_BEFORE(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(__VA_ARGS__)) | ||
|
||
#define BOOST_THREAD_ACQUIRED_AFTER(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(__VA_ARGS__)) | ||
|
||
#define BOOST_THREAD_REQUIRES(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(__VA_ARGS__)) | ||
|
||
#define BOOST_THREAD_REQUIRES_SHARED(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(__VA_ARGS__)) | ||
|
||
#define BOOST_THREAD_ACQUIRE(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(__VA_ARGS__)) | ||
|
||
#define BOOST_THREAD_ACQUIRE_SHARED(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(__VA_ARGS__)) | ||
|
||
#define BOOST_THREAD_RELEASE(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(release_capability(__VA_ARGS__)) | ||
|
||
#define BOOST_THREAD_RELEASE_SHARED(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(__VA_ARGS__)) | ||
|
||
#define BOOST_THREAD_TRY_ACQUIRE(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(__VA_ARGS__)) | ||
|
||
#define BOOST_THREAD_TRY_ACQUIRE_SHARED(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(__VA_ARGS__)) | ||
|
||
#define BOOST_THREAD_EXCLUDES(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(__VA_ARGS__)) | ||
|
||
#define BOOST_THREAD_ASSERT_CAPABILITY(x) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x)) | ||
|
||
#define BOOST_THREAD_ASSERT_SHARED_CAPABILITY(x) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x)) | ||
|
||
#define BOOST_THREAD_RETURN_CAPABILITY(x) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x)) | ||
|
||
#define BOOST_THREAD_NO_THREAD_SAFETY_ANALYSIS \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis) | ||
|
||
#if defined(__clang__) && (!defined(SWIG)) && defined(__FreeBSD__) | ||
#if __has_attribute(no_thread_safety_analysis) | ||
#define BOOST_THREAD_DISABLE_THREAD_SAFETY_ANALYSIS __attribute__((no_thread_safety_analysis)) | ||
#else | ||
#define BOOST_THREAD_DISABLE_THREAD_SAFETY_ANALYSIS | ||
#endif | ||
#else | ||
#define BOOST_THREAD_DISABLE_THREAD_SAFETY_ANALYSIS | ||
#endif | ||
|
||
#ifdef USE_LOCK_STYLE_THREAD_SAFETY_ATTRIBUTES | ||
// The original version of thread safety analysis the following attribute | ||
// definitions. These use a lock-based terminology. They are still in use | ||
// by existing thread safety code, and will continue to be supported. | ||
|
||
// Deprecated. | ||
#define BOOST_THREAD_PT_GUARDED_VAR \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_var) | ||
|
||
// Deprecated. | ||
#define BOOST_THREAD_GUARDED_VAR \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(guarded_var) | ||
|
||
// Replaced by REQUIRES | ||
#define BOOST_THREAD_EXCLUSIVE_LOCKS_REQUIRED(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(exclusive_locks_required(__VA_ARGS__)) | ||
|
||
// Replaced by REQUIRES_SHARED | ||
#define BOOST_THREAD_SHARED_LOCKS_REQUIRED(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(shared_locks_required(__VA_ARGS__)) | ||
|
||
// Replaced by CAPABILITY | ||
#define BOOST_THREAD_LOCKABLE \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(lockable) | ||
|
||
// Replaced by SCOPED_CAPABILITY | ||
#define BOOST_THREAD_SCOPED_LOCKABLE \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable) | ||
|
||
// Replaced by ACQUIRE | ||
#define BOOST_THREAD_EXCLUSIVE_LOCK_FUNCTION(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(exclusive_lock_function(__VA_ARGS__)) | ||
|
||
// Replaced by ACQUIRE_SHARED | ||
#define BOOST_THREAD_SHARED_LOCK_FUNCTION(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(shared_lock_function(__VA_ARGS__)) | ||
|
||
// Replaced by RELEASE and RELEASE_SHARED | ||
#define BOOST_THREAD_UNLOCK_FUNCTION(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(unlock_function(__VA_ARGS__)) | ||
|
||
// Replaced by TRY_ACQUIRE | ||
#define BOOST_THREAD_EXCLUSIVE_TRYLOCK_FUNCTION(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(exclusive_trylock_function(__VA_ARGS__)) | ||
|
||
// Replaced by TRY_ACQUIRE_SHARED | ||
#define BOOST_THREAD_SHARED_TRYLOCK_FUNCTION(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(shared_trylock_function(__VA_ARGS__)) | ||
|
||
// Replaced by ASSERT_CAPABILITY | ||
#define BOOST_THREAD_ASSERT_EXCLUSIVE_LOCK(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(assert_exclusive_lock(__VA_ARGS__)) | ||
|
||
// Replaced by ASSERT_SHARED_CAPABILITY | ||
#define BOOST_THREAD_ASSERT_SHARED_LOCK(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_lock(__VA_ARGS__)) | ||
|
||
// Replaced by EXCLUDE_CAPABILITY. | ||
#define BOOST_THREAD_LOCKS_EXCLUDED(...) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(__VA_ARGS__)) | ||
|
||
// Replaced by RETURN_CAPABILITY | ||
#define BOOST_THREAD_LOCK_RETURNED(x) \ | ||
BOOST_THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x)) | ||
|
||
#endif // USE_LOCK_STYLE_THREAD_SAFETY_ATTRIBUTES | ||
|
||
#endif // BOOST_THREAD_DETAIL_THREAD_SAFETY_HPP |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters