fix mbuf accounting
authorBill Joy <root@ucbvax.Berkeley.EDU>
Sun, 22 Nov 1981 14:13:39 +0000 (06:13 -0800)
committerBill Joy <root@ucbvax.Berkeley.EDU>
Sun, 22 Nov 1981 14:13:39 +0000 (06:13 -0800)
SCCS-vsn: sys/kern/uipc_mbuf.c 1.15
SCCS-vsn: sys/kern/uipc_pipe.c 4.6
SCCS-vsn: sys/kern/uipc_socket.c 4.11
SCCS-vsn: sys/kern/uipc_socket2.c 4.6

usr/src/sys/kern/uipc_mbuf.c
usr/src/sys/kern/uipc_pipe.c
usr/src/sys/kern/uipc_socket.c
usr/src/sys/kern/uipc_socket2.c

index 7f87362..6a2a349 100644 (file)
@@ -1,4 +1,4 @@
-/*     uipc_mbuf.c     1.14    81/11/21        */
+/*     uipc_mbuf.c     1.15    81/11/21        */
 
 #include "../h/param.h"
 #include "../h/dir.h"
 
 #include "../h/param.h"
 #include "../h/dir.h"
 #include "../net/inet_systm.h"         /* XXX */
 #include "../h/vm.h"
 
 #include "../net/inet_systm.h"         /* XXX */
 #include "../h/vm.h"
 
-m_reserve(cc)
-       int cc;
+m_reserve(mbufs)
+       int mbufs;
 {
 {
-       int mbufs = cc / MSIZE;
 
        if (mbstat.m_lowat + mbufs > NMBPAGES * NMBPG - 32) 
                return (0);
 
        if (mbstat.m_lowat + mbufs > NMBPAGES * NMBPG - 32) 
                return (0);
@@ -23,10 +22,9 @@ m_reserve(cc)
        return (1);
 }
 
        return (1);
 }
 
-m_release(cc)
-       int cc;
+m_release(mbufs)
+       int mbufs;
 {
 {
-       int mbufs = cc / MSIZE;
 
        mbstat.m_lowat -= mbufs;
        mbstat.m_hiwat = 2 * mbstat.m_lowat;
 
        mbstat.m_lowat -= mbufs;
        mbstat.m_hiwat = 2 * mbstat.m_lowat;
index e6fdbe7..d73fc94 100644 (file)
@@ -1,4 +1,4 @@
-/*     uipc_pipe.c     4.5     81/11/21        */
+/*     uipc_pipe.c     4.6     81/11/21        */
 
 #include "../h/param.h"
 #include "../h/dir.h"
 
 #include "../h/param.h"
 #include "../h/dir.h"
@@ -31,7 +31,7 @@ piconnect(wso, rso)
 {
 
 COUNT(PICONNECT);
 {
 
 COUNT(PICONNECT);
-       if (m_reserve(PIPSIZ) == 0) {
+       if (m_reserve(PIPSIZ/MSIZE) == 0) {
                u.u_error = ENOBUFS;
                return (0);
        }
                u.u_error = ENOBUFS;
                return (0);
        }
index 682c634..c268fb9 100644 (file)
@@ -1,4 +1,4 @@
-/*     uipc_socket.c   4.10    81/11/21        */
+/*     uipc_socket.c   4.11    81/11/21        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -341,13 +341,13 @@ restart:
 
 #define        rcverr(errno)   { error = errno; splx(s); goto release; }
        if (so->so_rcv.sb_cc == 0) {
 
 #define        rcverr(errno)   { error = errno; splx(s); goto release; }
        if (so->so_rcv.sb_cc == 0) {
-               if ((so->so_state & SS_ISCONNECTED) == 0 &&
-                   (so->so_proto->pr_flags & PR_CONNREQUIRED))
-                       rcverr(ENOTCONN);
                if (so->so_state & SS_CANTRCVMORE) {
                        splx(s);
                        goto release;
                }
                if (so->so_state & SS_CANTRCVMORE) {
                        splx(s);
                        goto release;
                }
+               if ((so->so_state & SS_ISCONNECTED) == 0 &&
+                   (so->so_proto->pr_flags & PR_CONNREQUIRED))
+                       rcverr(ENOTCONN);
                if (so->so_options & SO_NBIO)
                        rcverr (EWOULDBLOCK);
                sbunlock(&so->so_rcv);
                if (so->so_options & SO_NBIO)
                        rcverr (EWOULDBLOCK);
                sbunlock(&so->so_rcv);
index 3a83998..0200465 100644 (file)
@@ -1,4 +1,4 @@
-/*     uipc_socket2.c  4.5     81/11/21        */
+/*     uipc_socket2.c  4.6     81/11/21        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -148,7 +148,7 @@ sbreserve(sb, cc)
        struct sockbuf *sb;
 {
 
        struct sockbuf *sb;
 {
 
-       if (m_reserve(cc) == 0)
+       if (m_reserve((cc*2)/MSIZE) == 0)
                return (0);
        sb->sb_hiwat = cc;
        sb->sb_mbmax = (cc*2)/MSIZE;
                return (0);
        sb->sb_hiwat = cc;
        sb->sb_mbmax = (cc*2)/MSIZE;
@@ -163,7 +163,7 @@ sbrelease(sb)
 {
 
        sbflush(sb);
 {
 
        sbflush(sb);
-       m_release(sb->sb_hiwat);
+       m_release(sb->sb_mbmax);
        sb->sb_hiwat = sb->sb_mbmax = 0;
 }
 
        sb->sb_hiwat = sb->sb_mbmax = 0;
 }