General cleanups as part of the libcaps userland threading work.
authorMatthew Dillon <dillon@dragonflybsd.org>
Thu, 4 Dec 2003 20:09:33 +0000 (20:09 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Thu, 4 Dec 2003 20:09:33 +0000 (20:09 +0000)
sys/cpu/i386/include/asmacros.h
sys/i386/i386/mplock.s
sys/i386/include/asmacros.h
sys/i386/include/lock.h
sys/kern/lwkt_msgport.c
sys/kern/lwkt_thread.c
sys/platform/pc32/i386/mplock.s
sys/platform/pc32/include/lock.h
sys/sys/upcall.h

index 6f4dbc2..4c42da1 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/include/asmacros.h,v 1.18 1999/08/28 00:44:06 peter Exp $
- * $DragonFly: src/sys/cpu/i386/include/asmacros.h,v 1.5 2003/07/20 04:20:32 dillon Exp $
+ * $DragonFly: src/sys/cpu/i386/include/asmacros.h,v 1.6 2003/12/04 20:09:33 dillon Exp $
  */
 
 #ifndef _MACHINE_ASMACROS_H_
 
 #include <sys/cdefs.h>
 
+#ifdef _KERNEL
+
 /*
  * Access to a per-cpu data element
  */
 #define PCPU(x) %fs:gd_ ## x
 
+#endif
+
 /*
  * CNAME and HIDENAME manage the relationship between symbol names in C
  * and the equivalent assembly language names.  CNAME is given a name as
index 32cda05..6967431 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * $FreeBSD: src/sys/i386/i386/mplock.s,v 1.29.2.2 2000/05/16 06:58:06 dillon Exp $
- * $DragonFly: src/sys/i386/i386/Attic/mplock.s,v 1.10 2003/09/25 23:49:03 dillon Exp $
+ * $DragonFly: src/sys/i386/i386/Attic/mplock.s,v 1.11 2003/12/04 20:09:31 dillon Exp $
  *
  * Copyright (c) 2003 Matthew Dillon <dillon@backplane.com>
  * All rights reserved.
@@ -263,13 +263,3 @@ bmpsw2:
 
 #endif
 
-#if 0
-/* after 1st acquire of lock we grab all hardware INTs */
-#ifdef GRAB_LOPRIO
-#define GRAB_HWI       movl    $ALLHWI_LEVEL, lapic_tpr
-
-/* after last release of lock give up LOW PRIO (ie, arbitrate INTerrupts) */
-#define ARB_HWI                movl    $LOPRIO_LEVEL, lapic_tpr /* CHEAP_TPR */
-#endif
-#endif
-
index d3c50d8..9fef2f6 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/include/asmacros.h,v 1.18 1999/08/28 00:44:06 peter Exp $
- * $DragonFly: src/sys/i386/include/Attic/asmacros.h,v 1.5 2003/07/20 04:20:32 dillon Exp $
+ * $DragonFly: src/sys/i386/include/Attic/asmacros.h,v 1.6 2003/12/04 20:09:33 dillon Exp $
  */
 
 #ifndef _MACHINE_ASMACROS_H_
 
 #include <sys/cdefs.h>
 
+#ifdef _KERNEL
+
 /*
  * Access to a per-cpu data element
  */
 #define PCPU(x) %fs:gd_ ## x
 
+#endif
+
 /*
  * CNAME and HIDENAME manage the relationship between symbol names in C
  * and the equivalent assembly language names.  CNAME is given a name as
index 5056ea3..ce79c96 100644 (file)
@@ -22,7 +22,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/include/lock.h,v 1.11.2.2 2000/09/30 02:49:34 ps Exp $
- * $DragonFly: src/sys/i386/include/Attic/lock.h,v 1.6 2003/08/07 21:17:22 dillon Exp $
+ * $DragonFly: src/sys/i386/include/Attic/lock.h,v 1.7 2003/12/04 20:09:33 dillon Exp $
  */
 
 #ifndef _MACHINE_LOCK_H_
@@ -166,6 +166,10 @@ spin_lock_init(spinlock_t lock)
        lock->opaque = 0;
 }
 
