merge kern_mutex.c into kern_lock.c

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

merge kern_mutex.c into kern_lock.c

Martin Pieuchot
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 <[hidden email]>
  * Copyright (c) 2004 Artur Grabowski <[hidden email]>
  *
@@ -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