Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/kern mutex_vector_exit: if the arch doesn't have assembl...



details:   https://anonhg.NetBSD.org/src/rev/8967e7fbc4c5
branches:  trunk
changeset: 466096:8967e7fbc4c5
user:      ad <ad%NetBSD.org@localhost>
date:      Wed Dec 11 20:34:06 2019 +0000

description:
mutex_vector_exit: if the arch doesn't have assembly stubs, we need to
unconditionally release the lock if(cold), so mutexes can be used before
interrupts are set up.  Removed with panicstr checks in 1.81.

diffstat:

 sys/kern/kern_mutex.c |  12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diffs (33 lines):

diff -r 12e8c5029301 -r 8967e7fbc4c5 sys/kern/kern_mutex.c
--- a/sys/kern/kern_mutex.c     Wed Dec 11 20:19:27 2019 +0000
+++ b/sys/kern/kern_mutex.c     Wed Dec 11 20:34:06 2019 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: kern_mutex.c,v 1.84 2019/12/10 13:36:44 kre Exp $      */
+/*     $NetBSD: kern_mutex.c,v 1.85 2019/12/11 20:34:06 ad Exp $       */
 
 /*-
  * Copyright (c) 2002, 2006, 2007, 2008, 2019 The NetBSD Foundation, Inc.
@@ -40,7 +40,7 @@
 #define        __MUTEX_PRIVATE
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_mutex.c,v 1.84 2019/12/10 13:36:44 kre Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_mutex.c,v 1.85 2019/12/11 20:34:06 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -719,6 +719,14 @@
                return;
        }
 
+#ifndef __HAVE_MUTEX_STUBS
+       if (__predict_false(cold)) {
+               MUTEX_UNLOCKED(mtx);
+               MUTEX_RELEASE(mtx);
+               return;
+       }
+#endif
+
        curthread = (uintptr_t)curlwp;
        MUTEX_DASSERT(mtx, curthread != 0);
        MUTEX_ASSERT(mtx, MUTEX_OWNER(mtx->mtx_owner) == curthread);



Home | Main Index | Thread Index | Old Index