+#endif  /* _KERNEL */
+
+#if defined(_KERNEL) || defined(_UTHREAD)
+
 /*
  * MP LOCK functions for SMP and UP.  Under UP the MP lock does not exist
  * but we leave a few functions intact as macros for convenience.
@@ -176,9 +180,6 @@ void        get_mplock(void);
 int    try_mplock(void);
 void   rel_mplock(void);
 int    cpu_try_mplock(void);
-#if 0
-void   cpu_rel_mplock(void);
-#endif
 void   cpu_get_initial_mplock(void);
 
 extern u_int   mp_lock;
@@ -200,6 +201,6 @@ cpu_rel_mplock(void)
 #define ASSERT_MP_LOCK_HELD()
 
 #endif /* SMP */
-#endif  /* _KERNEL */
+#endif  /* _KERNEL || _UTHREAD */
 #endif /* LOCORE */
 #endif /* !_MACHINE_LOCK_H_ */
index 6f38f53..32133de 100644 (file)
@@ -26,7 +26,7 @@
  * NOTE! This file may be compiled for userland libraries as well as for
  * the kernel.
  *
- * $DragonFly: src/sys/kern/lwkt_msgport.c,v 1.11 2003/11/24 23:56:07 dillon Exp $
+ * $DragonFly: src/sys/kern/lwkt_msgport.c,v 1.12 2003/12/04 20:09:33 dillon Exp $
  */
 
 #ifdef _KERNEL
@@ -71,6 +71,7 @@
 #include <libcaps/globaldata.h>
 #include <sys/thread2.h>
 #include <sys/msgport2.h>
+#include <string.h>
 
 #endif /* _KERNEL */
 
