1 | // Like the compiler, the static analyzer treats some functions differently if |
2 | // they come from a system header -- for example, pthread_mutex* functions |
3 | // should not invalidate regions of their arguments. |
4 | #pragma clang system_header |
5 | |
6 | typedef struct { |
7 | void *foo; |
8 | } pthread_mutex_t; |
9 | |
10 | typedef struct { |
11 | void *foo; |
12 | } pthread_mutexattr_t; |
13 | |
14 | typedef struct { |
15 | void *foo; |
16 | } lck_grp_t; |
17 | |
18 | typedef pthread_mutex_t lck_mtx_t; |
19 | |
20 | extern int pthread_mutex_lock(pthread_mutex_t *); |
21 | extern int pthread_mutex_unlock(pthread_mutex_t *); |
22 | extern int pthread_mutex_trylock(pthread_mutex_t *); |
23 | extern int pthread_mutex_destroy(pthread_mutex_t *); |
24 | extern int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr); |
25 | extern int lck_mtx_lock(lck_mtx_t *); |
26 | extern int lck_mtx_unlock(lck_mtx_t *); |
27 | extern int lck_mtx_try_lock(lck_mtx_t *); |
28 | extern void lck_mtx_destroy(lck_mtx_t *lck, lck_grp_t *grp); |
29 | |