I'd like to keep all locking code in the same file then slowly remove
the abstractions.

ok?

Index: kern/kern_lock.c
===================================================================
RCS file: /cvs/src/sys/kern/kern_lock.c,v
retrieving revision 1.56
diff -u -p -r1.56 kern_lock.c
--- kern/kern_lock.c    10 Feb 2018 12:59:24 -0000      1.56
+++ kern/kern_lock.c    10 Feb 2018 13:02:15 -0000
@@ -1,6 +1,7 @@
 /*     $OpenBSD: kern_lock.c,v 1.56 2018/02/10 12:59:24 mpi Exp $      */
 
 /*
+ * Copyright (c) 2017 Visa Hankala
  * Copyright (c) 2014 David Gwynne <d...@openbsd.org>
  * Copyright (c) 2004 Artur Grabowski <a...@openbsd.org>
  *
@@ -350,3 +351,52 @@ __mtx_leave(struct mutex *mtx)
                splx(s);
 }
 #endif /* __USE_MI_MUTEX */
+
+#ifdef WITNESS
+void
+_mtx_init_flags(struct mutex *m, int ipl, const char *name, int flags,
+    struct lock_type *type)
+{
+       struct lock_object *lo = MUTEX_LOCK_OBJECT(m);
+
+       lo->lo_flags = MTX_LO_FLAGS(flags);
+       if (name != NULL)
+               lo->lo_name = name;
+       else
+               lo->lo_name = type->lt_name;
+       WITNESS_INIT(lo, type);
+
+       _mtx_init(m, ipl);
+}
+
+void
+_mtx_enter(struct mutex *m, const char *file, int line)
+{
+       struct lock_object *lo = MUTEX_LOCK_OBJECT(m);
+
+       WITNESS_CHECKORDER(lo, LOP_EXCLUSIVE | LOP_NEWORDER, file, line, NULL);
+       __mtx_enter(m);
+       WITNESS_LOCK(lo, LOP_EXCLUSIVE, file, line);
+}
+
+int
+_mtx_enter_try(struct mutex *m, const char *file, int line)
+{
+       struct lock_object *lo = MUTEX_LOCK_OBJECT(m);
+
+       if (__mtx_enter_try(m)) {
+               WITNESS_LOCK(lo, LOP_EXCLUSIVE, file, line);
+               return 1;
+       }
+       return 0;
+}
+
+void
+_mtx_leave(struct mutex *m, const char *file, int line)
+{
+       struct lock_object *lo = MUTEX_LOCK_OBJECT(m);
+
+       WITNESS_UNLOCK(lo, LOP_EXCLUSIVE, file, line);
+       __mtx_leave(m);
+}
+#endif /* WITNESS */
Index: kern/kern_mutex.c
===================================================================
RCS file: kern/kern_mutex.c
diff -N kern/kern_mutex.c
--- kern/kern_mutex.c   20 Apr 2017 13:57:30 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,69 +0,0 @@
-/*     $OpenBSD: kern_mutex.c,v 1.1 2017/04/20 13:57:30 visa Exp $     */
-
-/*
- * Copyright (c) 2017 Visa Hankala
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/mutex.h>
-#include <sys/witness.h>
-
-void
-_mtx_init_flags(struct mutex *m, int ipl, const char *name, int flags,
-    struct lock_type *type)
-{
-       struct lock_object *lo = MUTEX_LOCK_OBJECT(m);
-
-       lo->lo_flags = MTX_LO_FLAGS(flags);
-       if (name != NULL)
-               lo->lo_name = name;
-       else
-               lo->lo_name = type->lt_name;
-       WITNESS_INIT(lo, type);
-
-       _mtx_init(m, ipl);
-}
-
-void
-_mtx_enter(struct mutex *m, const char *file, int line)
-{
-       struct lock_object *lo = MUTEX_LOCK_OBJECT(m);
-
-       WITNESS_CHECKORDER(lo, LOP_EXCLUSIVE | LOP_NEWORDER, file, line, NULL);
-       __mtx_enter(m);
-       WITNESS_LOCK(lo, LOP_EXCLUSIVE, file, line);
-}
-
-int
-_mtx_enter_try(struct mutex *m, const char *file, int line)
-{
-       struct lock_object *lo = MUTEX_LOCK_OBJECT(m);
-
-       if (__mtx_enter_try(m)) {
-               WITNESS_LOCK(lo, LOP_EXCLUSIVE, file, line);
-               return 1;
-       }
-       return 0;
-}
-
-void
-_mtx_leave(struct mutex *m, const char *file, int line)
-{
-       struct lock_object *lo = MUTEX_LOCK_OBJECT(m);
-
-       WITNESS_UNLOCK(lo, LOP_EXCLUSIVE, file, line);
-       __mtx_leave(m);
-}
Index: conf/files
===================================================================
RCS file: /cvs/src/sys/conf/files,v
retrieving revision 1.658
diff -u -p -r1.658 files
--- conf/files  7 Feb 2018 01:09:57 -0000       1.658
+++ conf/files  10 Feb 2018 13:02:17 -0000
@@ -671,7 +671,6 @@ file kern/kern_kthread.c
 file kern/kern_ktrace.c                        ktrace
 file kern/kern_lock.c
 file kern/kern_malloc.c
-file kern/kern_mutex.c                 witness
 file kern/kern_rwlock.c
 file kern/kern_physio.c
 file kern/kern_proc.c

Reply via email to