38 #if defined(SDL_THREAD_SAFETY_ANALYSIS) && \
39 defined(__clang__) && (!defined(SWIG))
40 #define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
42 #define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x)
45 #define SDL_CAPABILITY(x) \
46 SDL_THREAD_ANNOTATION_ATTRIBUTE__(capability(x))
48 #define SDL_SCOPED_CAPABILITY \
49 SDL_THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable)
51 #define SDL_GUARDED_BY(x) \
52 SDL_THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x))
54 #define SDL_PT_GUARDED_BY(x) \
55 SDL_THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x))
57 #define SDL_ACQUIRED_BEFORE(x) \
58 SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(x))
60 #define SDL_ACQUIRED_AFTER(x) \
61 SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(x))
63 #define SDL_REQUIRES(x) \
64 SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(x))
66 #define SDL_REQUIRES_SHARED(x) \
67 SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(x))
69 #define SDL_ACQUIRE(x) \
70 SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(x))
72 #define SDL_ACQUIRE_SHARED(x) \
73 SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(x))
75 #define SDL_RELEASE(x) \
76 SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_capability(x))
78 #define SDL_RELEASE_SHARED(x) \
79 SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(x))
81 #define SDL_RELEASE_GENERIC(x) \
82 SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_generic_capability(x))
84 #define SDL_TRY_ACQUIRE(x, y) \
85 SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(x, y))
87 #define SDL_TRY_ACQUIRE_SHARED(x, y) \
88 SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(x, y))
90 #define SDL_EXCLUDES(x) \
91 SDL_THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(x))
93 #define SDL_ASSERT_CAPABILITY(x) \
94 SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x))
96 #define SDL_ASSERT_SHARED_CAPABILITY(x) \
97 SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x))
99 #define SDL_RETURN_CAPABILITY(x) \
100 SDL_THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x))
102 #define SDL_NO_THREAD_SAFETY_ANALYSIS \
103 SDL_THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis)
118 #define SDL_MUTEX_TIMEDOUT 1
123 #define SDL_MUTEX_MAXWAIT (~(Uint32)0)
174 #define SDL_mutexP(m) SDL_LockMutex(m)
216 #define SDL_mutexV(m) SDL_UnlockMutex(m)
247 struct SDL_semaphore;
248 typedef struct SDL_semaphore
SDL_sem;
int SDL_SemWait(SDL_sem *sem)
SDL_cond * SDL_CreateCond(void)
#define SDL_TRY_ACQUIRE(x, y)
int SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout)
int SDL_TryLockMutex(SDL_mutex *mutex) SDL_TRY_ACQUIRE(0
void SDL_DestroyMutex(SDL_mutex *mutex)
void SDL_DestroySemaphore(SDL_sem *sem)
int SDL_CondBroadcast(SDL_cond *cond)
int SDL_SemPost(SDL_sem *sem)
int SDL_CondWaitTimeout(SDL_cond *cond, SDL_mutex *mutex, Uint32 ms)
int SDL_CondSignal(SDL_cond *cond)
void SDL_DestroyCond(SDL_cond *cond)
int SDL_UnlockMutex(SDL_mutex *mutex) SDL_RELEASE(mutex)
SDL_mutex * SDL_CreateMutex(void)
struct SDL_semaphore SDL_sem
int SDL_LockMutex(SDL_mutex *mutex) SDL_ACQUIRE(mutex)
struct SDL_mutex SDL_mutex
Uint32 SDL_SemValue(SDL_sem *sem)
int SDL_SemTryWait(SDL_sem *sem)
SDL_sem * SDL_CreateSemaphore(Uint32 initial_value)
int SDL_CondWait(SDL_cond *cond, SDL_mutex *mutex)