[BACK]Return to uipc_socket.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / kern

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/kern/uipc_socket.c between version 1.64 and 1.65

version 1.64, 2002/05/02 17:55:51 version 1.65, 2002/05/03 00:35:14
Line 135  soinit(void)
Line 135  soinit(void)
 }  }
   
 #ifdef SOSEND_LOAN  #ifdef SOSEND_LOAN
   int use_sosend_loan = 1;
   #else
   int use_sosend_loan = 0;
   #endif
   
 struct mbuf *so_pendfree;  struct mbuf *so_pendfree;
   
Line 303  sosend_loan(struct socket *so, struct ui
Line 307  sosend_loan(struct socket *so, struct ui
         return (space);          return (space);
 }  }
   
 #endif /* SOSEND_LOAN */  
   
 /*  /*
  * Socket operation routines.   * Socket operation routines.
  * These routines are called by the routines in   * These routines are called by the routines in
Line 390  solisten(struct socket *so, int backlog)
Line 392  solisten(struct socket *so, int backlog)
 void  void
 sofree(struct socket *so)  sofree(struct socket *so)
 {  {
 #ifdef SOSEND_LOAN  
         struct mbuf *m;          struct mbuf *m;
 #endif  
   
         if (so->so_pcb || (so->so_state & SS_NOFDREF) == 0)          if (so->so_pcb || (so->so_state & SS_NOFDREF) == 0)
                 return;                  return;
Line 407  sofree(struct socket *so)
Line 407  sofree(struct socket *so)
         }          }
         sbrelease(&so->so_snd);          sbrelease(&so->so_snd);
         sorflush(so);          sorflush(so);
 #ifdef SOSEND_LOAN  
         while ((m = so->so_pendfree) != NULL) {          while ((m = so->so_pendfree) != NULL) {
                 so->so_pendfree = m->m_next;                  so->so_pendfree = m->m_next;
                 m->m_next = so_pendfree;                  m->m_next = so_pendfree;
                 so_pendfree = m;                  so_pendfree = m;
         }          }
 #endif  
         pool_put(&socket_pool, so);          pool_put(&socket_pool, so);
 }  }
   
Line 569  sodisconnect(struct socket *so)
Line 567  sodisconnect(struct socket *so)
             (struct proc *)0);              (struct proc *)0);
  bad:   bad:
         splx(s);          splx(s);
 #ifdef SOSEND_LOAN  
         sodopendfree(so);          sodopendfree(so);
 #endif  
         return (error);          return (error);
 }  }
   
Line 602  sosend(struct socket *so, struct mbuf *a
Line 598  sosend(struct socket *so, struct mbuf *a
         long            space, len, resid, clen, mlen;          long            space, len, resid, clen, mlen;
         int             error, s, dontroute, atomic;          int             error, s, dontroute, atomic;
   
 #ifdef SOSEND_LOAN  
         sodopendfree(so);          sodopendfree(so);
 #endif  
   
         p = curproc;            /* XXX */          p = curproc;            /* XXX */
         clen = 0;          clen = 0;
Line 691  sosend(struct socket *so, struct mbuf *a
Line 685  sosend(struct socket *so, struct mbuf *a
                                         MGET(m, M_WAIT, MT_DATA);                                          MGET(m, M_WAIT, MT_DATA);
                                         mlen = MLEN;                                          mlen = MLEN;
                                 }                                  }
 #ifdef SOSEND_LOAN                                  if (use_sosend_loan &&
                                 if (uio->uio_iov->iov_len >= SOCK_LOAN_THRESH &&                                      uio->uio_iov->iov_len >= SOCK_LOAN_THRESH &&
                                     space >= SOCK_LOAN_THRESH &&                                      space >= SOCK_LOAN_THRESH &&
                                     (len = sosend_loan(so, uio, m,                                      (len = sosend_loan(so, uio, m,
                                                        space)) != 0) {                                                         space)) != 0) {
Line 700  sosend(struct socket *so, struct mbuf *a
Line 694  sosend(struct socket *so, struct mbuf *a
                                         space -= len;                                          space -= len;
                                         goto have_data;                                          goto have_data;
                                 }                                  }
 #endif /* SOSEND_LOAN */  
                                 if (resid >= MINCLSIZE && space >= MCLBYTES) {                                  if (resid >= MINCLSIZE && space >= MCLBYTES) {
                                         SOSEND_COUNTER_INCR(&sosend_copy_big);                                          SOSEND_COUNTER_INCR(&sosend_copy_big);
                                         MCLGET(m, M_WAIT);                                          MCLGET(m, M_WAIT);
Line 728  sosend(struct socket *so, struct mbuf *a
Line 721  sosend(struct socket *so, struct mbuf *a
                                 }                                  }
                                 error = uiomove(mtod(m, caddr_t), (int)len,                                  error = uiomove(mtod(m, caddr_t), (int)len,
                                     uio);                                      uio);
 #ifdef SOSEND_LOAN  
  have_data:   have_data:
 #endif  
                                 resid = uio->uio_resid;                                  resid = uio->uio_resid;
                                 m->m_len = len;                                  m->m_len = len;
                                 *mp = m;                                  *mp = m;
Line 807  soreceive(struct socket *so, struct mbuf
Line 798  soreceive(struct socket *so, struct mbuf
         struct protosw  *pr;          struct protosw  *pr;
         struct mbuf     *nextrecord;          struct mbuf     *nextrecord;
   
 #ifdef SOSEND_LOAN  
         sodopendfree(so);          sodopendfree(so);
 #endif  
   
         pr = so->so_proto;          pr = so->so_proto;
         mp = mp0;          mp = mp0;

Legend:
Removed from v.1.64  
changed lines
  Added in v.1.65

CVSweb <webmaster@jp.NetBSD.org>