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 6typedef struct { 7 void *foo; 8} pthread_mutex_t; 9 10typedef struct { 11 void *foo; 12} pthread_mutexattr_t; 13 14typedef struct { 15 void *foo; 16} lck_grp_t; 17 18typedef pthread_mutex_t lck_mtx_t; 19 20extern int pthread_mutex_lock(pthread_mutex_t *); 21extern int pthread_mutex_unlock(pthread_mutex_t *); 22extern int pthread_mutex_trylock(pthread_mutex_t *); 23extern int pthread_mutex_destroy(pthread_mutex_t *); 24extern int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr); 25extern int lck_mtx_lock(lck_mtx_t *); 26extern int lck_mtx_unlock(lck_mtx_t *); 27extern int lck_mtx_try_lock(lck_mtx_t *); 28extern void lck_mtx_destroy(lck_mtx_t *lck, lck_grp_t *grp); 29