Deleted Added
full compact
26c26
< * $FreeBSD: head/lib/libthr/thread/thr_rwlock.c 195403 2009-07-06 09:31:04Z attilio $
---
> * $FreeBSD: head/lib/libthr/thread/thr_rwlock.c 213241 2010-09-28 04:57:56Z davidxu $
47a48,60
> #define CHECK_AND_INIT_RWLOCK \
> if (__predict_false((prwlock = (*rwlock)) <= THR_RWLOCK_DESTROYED)) { \
> if (prwlock == THR_RWLOCK_INITIALIZER) { \
> int ret; \
> ret = init_static(_get_curthread(), rwlock); \
> if (ret) \
> return (ret); \
> } else if (prwlock == THR_RWLOCK_DESTROYED) { \
> return (EINVAL); \
> } \
> prwlock = *rwlock; \
> }
>
66a80
> pthread_rwlock_t prwlock;
69c83,86
< if (rwlock == NULL)
---
> prwlock = *rwlock;
> if (prwlock == THR_RWLOCK_INITIALIZER)
> ret = 0;
> else if (prwlock == THR_RWLOCK_DESTROYED)
72c89
< pthread_rwlock_t prwlock;
---
> *rwlock = THR_RWLOCK_DESTROYED;
74,76d90
< prwlock = *rwlock;
< *rwlock = NULL;
<
90c104
< if (*rwlock == NULL)
---
> if (*rwlock == THR_RWLOCK_INITIALIZER)
116,117c130
< if (__predict_false(rwlock == NULL))
< return (EINVAL);
---
> CHECK_AND_INIT_RWLOCK
119,128d131
< prwlock = *rwlock;
<
< /* check for static initialization */
< if (__predict_false(prwlock == NULL)) {
< if ((ret = init_static(curthread, rwlock)) != 0)
< return (ret);
<
< prwlock = *rwlock;
< }
<
209,210c212
< if (__predict_false(rwlock == NULL))
< return (EINVAL);
---
> CHECK_AND_INIT_RWLOCK
212,221d213
< prwlock = *rwlock;
<
< /* check for static initialization */
< if (__predict_false(prwlock == NULL)) {
< if ((ret = init_static(curthread, rwlock)) != 0)
< return (ret);
<
< prwlock = *rwlock;
< }
<
253,254c245
< if (__predict_false(rwlock == NULL))
< return (EINVAL);
---
> CHECK_AND_INIT_RWLOCK
256,265d246
< prwlock = *rwlock;
<
< /* check for static initialization */
< if (__predict_false(prwlock == NULL)) {
< if ((ret = init_static(curthread, rwlock)) != 0)
< return (ret);
<
< prwlock = *rwlock;
< }
<
280,281c261
< if (__predict_false(rwlock == NULL))
< return (EINVAL);
---
> CHECK_AND_INIT_RWLOCK
283,292d262
< prwlock = *rwlock;
<
< /* check for static initialization */
< if (__predict_false(prwlock == NULL)) {
< if ((ret = init_static(curthread, rwlock)) != 0)
< return (ret);
<
< prwlock = *rwlock;
< }
<
359,361d328
< if (__predict_false(rwlock == NULL))
< return (EINVAL);
<
364c331
< if (__predict_false(prwlock == NULL))
---
> if (__predict_false(prwlock <= THR_RWLOCK_DESTROYED))