Module Name:    src
Committed By:   pooka
Date:           Sat Apr 27 16:32:58 UTC 2013

Modified Files:
        src/lib/librumpuser: rumpuser_pth.c rumpuser_pth_dummy.c
        src/sys/rump/include/rump: rumpuser.h
        src/sys/rump/librump/rumpkern: intr.c locks.c ltsleep.c rump.c
            scheduler.c threads.c

Log Message:
roll mutex init hypercalls into one (one of them already took a flag anyway)


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/lib/librumpuser/rumpuser_pth.c
cvs rdiff -u -r1.9 -r1.10 src/lib/librumpuser/rumpuser_pth_dummy.c
cvs rdiff -u -r1.83 -r1.84 src/sys/rump/include/rump/rumpuser.h
cvs rdiff -u -r1.36 -r1.37 src/sys/rump/librump/rumpkern/intr.c
cvs rdiff -u -r1.56 -r1.57 src/sys/rump/librump/rumpkern/locks.c
cvs rdiff -u -r1.29 -r1.30 src/sys/rump/librump/rumpkern/ltsleep.c
cvs rdiff -u -r1.260 -r1.261 src/sys/rump/librump/rumpkern/rump.c
cvs rdiff -u -r1.30 -r1.31 src/sys/rump/librump/rumpkern/scheduler.c
cvs rdiff -u -r1.18 -r1.19 src/sys/rump/librump/rumpkern/threads.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/librumpuser/rumpuser_pth.c
diff -u src/lib/librumpuser/rumpuser_pth.c:1.14 src/lib/librumpuser/rumpuser_pth.c:1.15
--- src/lib/librumpuser/rumpuser_pth.c:1.14	Sat Apr 27 14:59:08 2013
+++ src/lib/librumpuser/rumpuser_pth.c	Sat Apr 27 16:32:58 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rumpuser_pth.c,v 1.14 2013/04/27 14:59:08 pooka Exp $	*/
+/*	$NetBSD: rumpuser_pth.c,v 1.15 2013/04/27 16:32:58 pooka Exp $	*/
 
 /*
  * Copyright (c) 2007-2010 Antti Kantee.  All Rights Reserved.
@@ -28,7 +28,7 @@
 #include "rumpuser_port.h"
 
 #if !defined(lint)
-__RCSID("$NetBSD: rumpuser_pth.c,v 1.14 2013/04/27 14:59:08 pooka Exp $");
+__RCSID("$NetBSD: rumpuser_pth.c,v 1.15 2013/04/27 16:32:58 pooka Exp $");
 #endif /* !lint */
 
 #include <assert.h>
@@ -58,8 +58,6 @@ do {									\
 	}								\
 } while (/*CONSTCOND*/0)
 
-#define MTX_KMUTEX 0x1
-#define MTX_ISSPIN 0x2
 struct rumpuser_mtx {
 	pthread_mutex_t pthmtx;
 	struct lwp *owner;
@@ -252,7 +250,7 @@ rumpuser_thread_join(void *ptcookie)
 }
 
 void
