More LWKT messaging cleanups. Isolate the default port functions by making
authorMatthew Dillon <dillon@dragonflybsd.org>
Mon, 24 Nov 2003 20:46:05 +0000 (20:46 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Mon, 24 Nov 2003 20:46:05 +0000 (20:46 +0000)
them static and rename lwkt_init_port() to lwkt_initport() to conform with
lwkt_initmsg().

sys/kern/kern_device.c
sys/kern/lwkt_msgport.c
sys/kern/lwkt_thread.c
sys/kern/subr_disk.c
sys/kern/tty_cons.c
sys/sys/msgport.h
sys/sys/msgport2.h

index 9537271..8cc1189 100644 (file)
@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $DragonFly: src/sys/kern/kern_device.c,v 1.6 2003/11/20 06:05:30 dillon Exp $
+ * $DragonFly: src/sys/kern/kern_device.c,v 1.7 2003/11/24 20:46:01 dillon Exp $
  */
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -65,7 +65,7 @@ static int cdevsw_putport(lwkt_port_t port, lwkt_msg_t msg);
 static void
 init_default_cdevsw_port(lwkt_port_t port)
 {
-    lwkt_init_port(port, NULL);
+    lwkt_initport(port, NULL);
     port->mp_putport = cdevsw_putport;
 }
 
@@ -83,7 +83,7 @@ cdevsw_putport(lwkt_port_t port, lwkt_msg_t lmsg)
     if (port->mp_td) {
        int mask = (1 << (msg->am_lmsg.ms_cmd & MSG_SUBCMD_MASK));
        if (csw->d_autoq & mask) 
-           return(lwkt_putport(port, &msg->am_lmsg));
+           return(lwkt_beginmsg(port, &msg->am_lmsg));
     }
 
     /*
index 7c3721f..062e9e3 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.9 2003/11/21 22:46:08 dillon Exp $
+ * $DragonFly: src/sys/kern/lwkt_msgport.c,v 1.10 2003/11/24 20:46:01 dillon Exp $
  */
 
 #ifdef _KERNEL
  *                             MESSAGE FUNCTIONS                       *
  ************************************************************************/
 
+static int lwkt_default_putport(lwkt_port_t port, lwkt_msg_t msg);
+static void *lwkt_default_waitport(lwkt_port_t port, lwkt_msg_t msg);
+static void lwkt_default_replyport(lwkt_port_t port, lwkt_msg_t msg);
+static void lwkt_default_abortport(lwkt_port_t port, lwkt_msg_t msg);
 static void lwkt_replyport_remote(lwkt_msg_t msg);
 static void lwkt_putport_remote(lwkt_msg_t msg);
 
@@ -153,26 +157,43 @@ lwkt_domsg(lwkt_port_t port, lwkt_msg_t msg)
  *     Initialize a port for use and assign it to the specified thread.
  */
 void
-lwkt_init_port(lwkt_port_t port, thread_t td)
+lwkt_initport(lwkt_port_t port, thread_t td)
 {
     bzero(port, sizeof(*port));
     TAILQ_INIT(&port->mp_msgq);
     port->mp_td = td;
-    port->mp_putport = lwkt_putport;
-    port->mp_waitport =  lwkt_waitport;
-    port->mp_replyport = lwkt_replyport;
-    port->mp_abortport = lwkt_abortport;
+    port->mp_putport = lwkt_default_putport;
+    port->mp_waitport =  lwkt_default_waitport;
+    port->mp_replyport = lwkt_default_replyport;
+    port->mp_abortport = lwkt_default_abortport;
 }
 
 /*
- * The rest of the procedures implement the kernel's port functions.  Userland
- * will have a different set of these
+ * lwkt_getport()
+ *
+ *     Retrieve the next message from the port's message queue, return NULL
+ *     if no messages are pending.
+ *
+ *     The calling thread MUST own the port.
  */
+void *
+lwkt_getport(lwkt_port_t port)
+{
+    lwkt_msg_t msg;
 
-#ifdef _KERNEL
+    KKASSERT(port->mp_td == curthread);
+
+    crit_enter();
+    if ((msg = TAILQ_FIRST(&port->mp_msgq)) != NULL) {
+       TAILQ_REMOVE(&port->mp_msgq, msg, ms_node);
+       msg->ms_flags &= ~MSGF_QUEUED;
+    }
+    crit_exit();
+    return(msg);
+}
 
 /*
- * lwkt_replyport()
+ * lwkt_default_replyport()
  *
  *     This function is typically assigned to the mp_replyport port vector.
  *
@@ -212,8 +233,9 @@ lwkt_replyport_remote(lwkt_msg_t msg)
     _lwkt_replyport(msg->ms_reply_port, msg);
 }
 
+static
 void
-lwkt_replyport(lwkt_port_t port, lwkt_msg_t msg)
+lwkt_default_replyport(lwkt_port_t port, lwkt_msg_t msg)
 {
     crit_enter();
     if (msg->ms_flags & MSGF_ASYNC) {
@@ -227,7 +249,7 @@ lwkt_replyport(lwkt_port_t port, lwkt_msg_t msg)
 }
 
 /*
- * lwkt_putport()
+ * lwkt_default_putport()
  *
  *     This function is typically assigned to the mp_putport port vector.
  *
@@ -237,8 +259,8 @@ lwkt_replyport(lwkt_port_t port, lwkt_msg_t msg)
  *
  *     You must already be in a critical section when calling
  *     the inline function.  The _remote function will be in a critical
- *     section due to being called from the IPI, and lwkt_putport() enters
- *     a critical section.
+ *     section due to being called from the IPI, and lwkt_default_putport() 
+ *     enters a critical section.
  */
 static
 __inline
@@ -265,8 +287,9 @@ lwkt_putport_remote(lwkt_msg_t msg)
     _lwkt_putport(msg->ms_target_port, msg);
 }
 
