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