10#if defined(__clang__) && (!defined(SWIG))
11#define THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
13#define THREAD_ANNOTATION_ATTRIBUTE__(x)
16#define CAPABILITY(x) \
17 THREAD_ANNOTATION_ATTRIBUTE__(capability(x))
19#define SCOPED_CAPABILITY \
20 THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable)
22#define GUARDED_BY(x) \
23 THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x))
25#define PT_GUARDED_BY(x) \
26 THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x))
28#define ACQUIRED_BEFORE(...) \
29 THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(__VA_ARGS__))
31#define ACQUIRED_AFTER(...) \
32 THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(__VA_ARGS__))
34#define REQUIRES(...) \
35 THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(__VA_ARGS__))
37#define REQUIRES_SHARED(...) \
38 THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(__VA_ARGS__))
41 THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(__VA_ARGS__))
43#define ACQUIRE_SHARED(...) \
44 THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(__VA_ARGS__))
47 THREAD_ANNOTATION_ATTRIBUTE__(release_capability(__VA_ARGS__))
49#define RELEASE_SHARED(...) \
50 THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(__VA_ARGS__))
52#define RELEASE_GENERIC(...) \
53 THREAD_ANNOTATION_ATTRIBUTE__(release_generic_capability(__VA_ARGS__))
55#define TRY_ACQUIRE(...) \
56 THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(__VA_ARGS__))
58#define TRY_ACQUIRE_SHARED(...) \
59 THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(__VA_ARGS__))
61#define EXCLUDES(...) \
62 THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(__VA_ARGS__))
64#define ASSERT_CAPABILITY(x) \
65 THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x))
67#define ASSERT_SHARED_CAPABILITY(x) \
68 THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x))
70#define RETURN_CAPABILITY(x) \
71 THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x))
73#define NO_THREAD_SAFETY_ANALYSIS \
74 THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis)
CLock & m_Lock
Definition lock.h:134
CLockScope(CLock &Lock)
Definition lock.h:122
~CLockScope()
Definition lock.h:128
void lock()
Definition lock.h:94
std::mutex m_Mutex
Definition lock.h:108
const CLock & operator!() const
Definition lock.h:105
void unlock()
Definition lock.h:99
#define RELEASE(...)
Definition lock.h:46
#define REQUIRES(...)
Definition lock.h:34
#define ACQUIRE(...)
Definition lock.h:40
#define SCOPED_CAPABILITY
Definition lock.h:19
#define CAPABILITY(x)
Definition lock.h:16