Module Name: src Committed By: ozaki-r Date: Tue Aug 14 01:09:53 UTC 2018
Modified Files: src/sys/kern: kern_mutex.c kern_rwlock.c Log Message: Check pserialize_not_in_read_section for adaptive mutexes and rwlocks The overhead of the checks is not negligible so they're turned on only if both DEBUG and LOCKDEBUG are enabled. To generate a diff of this commit: cvs rdiff -u -r1.73 -r1.74 src/sys/kern/kern_mutex.c cvs rdiff -u -r1.50 -r1.51 src/sys/kern/kern_rwlock.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/kern_mutex.c diff -u src/sys/kern/kern_mutex.c:1.73 src/sys/kern/kern_mutex.c:1.74 --- src/sys/kern/kern_mutex.c:1.73 Sun Feb 25 18:54:29 2018 +++ src/sys/kern/kern_mutex.c Tue Aug 14 01:09:53 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_mutex.c,v 1.73 2018/02/25 18:54:29 chs Exp $ */ +/* $NetBSD: kern_mutex.c,v 1.74 2018/08/14 01:09:53 ozaki-r Exp $ */ /*- * Copyright (c) 2002, 2006, 2007, 2008 The NetBSD Foundation, Inc. @@ -40,7 +40,7 @@ #define __MUTEX_PRIVATE #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_mutex.c,v 1.73 2018/02/25 18:54:29 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_mutex.c,v 1.74 2018/08/14 01:09:53 ozaki-r Exp $"); #include <sys/param.h> #include <sys/atomic.h> @@ -55,6 +55,7 @@ __KERNEL_RCSID(0, "$NetBSD: kern_mutex.c #include <sys/lock.h> #include <sys/types.h> #include <sys/cpu.h> +#include <sys/pserialize.h> #include <dev/lockstat.h> @@ -523,6 +524,7 @@ mutex_vector_enter(kmutex_t *mtx) MUTEX_ASSERT(mtx, curthread != 0); MUTEX_ASSERT(mtx, !cpu_intr_p()); MUTEX_WANTLOCK(mtx); + KDASSERT(pserialize_not_in_read_section()); if (panicstr == NULL) { LOCKDEBUG_BARRIER(&kernel_lock, 1); Index: src/sys/kern/kern_rwlock.c diff -u src/sys/kern/kern_rwlock.c:1.50 src/sys/kern/kern_rwlock.c:1.51 --- src/sys/kern/kern_rwlock.c:1.50 Mon Feb 5 04:25:04 2018 +++ src/sys/kern/kern_rwlock.c Tue Aug 14 01:09:53 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_rwlock.c,v 1.50 2018/02/05 04:25:04 ozaki-r Exp $ */ +/* $NetBSD: kern_rwlock.c,v 1.51 2018/08/14 01:09:53 ozaki-r Exp $ */ /*- * Copyright (c) 2002, 2006, 2007, 2008, 2009 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_rwlock.c,v 1.50 2018/02/05 04:25:04 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_rwlock.c,v 1.51 2018/08/14 01:09:53 ozaki-r Exp $"); #define __RWLOCK_PRIVATE @@ -52,6 +52,7 @@ __KERNEL_RCSID(0, "$NetBSD: kern_rwlock. #include <sys/cpu.h> #include <sys/atomic.h> #include <sys/lock.h> +#include <sys/pserialize.h> #include <dev/lockstat.h> @@ -289,6 +290,7 @@ rw_vector_enter(krwlock_t *rw, const krw RW_ASSERT(rw, !cpu_intr_p()); RW_ASSERT(rw, curthread != 0); RW_WANTLOCK(rw, op); + KDASSERT(pserialize_not_in_read_section()); if (panicstr == NULL) { LOCKDEBUG_BARRIER(&kernel_lock, 1);