14f8ddcd08
code and simply return EINVAL (which is allowed by the standard) in all those pthread functions that previously initialized it. o Refactor the pthread_rwlock_[try]rdlock() and pthread_rwlock_[try]wrlock() functions. They are now completeley condensed into rwlock_rdlock_common() and rwlock_wrlock_common(), respectively. o If the application tries to destroy an rwlock that is currently held by a thread return EBUSY where it previously went ahead and freed all resources associated with the lock. o Refactor _pthread_rwlock_init() to make it look (relatively) sane. o When obtaining a read lock on an rwlock the check for whether it would exceed the maximum allowed read locks should happen *before* we obtain the lock. o The pthread_rwlock_* functions shall *never* return EINTR, so make sure to requeue/resuspend the thread if it encounters such an error. o Make a note that pthread_rwlock_unlock() needs to ensure it holds a lock on an rwlock it tries to unlock. It will be implemented in a separate commit because it requires some additional rwlock infrastructure. |
||
---|---|---|
.. | ||
Makefile.inc | ||
thr_attr.c | ||
thr_autoinit.c | ||
thr_cancel.c | ||
thr_clean.c | ||
thr_concurrency.c | ||
thr_cond.c | ||
thr_condattr_destroy.c | ||
thr_condattr_init.c | ||
thr_create.c | ||
thr_detach.c | ||
thr_equal.c | ||
thr_exit.c | ||
thr_find_thread.c | ||
thr_gc.c | ||
thr_getprio.c | ||
thr_getschedparam.c | ||
thr_info.c | ||
thr_init.c | ||
thr_join.c | ||
thr_kern.c | ||
thr_main_np.c | ||
thr_mattr_init.c | ||
thr_mattr_kind_np.c | ||
thr_multi_np.c | ||
thr_mutex_prioceiling.c | ||
thr_mutex_protocol.c | ||
thr_mutex.c | ||
thr_mutexattr_destroy.c | ||
thr_once.c | ||
thr_printf.c | ||
thr_private.h | ||
thr_resume_np.c | ||
thr_rwlock.c | ||
thr_rwlockattr.c | ||
thr_self.c | ||
thr_sem.c | ||
thr_seterrno.c | ||
thr_setprio.c | ||
thr_setschedparam.c | ||
thr_sig.c | ||
thr_spec.c | ||
thr_spinlock.c | ||
thr_stack.c | ||
thr_subr.c | ||
thr_suspend_np.c | ||
thr_syscalls.c | ||
thr_yield.c |