-rumpuser_mutex_init(struct rumpuser_mtx **mtx)
+rumpuser_mutex_init(struct rumpuser_mtx **mtx, int flags)
 {
 	pthread_mutexattr_t att;
 
@@ -264,22 +262,15 @@ rumpuser_mutex_init(struct rumpuser_mtx 
 	pthread_mutexattr_destroy(&att);
 
 	(*mtx)->owner = NULL;
-	(*mtx)->flags = MTX_ISSPIN;
-}
-
-void
-rumpuser_mutex_init_kmutex(struct rumpuser_mtx **mtx, int isspin)
-{
-
-	rumpuser_mutex_init(mtx);
-	(*mtx)->flags = MTX_KMUTEX | (isspin ? MTX_ISSPIN : 0);
+	assert(flags != 0);
+	(*mtx)->flags = flags;
 }
 
 static void
 mtxenter(struct rumpuser_mtx *mtx)
 {
 
-	if (!(mtx->flags & MTX_KMUTEX))
+	if (!(mtx->flags & RUMPUSER_MTX_KMUTEX))
 		return;
 
 	assert(mtx->owner == NULL);
@@ -290,7 +281,7 @@ static void
 mtxexit(struct rumpuser_mtx *mtx)
 {
 
-	if (!(mtx->flags & MTX_KMUTEX))
+	if (!(mtx->flags & RUMPUSER_MTX_KMUTEX))
 		return;
 
 	assert(mtx->owner != NULL);
@@ -301,11 +292,12 @@ void
 rumpuser_mutex_enter(struct rumpuser_mtx *mtx)
 {
 
-	if (mtx->flags & MTX_ISSPIN) {
+	if (mtx->flags & RUMPUSER_MTX_SPIN) {
 		rumpuser_mutex_enter_nowrap(mtx);
 		return;
 	}
 
+	assert(mtx->flags & RUMPUSER_MTX_KMUTEX);
 	if (pthread_mutex_trylock(&mtx->pthmtx) != 0)
 		KLOCK_WRAP(NOFAIL_ERRNO(pthread_mutex_lock(&mtx->pthmtx)));
 	mtxenter(mtx);
@@ -315,7 +307,7 @@ void
 rumpuser_mutex_enter_nowrap(struct rumpuser_mtx *mtx)
 {
 
-	assert(mtx->flags & MTX_ISSPIN);
+	assert(mtx->flags & RUMPUSER_MTX_SPIN);
 	NOFAIL_ERRNO(pthread_mutex_lock(&mtx->pthmtx));
 	mtxenter(mtx);
 }
@@ -353,7 +345,7 @@ struct lwp *
 rumpuser_mutex_owner(struct rumpuser_mtx *mtx)
 {
 
-	if (__predict_false(!(mtx->flags & MTX_KMUTEX))) {
+	if (__predict_false(!(mtx->flags & RUMPUSER_MTX_KMUTEX))) {
 		printf("panic: rumpuser_mutex_held unsupported on non-kmtx\n");
 		abort();
 	}

Index: src/lib/librumpuser/rumpuser_pth_dummy.c
diff -u src/lib/librumpuser/rumpuser_pth_dummy.c:1.9 src/lib/librumpuser/rumpuser_pth_dummy.c:1.10
--- src/lib/librumpuser/rumpuser_pth_dummy.c:1.9	Sat Apr 27 14:59:08 2013
+++ src/lib/librumpuser/rumpuser_pth_dummy.c	Sat Apr 27 16:32:58 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rumpuser_pth_dummy.c,v 1.9 2013/04/27 14:59:08 pooka Exp $	*/
+/*	$NetBSD: rumpuser_pth_dummy.c,v 1.10 2013/04/27 16:32:58 pooka Exp $	*/
 
 /*
  * Copyright (c) 2009 Antti Kantee.  All Rights Reserved.
@@ -29,7 +29,7 @@
 
 #include <sys/cdefs.h>
 #if !defined(lint)
-__RCSID("$NetBSD: rumpuser_pth_dummy.c,v 1.9 2013/04/27 14:59:08 pooka Exp $");
+__RCSID("$NetBSD: rumpuser_pth_dummy.c,v 1.10 2013/04/27 16:32:58 pooka Exp $");
 #endif /* !lint */
 
 #include <sys/time.h>
@@ -99,14 +99,7 @@ rumpuser_thread_exit(void)
 }
 
 void
-rumpuser_mutex_init(struct rumpuser_mtx **mtx)
-{
-
-	*mtx = calloc(1, sizeof(struct rumpuser_mtx));
-}
-
-void
-rumpuser_mutex_init_kmutex(struct rumpuser_mtx **mtx, int isspin)
+rumpuser_mutex_init(struct rumpuser_mtx **mtx, int flgas)
 {
 
 	*mtx = calloc(1, sizeof(struct rumpuser_mtx));

Index: src/sys/rump/include/rump/rumpuser.h
diff -u src/sys/rump/include/rump/rumpuser.h:1.83 src/sys/rump/include/rump/rumpuser.h:1.84
--- src/sys/rump/include/rump/rumpuser.h:1.83	Sat Apr 27 16:05:54 2013
+++ src/sys/rump/include/rump/rumpuser.h	Sat Apr 27 16:32:56 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rumpuser.h,v 1.83 2013/04/27 16:05:54 pooka Exp $	*/
+/*	$NetBSD: rumpuser.h,v 1.84 2013/04/27 16:32:56 pooka Exp $	*/
 
 /*
  * Copyright (c) 2007-2011 Antti Kantee.  All Rights Reserved.
@@ -135,8 +135,9 @@ void rumpuser_set_curlwp(struct lwp *);
 struct lwp *rumpuser_get_curlwp(void);
 
 struct rumpuser_mtx;
-void rumpuser_mutex_init(struct rumpuser_mtx **);
-void rumpuser_mutex_init_kmutex(struct rumpuser_mtx **, int);
+#define RUMPUSER_MTX_SPIN	0x01
+#define RUMPUSER_MTX_KMUTEX 	0x02
+void rumpuser_mutex_init(struct rumpuser_mtx **, int);
 void rumpuser_mutex_enter(struct rumpuser_mtx *);
 void rumpuser_mutex_enter_nowrap(struct rumpuser_mtx *);
 int  rumpuser_mutex_tryenter(struct rumpuser_mtx *);

Index: src/sys/rump/librump/rumpkern/intr.c
diff -u src/sys/rump/librump/rumpkern/intr.c:1.36 src/sys/rump/librump/rumpkern/intr.c:1.37
--- src/sys/rump/librump/rumpkern/intr.c:1.36	Mon Mar 21 16:41:08 2011
+++ src/sys/rump/librump/rumpkern/intr.c	Sat Apr 27 16:32:57 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.c,v 1.36 2011/03/21 16:41:08 pooka Exp $	*/
+/*	$NetBSD: intr.c,v 1.37 2013/04/27 16:32:57 pooka Exp $	*/
 
 /*
  * Copyright (c) 2008-2010 Antti Kantee.  All Rights Reserved.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.36 2011/03/21 16:41:08 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.37 2013/04/27 16:32:57 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -117,7 +117,7 @@ doclock(void *noarg)
 
 	/* XXX: dummies */
 	rumpuser_cv_init(&clockcv);
-	rumpuser_mutex_init(&clockmtx);
+	rumpuser_mutex_init(&clockmtx, RUMPUSER_MTX_SPIN);
 
 	rumpuser_mutex_enter_nowrap(clockmtx);
 	for (;;) {

Index: src/sys/rump/librump/rumpkern/locks.c
diff -u src/sys/rump/librump/rumpkern/locks.c:1.56 src/sys/rump/librump/rumpkern/locks.c:1.57
--- src/sys/rump/librump/rumpkern/locks.c:1.56	Sat Apr 27 13:59:46 2013
+++ src/sys/rump/librump/rumpkern/locks.c	Sat Apr 27 16:32:57 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: locks.c,v 1.56 2013/04/27 13:59:46 pooka Exp $	*/
+/*	$NetBSD: locks.c,v 1.57 2013/04/27 16:32:57 pooka Exp $	*/
 
 /*
  * Copyright (c) 2007-2011 Antti Kantee.  All Rights Reserved.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: locks.c,v 1.56 2013/04/27 13:59:46 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: locks.c,v 1.57 2013/04/27 16:32:57 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/kmem.h>
@@ -90,8 +90,11 @@ static lockops_t rw_lockops = {
 void
 mutex_init(kmutex_t *mtx, kmutex_type_t type, int ipl)
 {
+	int ruflags = RUMPUSER_MTX_KMUTEX;
 	int isspin;
 
+	CTASSERT(sizeof(kmutex_t) >= sizeof(void *));
+
 	/*
 	 * Try to figure out if the caller wanted a spin mutex or
 	 * not with this easy set of conditionals.  The difference
@@ -110,9 +113,9 @@ mutex_init(kmutex_t *mtx, kmutex_type_t 
 		isspin = 1;
 	}
 
-	CTASSERT(sizeof(kmutex_t) >= sizeof(void *));
-
-	rumpuser_mutex_init_kmutex((struct rumpuser_mtx **)mtx, isspin);
+	if (isspin)
+		ruflags |= RUMPUSER_MTX_SPIN;
+	rumpuser_mutex_init((struct rumpuser_mtx **)mtx, ruflags);
 	ALLOCK(mtx, &mutex_lockops);
 }
 

Index: src/sys/rump/librump/rumpkern/ltsleep.c
diff -u src/sys/rump/librump/rumpkern/ltsleep.c:1.29 src/sys/rump/librump/rumpkern/ltsleep.c:1.30
--- src/sys/rump/librump/rumpkern/ltsleep.c:1.29	Sat Jan 28 12:22:33 2012
+++ src/sys/rump/librump/rumpkern/ltsleep.c	Sat Apr 27 16:32:57 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: ltsleep.c,v 1.29 2012/01/28 12:22:33 rmind Exp $	*/
+/*	$NetBSD: ltsleep.c,v 1.30 2013/04/27 16:32:57 pooka Exp $	*/
 
 /*
  * Copyright (c) 2009, 2010 Antti Kantee.  All Rights Reserved.
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ltsleep.c,v 1.29 2012/01/28 12:22:33 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ltsleep.c,v 1.30 2013/04/27 16:32:57 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -174,5 +174,5 @@ void
 rump_tsleep_init()
 {
 
-	rumpuser_mutex_init(&qlock);
+	rumpuser_mutex_init(&qlock, RUMPUSER_MTX_SPIN);
 }

Index: src/sys/rump/librump/rumpkern/rump.c
diff -u src/sys/rump/librump/rumpkern/rump.c:1.260 src/sys/rump/librump/rumpkern/rump.c:1.261
--- src/sys/rump/librump/rumpkern/rump.c:1.260	Sat Apr 27 16:02:56 2013
+++ src/sys/rump/librump/rumpkern/rump.c	Sat Apr 27 16:32:57 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rump.c,v 1.260 2013/04/27 16:02:56 pooka Exp $	*/
+/*	$NetBSD: rump.c,v 1.261 2013/04/27 16:32:57 pooka Exp $	*/
 
 /*
  * Copyright (c) 2007-2011 Antti Kantee.  All Rights Reserved.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rump.c,v 1.260 2013/04/27 16:02:56 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rump.c,v 1.261 2013/04/27 16:32:57 pooka Exp $");
 
 #include <sys/systm.h>
 #define ELFSIZE ARCH_ELFSIZE
@@ -291,7 +291,7 @@ rump_init(void)
 	l->l_fd = &filedesc0;
 	rumpuser_set_curlwp(l);
 
-	rumpuser_mutex_init(&rump_giantlock);
+	rumpuser_mutex_init(&rump_giantlock, RUMPUSER_MTX_SPIN);
 	ksyms_init();
 	uvm_init();
 	evcnt_init();

Index: src/sys/rump/librump/rumpkern/scheduler.c
diff -u src/sys/rump/librump/rumpkern/scheduler.c:1.30 src/sys/rump/librump/rumpkern/scheduler.c:1.31
--- src/sys/rump/librump/rumpkern/scheduler.c:1.30	Tue Nov 13 20:10:02 2012
+++ src/sys/rump/librump/rumpkern/scheduler.c	Sat Apr 27 16:32:57 2013
@@ -1,4 +1,4 @@
-/*      $NetBSD: scheduler.c,v 1.30 2012/11/13 20:10:02 pooka Exp $	*/
+/*      $NetBSD: scheduler.c,v 1.31 2013/04/27 16:32:57 pooka Exp $	*/
 
 /*
  * Copyright (c) 2010, 2011 Antti Kantee.  All Rights Reserved.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: scheduler.c,v 1.30 2012/11/13 20:10:02 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: scheduler.c,v 1.31 2013/04/27 16:32:57 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -158,7 +158,7 @@ rump_scheduler_init(int numcpu)
 	struct cpu_info *ci;
 	int i;
 
-	rumpuser_mutex_init(&lwp0mtx);
+	rumpuser_mutex_init(&lwp0mtx, RUMPUSER_MTX_SPIN);
 	rumpuser_cv_init(&lwp0cv);
 	for (i = 0; i < numcpu; i++) {
 		rcpu = &rcpu_storage[i];
@@ -169,7 +169,7 @@ rump_scheduler_init(int numcpu)
 		ci->ci_schedstate.spc_flags = SPCF_RUNNING;
 		rcpu->rcpu_wanted = 0;
 		rumpuser_cv_init(&rcpu->rcpu_cv);
-		rumpuser_mutex_init(&rcpu->rcpu_mtx);
+		rumpuser_mutex_init(&rcpu->rcpu_mtx, RUMPUSER_MTX_SPIN);
 	}
 
 	mutex_init(&unruntime_lock, MUTEX_DEFAULT, IPL_NONE);

Index: src/sys/rump/librump/rumpkern/threads.c
diff -u src/sys/rump/librump/rumpkern/threads.c:1.18 src/sys/rump/librump/rumpkern/threads.c:1.19
--- src/sys/rump/librump/rumpkern/threads.c:1.18	Sun Mar 10 16:51:31 2013
+++ src/sys/rump/librump/rumpkern/threads.c	Sat Apr 27 16:32:57 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: threads.c,v 1.18 2013/03/10 16:51:31 pooka Exp $	*/
+/*	$NetBSD: threads.c,v 1.19 2013/04/27 16:32:57 pooka Exp $	*/
 
 /*
  * Copyright (c) 2007-2009 Antti Kantee.  All Rights Reserved.
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: threads.c,v 1.18 2013/03/10 16:51:31 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: threads.c,v 1.19 2013/04/27 16:32:57 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -91,7 +91,7 @@ void
 rump_thread_init(void)
 {
 
-	rumpuser_mutex_init(&thrmtx);
+	rumpuser_mutex_init(&thrmtx, RUMPUSER_MTX_SPIN);
 	rumpuser_cv_init(&thrcv);
 }
 

Reply via email to