socket: Speed up soclose by avoiding putting the user thread into sleep
[dragonfly.git] / sys / sys / socketvar.h
index 4768c69..ab494be 100644 (file)
 
 #if defined(_KERNEL) || defined(_KERNEL_STRUCTURES)
 
+#ifndef _NET_NETMSG_H_
+#include <net/netmsg.h>
+#endif
+
 struct accept_filter;
 
 /*
@@ -69,8 +73,7 @@ struct signalsockbuf {
        struct sockbuf sb;
        struct kqinfo ssb_kq;   /* process selecting read/write */
        uint32_t ssb_flags;     /* flags, see below (use atomic ops) */
-       short   ssb_timeo;      /* timeout for read/write */
-       short   ssb_unused01;
+       u_int   ssb_timeo;      /* timeout for read/write */
        long    ssb_lowat;      /* low water mark */
        u_long  ssb_hiwat;      /* high water mark / max actual char count */
        u_long  ssb_mbmax;      /* max chars of mbufs to use */
@@ -149,6 +152,8 @@ struct socket {
                void    *so_accept_filter_arg;  /* saved filter args */
                char    *so_accept_filter_str;  /* saved user args */
        } *so_accf;
+
+       struct netmsg_base so_clomsg;
 };
 
 #endif
@@ -203,8 +208,8 @@ struct      xsocket {
                u_long  sb_mbcnt;
                u_long  sb_mbmax;
                long    sb_lowat;
+               u_int   sb_timeo;
                short   sb_flags;
-               short   sb_timeo;
        } so_rcv, so_snd;
        uid_t   so_uid;         /* XXX */
 };
@@ -438,6 +443,9 @@ int sosend (struct socket *so, struct sockaddr *addr, struct uio *uio,
 int    sosendudp (struct socket *so, struct sockaddr *addr, struct uio *uio,
                    struct mbuf *top, struct mbuf *control, int flags,
                    struct thread *td);
+int    sosendtcp (struct socket *so, struct sockaddr *addr, struct uio *uio,
+                   struct mbuf *top, struct mbuf *control, int flags,
+                   struct thread *td);
 int    sosetopt (struct socket *so, struct sockopt *sopt);
 int    soshutdown (struct socket *so, int how);
 void   sotoxsocket (struct socket *so, struct xsocket *xso);