36#ifdef SDL_WIKI_DOCUMENTATION_SECTION
50#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
52#elif defined(SDL_THREAD_SAFETY_ANALYSIS) && defined(__clang__) && (!defined(SWIG))
53#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
55#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x)
65#define SDL_CAPABILITY(x) \
66 SDL_THREAD_ANNOTATION_ATTRIBUTE__(capability(x))
75#define SDL_SCOPED_CAPABILITY \
76 SDL_THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable)
85#define SDL_GUARDED_BY(x) \
86 SDL_THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x))
95#define SDL_PT_GUARDED_BY(x) \
96 SDL_THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x))
105#define SDL_ACQUIRED_BEFORE(x) \
106 SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(x))
115#define SDL_ACQUIRED_AFTER(x) \
116 SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(x))
125#define SDL_REQUIRES(x) \
126 SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(x))
135#define SDL_REQUIRES_SHARED(x) \
136 SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(x))
145#define SDL_ACQUIRE(x) \
146 SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(x))
155#define SDL_ACQUIRE_SHARED(x) \
156 SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(x))
165#define SDL_RELEASE(x) \
166 SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_capability(x))
175#define SDL_RELEASE_SHARED(x) \
176 SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(x))
185#define SDL_RELEASE_GENERIC(x) \
186 SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_generic_capability(x))
195#define SDL_TRY_ACQUIRE(x, y) \
196 SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(x, y))
205#define SDL_TRY_ACQUIRE_SHARED(x, y) \
206 SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(x, y))
215#define SDL_EXCLUDES(x) \
216 SDL_THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(x))
225#define SDL_ASSERT_CAPABILITY(x) \
226 SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x))
235#define SDL_ASSERT_SHARED_CAPABILITY(x) \
236 SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x))
245#define SDL_RETURN_CAPABILITY(x) \
246 SDL_THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x))
255#define SDL_NO_THREAD_SAFETY_ANALYSIS \
256 SDL_THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis)
void SDL_DestroyRWLock(SDL_RWLock *rwlock)
bool SDL_WaitConditionTimeout(SDL_Condition *cond, SDL_Mutex *mutex, Sint32 timeoutMS)
void SDL_WaitCondition(SDL_Condition *cond, SDL_Mutex *mutex)
#define SDL_TRY_ACQUIRE(x, y)
SDL_RWLock * SDL_CreateRWLock(void)
void SDL_DestroySemaphore(SDL_Semaphore *sem)
#define SDL_TRY_ACQUIRE_SHARED(x, y)
bool SDL_TryLockRWLockForReading(SDL_RWLock *rwlock) SDL_TRY_ACQUIRE_SHARED(0
bool SDL_ShouldInit(SDL_InitState *state)
#define SDL_ACQUIRE_SHARED(x)
bool SDL_TryLockMutex(SDL_Mutex *mutex) SDL_TRY_ACQUIRE(0
void SDL_UnlockMutex(SDL_Mutex *mutex) SDL_RELEASE(mutex)
void SDL_LockRWLockForWriting(SDL_RWLock *rwlock) SDL_ACQUIRE(rwlock)
struct SDL_Mutex SDL_Mutex
void SDL_SignalCondition(SDL_Condition *cond)
bool SDL_WaitSemaphoreTimeout(SDL_Semaphore *sem, Sint32 timeoutMS)
#define SDL_RELEASE_GENERIC(x)
SDL_Semaphore * SDL_CreateSemaphore(Uint32 initial_value)
void SDL_SetInitialized(SDL_InitState *state, bool initialized)
void SDL_LockMutex(SDL_Mutex *mutex) SDL_ACQUIRE(mutex)
void SDL_SignalSemaphore(SDL_Semaphore *sem)
bool SDL_TryLockRWLockForWriting(SDL_RWLock *rwlock) SDL_TRY_ACQUIRE(0
Uint32 SDL_GetSemaphoreValue(SDL_Semaphore *sem)
struct SDL_Semaphore SDL_Semaphore
void SDL_UnlockRWLock(SDL_RWLock *rwlock) SDL_RELEASE_GENERIC(rwlock)
struct SDL_RWLock SDL_RWLock
bool SDL_TryWaitSemaphore(SDL_Semaphore *sem)
void SDL_WaitSemaphore(SDL_Semaphore *sem)
void SDL_DestroyCondition(SDL_Condition *cond)
void SDL_DestroyMutex(SDL_Mutex *mutex)
@ SDL_INIT_STATUS_INITIALIZED
@ SDL_INIT_STATUS_UNINITIALIZED
@ SDL_INIT_STATUS_UNINITIALIZING
@ SDL_INIT_STATUS_INITIALIZING
SDL_Condition * SDL_CreateCondition(void)
SDL_Mutex * SDL_CreateMutex(void)
void SDL_BroadcastCondition(SDL_Condition *cond)
void SDL_LockRWLockForReading(SDL_RWLock *rwlock) SDL_ACQUIRE_SHARED(rwlock)
bool SDL_ShouldQuit(SDL_InitState *state)
struct SDL_Condition SDL_Condition