svn commit: r320561 - head/sys/kern
Mateusz Guzik
mjg at FreeBSD.org
Sun Jul 2 01:05:17 UTC 2017
Author: mjg
Date: Sun Jul 2 01:05:16 2017
New Revision: 320561
URL: https://svnweb.freebsd.org/changeset/base/320561
Log:
rwlock: perform the typically false td_rw_rlocks check later
Check if the lock is available first instead.
MFC after: 1 week
Modified:
head/sys/kern/kern_rwlock.c
Modified: head/sys/kern/kern_rwlock.c
==============================================================================
--- head/sys/kern/kern_rwlock.c Sat Jul 1 23:39:49 2017 (r320560)
+++ head/sys/kern/kern_rwlock.c Sun Jul 2 01:05:16 2017 (r320561)
@@ -372,9 +372,8 @@ _rw_wunlock_cookie(volatile uintptr_t *c, const char *
* prioritizes writers before readers.
*/
#define RW_CAN_READ(td, _rw) \
- (((td)->td_rw_rlocks && (_rw) & RW_LOCK_READ) || ((_rw) & \
- (RW_LOCK_READ | RW_LOCK_WRITE_WAITERS | RW_LOCK_WRITE_SPINNER)) == \
- RW_LOCK_READ)
+ (((_rw) & (RW_LOCK_READ | RW_LOCK_WRITE_WAITERS | RW_LOCK_WRITE_SPINNER)) ==\
+ RW_LOCK_READ || ((td)->td_rw_rlocks && (_rw) & RW_LOCK_READ))
static bool __always_inline
__rw_rlock_try(struct rwlock *rw, struct thread *td, uintptr_t *vp,
More information about the svn-src-head
mailing list