+static
 int
-lwkt_putport(lwkt_port_t port, lwkt_msg_t msg)
+lwkt_default_putport(lwkt_port_t port, lwkt_msg_t msg)
 {
     crit_enter();
     msg->ms_flags &= ~MSGF_DONE;
@@ -276,7 +299,7 @@ lwkt_putport(lwkt_port_t port, lwkt_msg_t msg)
 }
 
 /*
- * lwkt_abortport()
+ * lwkt_default_abortport()
  *
  *     This function is typically assigned to the mp_abortport port vector.
  *
@@ -290,38 +313,15 @@ lwkt_putport(lwkt_port_t port, lwkt_msg_t msg)
  *     capabilities.  Remember that aborts are always optional so doing 
  *     nothing is perfectly reasonable.
  */
+static
 void
-lwkt_abortport(lwkt_port_t port, lwkt_msg_t msg)
+lwkt_default_abortport(lwkt_port_t port, lwkt_msg_t msg)
 {
     /* NOP */
 }
 
 /*
- * lwkt_getport()
- *
- *     Retrieve the next message from the port's message queue, return NULL
- *     if no messages are pending.
- *
- *     The calling thread MUST own the port.
- */
-void *
-lwkt_getport(lwkt_port_t port)
-{
-    lwkt_msg_t msg;
-
-    KKASSERT(port->mp_td == curthread);
-
-    crit_enter();
-    if ((msg = TAILQ_FIRST(&port->mp_msgq)) != NULL) {
-       TAILQ_REMOVE(&port->mp_msgq, msg, ms_node);
-       msg->ms_flags &= ~MSGF_QUEUED;
-    }
-    crit_exit();
-    return(msg);
-}
-
-/*
- * lwkt_waitport()
+ * lwkt_default_waitport()
  *
  *     If msg is NULL, dequeue the next message from the port's message
  *     queue, block until a message is ready.  This function never
@@ -334,8 +334,9 @@ lwkt_getport(lwkt_port_t port)
  *     on a port.  By virtue of owning the port it is controlled by our
  *     cpu and we can safely manipulate it's contents.
  */
+static
 void *
-lwkt_waitport(lwkt_port_t port, lwkt_msg_t msg)
+lwkt_default_waitport(lwkt_port_t port, lwkt_msg_t msg)
 {
     KKASSERT(port->mp_td == curthread);
 
@@ -388,5 +389,3 @@ lwkt_waitport(lwkt_port_t port, lwkt_msg_t msg)
     return(msg);
 }
 
