// PTHREAD_RWLOCK_INITIALIZER (macro)

// int   pthread_rwlock_destroy(pthread_rwlock_t *);
// int   pthread_rwlock_init(pthread_rwlock_t *restrict, const pthread_rwlockattr_t *restrict);
// int   pthread_rwlock_rdlock(pthread_rwlock_t *);
// int   pthread_rwlock_timedrdlock(pthread_rwlock_t *restrict, const struct timespec *restrict);
// int   pthread_rwlock_timedwrlock(pthread_rwlock_t *restrict, const struct timespec *restrict);
// int   pthread_rwlock_tryrdlock(pthread_rwlock_t *);
// int   pthread_rwlock_trywrlock(pthread_rwlock_t *);
// int   pthread_rwlock_unlock(pthread_rwlock_t *);
// int   pthread_rwlock_wrlock(pthread_rwlock_t *);
// int   pthread_rwlockattr_destroy(pthread_rwlockattr_t *);
// int   pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *restrict, int *restrict);
// int   pthread_rwlockattr_init(pthread_rwlockattr_t *);
// int   pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int);
