Project
Loading...
Searching...
No Matches
ThreadSafetyAnalysis.h File Reference

Go to the source code of this file.

Macros

#define O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(x)
 
#define O2_DPL_CAPABILITY(x)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(capability(x))
 
#define O2_DPL_SCOPED_CAPABILITY    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable)
 
#define O2_DPL_GUARDED_BY(x)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x))
 
#define O2_DPL_PT_GUARDED_BY(x)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x))
 
#define O2_DPL_ACQUIRED_BEFORE(...)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(__VA_ARGS__))
 
#define O2_DPL_ACQUIRED_AFTER(...)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(__VA_ARGS__))
 
#define O2_DPL_REQUIRES(...)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(__VA_ARGS__))
 
#define O2_DPL_REQUIRES_SHARED(...)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(__VA_ARGS__))
 
#define O2_DPL_ACQUIRE(...)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(__VA_ARGS__))
 
#define O2_DPL_ACQUIRE_SHARED(...)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(__VA_ARGS__))
 
#define O2_DPL_RELEASE(...)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(release_capability(__VA_ARGS__))
 
#define O2_DPL_RELEASE_SHARED(...)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(__VA_ARGS__))
 
#define O2_DPL_RELEASE_GENERIC(...)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(release_generic_capability(__VA_ARGS__))
 
#define O2_DPL_TRY_ACQUIRE(...)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(__VA_ARGS__))
 
#define O2_DPL_TRY_ACQUIRE_SHARED(...)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(__VA_ARGS__))
 
#define O2_DPL_EXCLUDES(...)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(__VA_ARGS__))
 
#define O2_DPL_ASSERT_CAPABILITY(x)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x))
 
#define O2_DPL_ASSERT_SHARED_CAPABILITY(x)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x))
 
#define O2_DPL_RETURN_CAPABILITY(x)    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x))
 
#define O2_DPL_NO_THREAD_SAFETY_ANALYSIS    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis)
 

Macro Definition Documentation

◆ O2_DPL_ACQUIRE

#define O2_DPL_ACQUIRE (   ...)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(__VA_ARGS__))

Definition at line 55 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_ACQUIRE_SHARED

#define O2_DPL_ACQUIRE_SHARED (   ...)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(__VA_ARGS__))

Definition at line 58 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_ACQUIRED_AFTER

#define O2_DPL_ACQUIRED_AFTER (   ...)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(__VA_ARGS__))

Definition at line 46 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_ACQUIRED_BEFORE

#define O2_DPL_ACQUIRED_BEFORE (   ...)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(__VA_ARGS__))

Definition at line 43 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_ASSERT_CAPABILITY

#define O2_DPL_ASSERT_CAPABILITY (   x)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x))

Definition at line 79 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_ASSERT_SHARED_CAPABILITY

#define O2_DPL_ASSERT_SHARED_CAPABILITY (   x)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x))

Definition at line 82 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_CAPABILITY

#define O2_DPL_CAPABILITY (   x)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(capability(x))

Definition at line 31 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_EXCLUDES

#define O2_DPL_EXCLUDES (   ...)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(__VA_ARGS__))

Definition at line 76 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_GUARDED_BY

#define O2_DPL_GUARDED_BY (   x)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x))

Definition at line 37 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_NO_THREAD_SAFETY_ANALYSIS

#define O2_DPL_NO_THREAD_SAFETY_ANALYSIS    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis)

Definition at line 88 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_PT_GUARDED_BY

#define O2_DPL_PT_GUARDED_BY (   x)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x))

Definition at line 40 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_RELEASE

#define O2_DPL_RELEASE (   ...)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(release_capability(__VA_ARGS__))

Definition at line 61 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_RELEASE_GENERIC

#define O2_DPL_RELEASE_GENERIC (   ...)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(release_generic_capability(__VA_ARGS__))

Definition at line 67 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_RELEASE_SHARED

#define O2_DPL_RELEASE_SHARED (   ...)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(__VA_ARGS__))

Definition at line 64 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_REQUIRES

#define O2_DPL_REQUIRES (   ...)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(__VA_ARGS__))

Definition at line 49 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_REQUIRES_SHARED

#define O2_DPL_REQUIRES_SHARED (   ...)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(__VA_ARGS__))

Definition at line 52 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_RETURN_CAPABILITY

#define O2_DPL_RETURN_CAPABILITY (   x)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x))

Definition at line 85 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_SCOPED_CAPABILITY

#define O2_DPL_SCOPED_CAPABILITY    O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable)

Definition at line 34 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__

#define O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__ (   x)

Enable thread safety attributes only with clang. The attributes can be safely erased when compiling with other compilers. See https://clang.llvm.org/docs/ThreadSafetyAnalysis.html for more information. Moreover, since we do not want to wrap every single std::mutex into our own class, we expect _LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS to be defined by the user to actually enable this feature.

Definition at line 28 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_TRY_ACQUIRE

#define O2_DPL_TRY_ACQUIRE (   ...)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(__VA_ARGS__))

Definition at line 70 of file ThreadSafetyAnalysis.h.

◆ O2_DPL_TRY_ACQUIRE_SHARED

#define O2_DPL_TRY_ACQUIRE_SHARED (   ...)     O2_DPL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(__VA_ARGS__))

Definition at line 73 of file ThreadSafetyAnalysis.h.