[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.91 and 1.92

version 1.91, 2003/10/21 22:55:47 version 1.92, 2004/03/17 09:58:15
Line 249  sodopendfree(struct socket *so)
Line 249  sodopendfree(struct socket *so)
                 pool_cache_put(&mbpool_cache, m);                  pool_cache_put(&mbpool_cache, m);
         }          }
   
         for (;;) {  
                 m = so->so_pendfree;  
                 if (m == NULL)  
                         break;  
                 so->so_pendfree = m->m_next;  
                 splx(s);  
   
                 rv += m->m_ext.ext_size;  
                 sodoloanfree((m->m_flags & M_EXT_PAGES) ?  
                     m->m_ext.ext_pgs : NULL, m->m_ext.ext_buf,  
                     m->m_ext.ext_size);  
                 s = splvm();  
                 pool_cache_put(&mbpool_cache, m);  
         }  
   
         splx(s);          splx(s);
         return (rv);          return (rv);
 }  }
Line 271  sodopendfree(struct socket *so)
Line 256  sodopendfree(struct socket *so)
 void  void
 soloanfree(struct mbuf *m, caddr_t buf, size_t size, void *arg)  soloanfree(struct mbuf *m, caddr_t buf, size_t size, void *arg)
 {  {
         struct socket *so = arg;  
         int s;          int s;
   
         if (m == NULL) {          if (m == NULL) {
Line 280  soloanfree(struct mbuf *m, caddr_t buf, 
Line 264  soloanfree(struct mbuf *m, caddr_t buf, 
         }          }
   
         s = splvm();          s = splvm();
         m->m_next = so->so_pendfree;          m->m_next = so_pendfree;
         so->so_pendfree = m;          so_pendfree = m;
         splx(s);          splx(s);
         if (sokvawaiters)          if (sokvawaiters)
                 wakeup(&socurkva);                  wakeup(&socurkva);
Line 435  solisten(struct socket *so, int backlog)
Line 419  solisten(struct socket *so, int backlog)
 void  void
 sofree(struct socket *so)  sofree(struct socket *so)
 {  {
         struct mbuf *m;  
   
         if (so->so_pcb || (so->so_state & SS_NOFDREF) == 0)          if (so->so_pcb || (so->so_state & SS_NOFDREF) == 0)
                 return;                  return;
Line 450  sofree(struct socket *so)
Line 433  sofree(struct socket *so)
         }          }
         sbrelease(&so->so_snd);          sbrelease(&so->so_snd);
         sorflush(so);          sorflush(so);
         while ((m = so->so_pendfree) != NULL) {  
                 so->so_pendfree = m->m_next;  
                 m->m_next = so_pendfree;  
                 so_pendfree = m;  
         }  
         pool_put(&socket_pool, so);          pool_put(&socket_pool, so);
 }  }
   

Legend:
Removed from v.1.91  
changed lines
  Added in v.1.92

CVSweb <webmaster@jp.NetBSD.org>