-#endif
-
index 6b69b03..108341f 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.42 2003/11/21 22:46:08 dillon Exp $
+ * $DragonFly: src/sys/kern/lwkt_thread.c,v 1.43 2003/11/24 20:46:01 dillon Exp $
  */
 
 /*
@@ -79,6 +79,7 @@
 #include <sys/thread2.h>
 #include <sys/msgport2.h>
 #include <stdlib.h>
+#include <machine/cpufunc.h>
 
 #endif
 
@@ -260,7 +261,7 @@ lwkt_init_thread(thread_t td, void *stack, int flags, struct globaldata *gd)
     td->td_flags |= flags;
     td->td_gd = gd;
     td->td_pri = TDPRI_KERN_DAEMON + TDPRI_CRIT;
-    lwkt_init_port(&td->td_msgport, td);
+    lwkt_initport(&td->td_msgport, td);
     pmap_init_thread(td);
     if (smp_active == 0 || gd == mycpu) {
        crit_enter();
@@ -294,6 +295,8 @@ lwkt_rele(thread_t td)
     --td->td_refs;
 }
 
+#ifdef _KERNEL
+
 void
 lwkt_wait_free(thread_t td)
 {
@@ -301,6 +304,8 @@ lwkt_wait_free(thread_t td)
        tsleep(td, 0, "tdreap", hz);
 }
 
+#endif
+
 void
 lwkt_free_thread(thread_t td)
 {
index f2476ab..508fe7b 100644 (file)
@@ -7,7 +7,7 @@
  * ----------------------------------------------------------------------------
  *
  * $FreeBSD: src/sys/kern/subr_disk.c,v 1.20.2.6 2001/10/05 07:14:57 peter Exp $
- * $DragonFly: src/sys/kern/subr_disk.c,v 1.6 2003/11/20 06:05:30 dillon Exp $
+ * $DragonFly: src/sys/kern/subr_disk.c,v 1.7 2003/11/24 20:46:01 dillon Exp $
  *
  */
 
@@ -59,7 +59,7 @@ disk_create(int unit, struct disk *dp, int flags, struct cdevsw *cdevsw)
        dev_t dev;
 
        bzero(dp, sizeof(*dp));
-       lwkt_init_port(&dp->d_port, NULL);      /* intercept port */
+       lwkt_initport(&dp->d_port, NULL);       /* intercept port */
        dp->d_port.mp_putport = disk_putport;
 
        dev = makedev(cdevsw->d_maj, 0);        /* base device */
index 0ee53ee..04f6e65 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     from: @(#)cons.c        7.2 (Berkeley) 5/9/91
  * $FreeBSD: src/sys/kern/tty_cons.c,v 1.81.2.4 2001/12/17 18:44:41 guido Exp $
- * $DragonFly: src/sys/kern/tty_cons.c,v 1.9 2003/11/20 06:05:30 dillon Exp $
+ * $DragonFly: src/sys/kern/tty_cons.c,v 1.10 2003/11/24 20:46:01 dillon Exp $
  */
 
 #include "opt_ddb.h"
@@ -126,7 +126,7 @@ cninit()
        /*
         * Our port intercept
         */
-       lwkt_init_port(&cn_port, NULL);
+       lwkt_initport(&cn_port, NULL);
        cn_port.mp_putport = console_putport;
 
        /*
index b9b3a0f..ec9f7fc 100644 (file)
@@ -3,7 +3,7 @@
  *
  *     Implements LWKT messages and ports.
  * 
- * $DragonFly: src/sys/sys/msgport.h,v 1.10 2003/11/21 22:46:13 dillon Exp $
+ * $DragonFly: src/sys/sys/msgport.h,v 1.11 2003/11/24 20:46:05 dillon Exp $
  */
 
 #ifndef _SYS_MSGPORT_H_
@@ -92,15 +92,10 @@ typedef struct lwkt_port {
  * messaging function support for userland is provided by the kernel's
  * kern/lwkt_msgport.c.  The port functions are provided by userland.
  */
-extern void lwkt_init_port(lwkt_port_t, struct thread *);
+extern void lwkt_initport(lwkt_port_t, struct thread *);
 extern void lwkt_initmsg_td(lwkt_msg_t, struct thread *);
 extern void lwkt_sendmsg(lwkt_port_t, lwkt_msg_t);
 extern int lwkt_domsg(lwkt_port_t, lwkt_msg_t);
 extern void *lwkt_getport(lwkt_port_t);
 
-extern int lwkt_putport(lwkt_port_t, lwkt_msg_t);
-extern void *lwkt_waitport(lwkt_port_t, lwkt_msg_t);
-extern void lwkt_replyport(lwkt_port_t, lwkt_msg_t);
-extern void lwkt_abortport(lwkt_port_t, lwkt_msg_t);
-
 #endif
index 7cfd08b..d479f0d 100644 (file)
@@ -3,7 +3,7 @@
  *
  *     Implements Inlines for LWKT messages and ports.
  * 
- * $DragonFly: src/sys/sys/msgport2.h,v 1.4 2003/11/20 06:05:31 dillon Exp $
+ * $DragonFly: src/sys/sys/msgport2.h,v 1.5 2003/11/24 20:46:05 dillon Exp $
  */
 
 #ifndef _SYS_MSGPORT2_H_
@@ -67,5 +67,12 @@ lwkt_replymsg(lwkt_msg_t msg, int error)
     port->mp_replyport(port, msg);
 }
 
+static __inline
+void *
+lwkt_waitport(lwkt_port_t port, lwkt_msg_t msg)
+{
+    return(port->mp_waitport(port, msg));
+}
+
 #endif