diff --git a/sys/rump/include/machine/intr.h b/sys/rump/include/machine/intr.h index 6827e71fc8c6..3ff0f6abd23e 100644 --- a/sys/rump/include/machine/intr.h +++ b/sys/rump/include/machine/intr.h @@ -1,4 +1,4 @@ -/* $NetBSD: intr.h,v 1.15 2009/01/24 12:34:04 he Exp $ */ +/* $NetBSD: intr.h,v 1.16 2009/02/06 20:01:41 pooka Exp $ */ /* * Copyright (c) 2007 Antti Kantee. All Rights Reserved. @@ -49,17 +49,14 @@ ipl_cookie_t makeiplcookie(ipl_t ipl) #endif /* !_LOCORE */ -int rump_splfoo(void); -void rump_splx(int); - -#define spllower(x) ((void)0) +#define spllower(x) ((void)x) #define splraise(x) 0 -#define splsoftnet() rump_splfoo() -#define splsoftclock() rump_splfoo() -#define splhigh() rump_splfoo() -#define splsched() rump_splfoo() -#define splvm() rump_splfoo() -#define splx(x) rump_splx(x) +#define splsoftnet() 0 +#define splsoftclock() 0 +#define splhigh() 0 +#define splsched() 0 +#define splvm() 0 +#define splx(x) ((void)x) #define spl0() ((void)0) #define IPL_NONE 0 diff --git a/sys/rump/include/rump/rump.h b/sys/rump/include/rump/rump.h index 1c80f2e4ced2..b6d32d70d92d 100644 --- a/sys/rump/include/rump/rump.h +++ b/sys/rump/include/rump/rump.h @@ -1,4 +1,4 @@ -/* $NetBSD: rump.h,v 1.6 2009/01/08 03:27:10 pooka Exp $ */ +/* $NetBSD: rump.h,v 1.7 2009/02/06 20:01:41 pooka Exp $ */ /* * Copyright (c) 2007 Antti Kantee. All Rights Reserved. @@ -136,11 +136,6 @@ void rump_clear_curlwp(void); void rump_rcvp_set(struct vnode *, struct vnode *); struct vnode *rump_cdir_get(void); -void rump_intr_enter(void); -void rump_intr_exit(void); -int rump_splfoo(void); -void rump_splx(int); - /* I picked the wrong header to stop sniffin' glue */ int rump_syspuffs_glueinit(int, int *); diff --git a/sys/rump/include/rump/rumpuser.h b/sys/rump/include/rump/rumpuser.h index 99d0b2bcbd40..fd8e013f46ea 100644 --- a/sys/rump/include/rump/rumpuser.h +++ b/sys/rump/include/rump/rumpuser.h @@ -1,4 +1,4 @@ -/* $NetBSD: rumpuser.h,v 1.13 2009/01/27 09:14:01 pooka Exp $ */ +/* $NetBSD: rumpuser.h,v 1.14 2009/02/06 20:01:41 pooka Exp $ */ /* * Copyright (c) 2007 Antti Kantee. All Rights Reserved. @@ -145,15 +145,6 @@ extern struct rumpuser_cv rumpuser_aio_cv; extern struct rumpuser_aio rumpuser_aios[N_AIOS]; extern int rumpuser_aio_head, rumpuser_aio_tail; -extern struct rumpuser_rw rumpspl; - -#define RUMPUSER_IPL_SPLFOO 1 -#define RUMPUSER_IPL_INTR (-1) - -void rumpuser_set_ipl(int); -int rumpuser_whatis_ipl(void); -void rumpuser_clear_ipl(int); - /* rumpuser_net */ int rumpuser_net_socket(int, int, int, int *); diff --git a/sys/rump/librump/rumpkern/arch/i386/rumpspl.c b/sys/rump/librump/rumpkern/arch/i386/rumpspl.c index 662da949b4ce..7e3a97132968 100644 --- a/sys/rump/librump/rumpkern/arch/i386/rumpspl.c +++ b/sys/rump/librump/rumpkern/arch/i386/rumpspl.c @@ -1,4 +1,4 @@ -/* $NetBSD: rumpspl.c,v 1.1 2009/01/01 16:50:30 pooka Exp $ */ +/* $NetBSD: rumpspl.c,v 1.2 2009/02/06 20:01:41 pooka Exp $ */ /* * Copyright (c) 2008 Antti Kantee. All Rights Reserved. @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: rumpspl.c,v 1.1 2009/01/01 16:50:30 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rumpspl.c,v 1.2 2009/02/06 20:01:41 pooka Exp $"); #include @@ -41,12 +41,11 @@ void spllower(int s) { - rump_splx(s); } int splraise(int s) { - return rump_splfoo(); + return 0; } diff --git a/sys/rump/librump/rumpkern/ltsleep.c b/sys/rump/librump/rumpkern/ltsleep.c index 57f44ac01d2e..5130dbc3a694 100644 --- a/sys/rump/librump/rumpkern/ltsleep.c +++ b/sys/rump/librump/rumpkern/ltsleep.c @@ -1,4 +1,4 @@ -/* $NetBSD: ltsleep.c,v 1.9 2008/12/18 00:24:12 pooka Exp $ */ +/* $NetBSD: ltsleep.c,v 1.10 2009/02/06 20:01:41 pooka Exp $ */ /* * Copyright (c) 2007 Antti Kantee. All Rights Reserved. @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ltsleep.c,v 1.9 2008/12/18 00:24:12 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ltsleep.c,v 1.10 2009/02/06 20:01:41 pooka Exp $"); #include #include @@ -56,7 +56,6 @@ ltsleep(wchan_t ident, pri_t prio, const char *wmesg, int timo, volatile struct simplelock *slock) { struct ltsleeper lts; - int iplrecurse; if (__predict_false(slock)) panic("simplelock not supported by rump, convert code"); @@ -67,19 +66,9 @@ ltsleep(wchan_t ident, pri_t prio, const char *wmesg, int timo, mutex_enter(&sleepermtx); LIST_INSERT_HEAD(&sleepers, <s, entries); - /* release spl */ - iplrecurse = rumpuser_whatis_ipl(); - while (iplrecurse--) - rumpuser_rw_exit(&rumpspl); - /* protected by sleepermtx */ cv_wait(<s.cv, &sleepermtx); - /* retake ipl */ - iplrecurse = rumpuser_whatis_ipl(); - while (iplrecurse--) - rumpuser_rw_enter(&rumpspl, 0); - LIST_REMOVE(<s, entries); mutex_exit(&sleepermtx); @@ -93,7 +82,6 @@ mtsleep(wchan_t ident, pri_t prio, const char *wmesg, int timo, kmutex_t *lock) { struct ltsleeper lts; - int iplrecurse; lts.id = ident; cv_init(<s.cv, NULL); @@ -101,20 +89,10 @@ mtsleep(wchan_t ident, pri_t prio, const char *wmesg, int timo, mutex_enter(&sleepermtx); LIST_INSERT_HEAD(&sleepers, <s, entries); - /* release spl */ - iplrecurse = rumpuser_whatis_ipl(); - while (iplrecurse--) - rumpuser_rw_exit(&rumpspl); - /* protected by sleepermtx */ mutex_exit(lock); cv_wait(<s.cv, &sleepermtx); - /* retake ipl */ - iplrecurse = rumpuser_whatis_ipl(); - while (iplrecurse--) - rumpuser_rw_enter(&rumpspl, 0); - LIST_REMOVE(<s, entries); mutex_exit(&sleepermtx); diff --git a/sys/rump/librump/rumpkern/rump.c b/sys/rump/librump/rumpkern/rump.c index e96483d5bb43..5532e8b07d56 100644 --- a/sys/rump/librump/rumpkern/rump.c +++ b/sys/rump/librump/rumpkern/rump.c @@ -1,4 +1,4 @@ -/* $NetBSD: rump.c,v 1.92 2009/02/06 19:49:13 pooka Exp $ */ +/* $NetBSD: rump.c,v 1.93 2009/02/06 20:01:41 pooka Exp $ */ /* * Copyright (c) 2007 Antti Kantee. All Rights Reserved. @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: rump.c,v 1.92 2009/02/06 19:49:13 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rump.c,v 1.93 2009/02/06 20:01:41 pooka Exp $"); #include #include @@ -350,44 +350,6 @@ rump_get_curlwp() return l; } -int -rump_splfoo() -{ - - if (rumpuser_whatis_ipl() != RUMPUSER_IPL_INTR) { - rumpuser_rw_enter(&rumpspl, 0); - rumpuser_set_ipl(RUMPUSER_IPL_SPLFOO); - } - - return 0; -} - -void -rump_intr_enter(void) -{ - - rumpuser_set_ipl(RUMPUSER_IPL_INTR); - rumpuser_rw_enter(&rumpspl, 1); -} - -void -rump_intr_exit(void) -{ - - rumpuser_rw_exit(&rumpspl); - rumpuser_clear_ipl(RUMPUSER_IPL_INTR); -} - -void -rump_splx(int dummy) -{ - - if (rumpuser_whatis_ipl() != RUMPUSER_IPL_INTR) { - rumpuser_clear_ipl(RUMPUSER_IPL_SPLFOO); - rumpuser_rw_exit(&rumpspl); - } -} - kauth_cred_t rump_cred_create(uid_t uid, gid_t gid, size_t ngroups, gid_t *groups) { diff --git a/sys/rump/librump/rumpuser/rumpuser_pth.c b/sys/rump/librump/rumpuser/rumpuser_pth.c index 825934a09bf0..a5dfbc1b2d8c 100644 --- a/sys/rump/librump/rumpuser/rumpuser_pth.c +++ b/sys/rump/librump/rumpuser/rumpuser_pth.c @@ -1,4 +1,4 @@ -/* $NetBSD: rumpuser_pth.c,v 1.26 2009/01/27 09:14:01 pooka Exp $ */ +/* $NetBSD: rumpuser_pth.c,v 1.27 2009/02/06 20:01:41 pooka Exp $ */ /* * Copyright (c) 2007 Antti Kantee. All Rights Reserved. @@ -30,7 +30,7 @@ #include #if !defined(lint) -__RCSID("$NetBSD: rumpuser_pth.c,v 1.26 2009/01/27 09:14:01 pooka Exp $"); +__RCSID("$NetBSD: rumpuser_pth.c,v 1.27 2009/02/06 20:01:41 pooka Exp $"); #endif /* !lint */ #ifdef __linux__ @@ -52,7 +52,6 @@ __RCSID("$NetBSD: rumpuser_pth.c,v 1.26 2009/01/27 09:14:01 pooka Exp $"); #include "rumpuser_int.h" static pthread_key_t curlwpkey; -static pthread_key_t isintr; #define NOFAIL(a) do {if (!(a)) abort();} while (/*CONSTCOND*/0) #define NOFAIL_ERRNO(a) \ @@ -120,8 +119,6 @@ struct rumpuser_cv rumpuser_aio_cv; int rumpuser_aio_head, rumpuser_aio_tail; struct rumpuser_aio rumpuser_aios[N_AIOS]; -struct rumpuser_rw rumpspl; - kernel_lockfn rumpuser__klock; kernel_unlockfn rumpuser__kunlock; int rumpuser__wantthreads; @@ -163,11 +160,8 @@ rumpuser_thrinit(kernel_lockfn lockfn, kernel_unlockfn unlockfn, int threads) pthread_mutex_init(&rumpuser_aio_mtx.pthmtx, NULL); pthread_cond_init(&rumpuser_aio_cv.pthcv, NULL); - pthread_rwlock_init(&rumpspl.pthrw, NULL); - pthread_spin_init(&rumpspl.spin, PTHREAD_PROCESS_SHARED); pthread_key_create(&curlwpkey, NULL); - pthread_key_create(&isintr, NULL); rumpuser__klock = lockfn; rumpuser__kunlock = unlockfn; @@ -483,41 +477,3 @@ rumpuser_get_curlwp() return pthread_getspecific(curlwpkey); } - -/* - * I am the interrupt - */ - -void -rumpuser_set_ipl(int what) -{ - int cur; - - if (what == RUMPUSER_IPL_INTR) { - pthread_setspecific(isintr, (void *)RUMPUSER_IPL_INTR); - } else { - cur = (int)(intptr_t)pthread_getspecific(isintr); - pthread_setspecific(isintr, (void *)(intptr_t)(cur+1)); - } -} - -int -rumpuser_whatis_ipl() -{ - - return (int)(intptr_t)pthread_getspecific(isintr); -} - -void -rumpuser_clear_ipl(int what) -{ - int cur; - - if (what == RUMPUSER_IPL_INTR) - cur = 1; - else - cur = (int)(intptr_t)pthread_getspecific(isintr); - cur--; - - pthread_setspecific(isintr, (void *)(intptr_t)cur); -} diff --git a/sys/rump/librump/rumpvfs/rump_vfs.c b/sys/rump/librump/rumpvfs/rump_vfs.c index 9e17c86726d7..f0d951779df1 100644 --- a/sys/rump/librump/rumpvfs/rump_vfs.c +++ b/sys/rump/librump/rumpvfs/rump_vfs.c @@ -1,4 +1,4 @@ -/* $NetBSD: rump_vfs.c,v 1.11 2009/01/13 11:40:55 pooka Exp $ */ +/* $NetBSD: rump_vfs.c,v 1.12 2009/02/06 20:01:41 pooka Exp $ */ /* * Copyright (c) 2008 Antti Kantee. All Rights Reserved. @@ -527,9 +527,7 @@ rump_biodone(void *arg, size_t count, int error) KASSERT(bp->b_resid >= 0); bp->b_error = error; - rump_intr_enter(); biodone(bp); - rump_intr_exit(); } static void