[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.111.2.12 and 1.111.2.13

version 1.111.2.12, 2008/02/11 14:59:58 version 1.111.2.13, 2008/02/27 09:24:06
Line 251  sokvafree(vaddr_t sva, vsize_t len)
Line 251  sokvafree(vaddr_t sva, vsize_t len)
 }  }
   
 static void  static void
 sodoloanfree(struct vm_page **pgs, void *buf, size_t size, bool mapped)  sodoloanfree(struct vm_page **pgs, void *buf, size_t size)
 {  {
         vaddr_t sva, eva;          vaddr_t sva, eva;
         vsize_t len;          vsize_t len;
Line 264  sodoloanfree(struct vm_page **pgs, void 
Line 264  sodoloanfree(struct vm_page **pgs, void 
         len = eva - sva;          len = eva - sva;
         npgs = len >> PAGE_SHIFT;          npgs = len >> PAGE_SHIFT;
   
         if (mapped) {          pmap_kremove(sva, len);
                 pmap_kremove(sva, len);          pmap_update(pmap_kernel());
                 pmap_update(pmap_kernel());  
         }  
         uvm_unloan(pgs, npgs, UVM_LOAN_TOPAGE);          uvm_unloan(pgs, npgs, UVM_LOAN_TOPAGE);
         sokvafree(sva, len);          sokvafree(sva, len);
 }  }
Line 311  sodopendfreel()
Line 309  sodopendfreel()
   
                         rv += m->m_ext.ext_size;                          rv += m->m_ext.ext_size;
                         sodoloanfree(m->m_ext.ext_pgs, m->m_ext.ext_buf,                          sodoloanfree(m->m_ext.ext_pgs, m->m_ext.ext_buf,
                             m->m_ext.ext_size,                              m->m_ext.ext_size);
                             (m->m_ext.ext_flags & M_EXT_LAZY) == 0);  
                         pool_cache_put(mb_cache, m);                          pool_cache_put(mb_cache, m);
                 }                  }
   
Line 350  sosend_loan(struct socket *so, struct ui
Line 347  sosend_loan(struct socket *so, struct ui
         vsize_t len;          vsize_t len;
         vaddr_t lva;          vaddr_t lva;
         int npgs, error;          int npgs, error;
 #if !defined(__HAVE_LAZY_MBUF)  
         vaddr_t va;          vaddr_t va;
         int i;          int i;
 #endif /* !defined(__HAVE_LAZY_MBUF) */  
   
         if (VMSPACE_IS_KERNEL_P(uio->uio_vmspace))          if (VMSPACE_IS_KERNEL_P(uio->uio_vmspace))
                 return (0);                  return (0);
Line 382  sosend_loan(struct socket *so, struct ui
Line 377  sosend_loan(struct socket *so, struct ui
                 return (0);                  return (0);
         }          }
   
 #if !defined(__HAVE_LAZY_MBUF)  
         for (i = 0, va = lva; i < npgs; i++, va += PAGE_SIZE)          for (i = 0, va = lva; i < npgs; i++, va += PAGE_SIZE)
                 pmap_kenter_pa(va, VM_PAGE_TO_PHYS(m->m_ext.ext_pgs[i]),                  pmap_kenter_pa(va, VM_PAGE_TO_PHYS(m->m_ext.ext_pgs[i]),
                     VM_PROT_READ);                      VM_PROT_READ);
         pmap_update(pmap_kernel());          pmap_update(pmap_kernel());
 #endif /* !defined(__HAVE_LAZY_MBUF) */  
   
         lva += (vaddr_t) iov->iov_base & PAGE_MASK;          lva += (vaddr_t) iov->iov_base & PAGE_MASK;
   
         MEXTADD(m, (void *) lva, space, M_MBUF, soloanfree, so);          MEXTADD(m, (void *) lva, space, M_MBUF, soloanfree, so);
         m->m_flags |= M_EXT_PAGES | M_EXT_ROMAP;          m->m_flags |= M_EXT_PAGES | M_EXT_ROMAP;
   
 #if defined(__HAVE_LAZY_MBUF)  
         m->m_flags |= M_EXT_LAZY;  
         m->m_ext.ext_flags |= M_EXT_LAZY;  
 #endif /* defined(__HAVE_LAZY_MBUF) */  
   
         uio->uio_resid -= space;          uio->uio_resid -= space;
         /* uio_offset not updated, not set/used for write(2) */          /* uio_offset not updated, not set/used for write(2) */
         uio->uio_iov->iov_base = (char *)uio->uio_iov->iov_base + space;          uio->uio_iov->iov_base = (char *)uio->uio_iov->iov_base + space;

Legend:
Removed from v.1.111.2.12  
changed lines
  Added in v.1.111.2.13

CVSweb <webmaster@jp.NetBSD.org>