Date: Sun, 2 Jul 2017 01:05:16 +0000 (UTC) From: Mateusz Guzik <mjg@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r320561 - head/sys/kern Message-ID: <201707020105.v6215GJO012718@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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,
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201707020105.v6215GJO012718>