index 998063b..e875fbd 100644 (file)
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $DragonFly: src/sys/kern/lwkt_thread.c,v 1.45 2003/12/04 00:12:40 dillon Exp $
+ * $DragonFly: src/sys/kern/lwkt_thread.c,v 1.46 2003/12/04 20:09:33 dillon Exp $
  */
 
 /*
 #include <libcaps/globaldata.h>
 #include <sys/thread2.h>
 #include <sys/msgport2.h>
+#include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <machine/cpufunc.h>
+#include <machine/lock.h>
 
 #endif
 
@@ -91,8 +94,10 @@ static __int64_t switch_count = 0;
 static __int64_t preempt_hit = 0;
 static __int64_t preempt_miss = 0;
 static __int64_t preempt_weird = 0;
+#ifdef SMP
 static __int64_t ipiq_count = 0;
 static __int64_t ipiq_fifofull = 0;
+#endif
 
 #ifdef _KERNEL
 
@@ -104,8 +109,10 @@ SYSCTL_QUAD(_lwkt, OID_AUTO, switch_count, CTLFLAG_RW, &switch_count, 0, "");
 SYSCTL_QUAD(_lwkt, OID_AUTO, preempt_hit, CTLFLAG_RW, &preempt_hit, 0, "");
 SYSCTL_QUAD(_lwkt, OID_AUTO, preempt_miss, CTLFLAG_RW, &preempt_miss, 0, "");
 SYSCTL_QUAD(_lwkt, OID_AUTO, preempt_weird, CTLFLAG_RW, &preempt_weird, 0, "");
+#ifdef SMP
 SYSCTL_QUAD(_lwkt, OID_AUTO, ipiq_count, CTLFLAG_RW, &ipiq_count, 0, "");
 SYSCTL_QUAD(_lwkt, OID_AUTO, ipiq_fifofull, CTLFLAG_RW, &ipiq_fifofull, 0, "");
+#endif
 
 #endif
 
@@ -153,7 +160,6 @@ _lwkt_wantresched(thread_t ntd, thread_t cur)
     return((ntd->td_pri & TDPRI_MASK) > (cur->td_pri & TDPRI_MASK));
 }
 
-/* lwkt_gdinit() has a userland override */
 #ifdef _KERNEL
 
 /*
@@ -236,6 +242,8 @@ lwkt_alloc_thread(struct thread *td, int cpu)
     return(td);
 }
 
+#ifdef _KERNEL
+
 /*
  * Initialize a preexisting thread structure.  This function is used by
  * lwkt_alloc_thread() and also used to initialize the per-cpu idlethread.
@@ -258,9 +266,6 @@ lwkt_init_thread_remote(void *arg)
     TAILQ_INSERT_TAIL(&td->td_gd->gd_tdallq, td, td_allq);
 }
 
-/* lwkt_init_thread has a userland override */
-#ifdef _KERNEL
-
 void
 lwkt_init_thread(thread_t td, void *stack, int flags, struct globaldata *gd)
 {
@@ -1263,7 +1268,7 @@ lwkt_create(void (*func)(void *), void *arg,
     td = lwkt_alloc_thread(template, cpu);
     if (tdp)
        *tdp = td;
-    cpu_set_thread_handler(td, kthread_exit, func, arg);
+    cpu_set_thread_handler(td, lwkt_exit, func, arg);
     td->td_flags |= TDF_VERBOSE | tdflags;
 #ifdef SMP
     td->td_mpcount = 1;
@@ -1287,7 +1292,6 @@ lwkt_create(void (*func)(void *), void *arg,
 }
 
 /*
- * lwkt_exit() has a userland override.
  * kthread_* is specific to the kernel and is not needed by userland.
  */
 #ifdef _KERNEL
index fed9380..5737b92 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * $FreeBSD: src/sys/i386/i386/mplock.s,v 1.29.2.2 2000/05/16 06:58:06 dillon Exp $
- * $DragonFly: src/sys/platform/pc32/i386/mplock.s,v 1.10 2003/09/25 23:49:03 dillon Exp $
+ * $DragonFly: src/sys/platform/pc32/i386/mplock.s,v 1.11 2003/12/04 20:09:31 dillon Exp $
  *
  * Copyright (c) 2003 Matthew Dillon <dillon@backplane.com>
  * All rights reserved.
@@ -263,13 +263,3 @@ bmpsw2:
 
 #endif
 
-#if 0
-/* after 1st acquire of lock we grab all hardware INTs */
-#ifdef GRAB_LOPRIO
-#define GRAB_HWI       movl    $ALLHWI_LEVEL, lapic_tpr
-
-/* after last release of lock give up LOW PRIO (ie, arbitrate INTerrupts) */
-#define ARB_HWI                movl    $LOPRIO_LEVEL, lapic_tpr /* CHEAP_TPR */
-#endif
-#endif
-
index 29af167..f2fee1b 100644 (file)
@@ -22,7 +22,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/include/lock.h,v 1.11.2.2 2000/09/30 02:49:34 ps Exp $
- * $DragonFly: src/sys/platform/pc32/include/lock.h,v 1.6 2003/08/07 21:17:22 dillon Exp $
+ * $DragonFly: src/sys/platform/pc32/include/lock.h,v 1.7 2003/12/04 20:09:33 dillon Exp $
  */
 
 #ifndef _MACHINE_LOCK_H_
@@ -166,6 +166,10 @@ spin_lock_init(spinlock_t lock)
        lock->opaque = 0;
 }
 
+#endif  /* _KERNEL */
+
+#if defined(_KERNEL) || defined(_UTHREAD)
+
 /*
  * MP LOCK functions for SMP and UP.  Under UP the MP lock does not exist
  * but we leave a few functions intact as macros for convenience.
@@ -176,9 +180,6 @@ void        get_mplock(void);
 int    try_mplock(void);
 void   rel_mplock(void);
 int    cpu_try_mplock(void);
-#if 0
-void   cpu_rel_mplock(void);
-#endif
 void   cpu_get_initial_mplock(void);
 
 extern u_int   mp_lock;
@@ -200,6 +201,6 @@ cpu_rel_mplock(void)
 #define ASSERT_MP_LOCK_HELD()
 
 #endif /* SMP */
-#endif  /* _KERNEL */
+#endif  /* _KERNEL || _UTHREAD */
 #endif /* LOCORE */
 #endif /* !_MACHINE_LOCK_H_ */
index c2d59e6..1dab5f3 100644 (file)
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $DragonFly: src/sys/sys/upcall.h,v 1.3 2003/11/21 08:32:46 dillon Exp $
+ * $DragonFly: src/sys/sys/upcall.h,v 1.4 2003/12/04 20:09:33 dillon Exp $
  */
 
 #ifndef _SYS_UPCALL_H_
@@ -49,6 +49,9 @@ struct upcall {
 #define UPC_CRITADD                    32      /* NOTE! same as TDPRI_CRIT */
 
 #if defined(_KERNEL)
+/*
+ * Kernel protoypes
+ */
 
 struct vmspace;
 
@@ -56,9 +59,12 @@ void upc_release(struct vmspace *vm, struct proc *p);
 void postupcall(struct proc *p);
 
 #else
-
+/*
+ * Userland prototypes
+ */
 int upc_register(struct upcall *, upcall_func_t, upcall_func_t, void *);
-int upc_dispatch(int upcid);
+int upc_control(int, int, void *);
+void upc_callused_wrapper(void *);
 
 #endif