[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.208 and 1.209.2.2

version 1.208, 2012/01/27 19:48:40 version 1.209.2.2, 2013/02/14 22:13:59
Line 197  sokvaunreserve(vsize_t len)
Line 197  sokvaunreserve(vsize_t len)
  */   */
   
 vaddr_t  vaddr_t
 sokvaalloc(vsize_t len, struct socket *so)  sokvaalloc(vaddr_t sva, vsize_t len, struct socket *so)
 {  {
         vaddr_t lva;          vaddr_t lva;
   
Line 212  sokvaalloc(vsize_t len, struct socket *s
Line 212  sokvaalloc(vsize_t len, struct socket *s
          * allocate kva.           * allocate kva.
          */           */
   
         lva = uvm_km_alloc(kernel_map, len, 0, UVM_KMF_VAONLY | UVM_KMF_WAITVA);          lva = uvm_km_alloc(kernel_map, len, atop(sva) & uvmexp.colormask,
               UVM_KMF_COLORMATCH | UVM_KMF_VAONLY | UVM_KMF_WAITVA);
         if (lva == 0) {          if (lva == 0) {
                 sokvaunreserve(len);                  sokvaunreserve(len);
                 return (0);                  return (0);
Line 349  sosend_loan(struct socket *so, struct ui
Line 350  sosend_loan(struct socket *so, struct ui
   
         KASSERT(npgs <= M_EXT_MAXPAGES);          KASSERT(npgs <= M_EXT_MAXPAGES);
   
         lva = sokvaalloc(len, so);          lva = sokvaalloc(sva, len, so);
         if (lva == 0)          if (lva == 0)
                 return 0;                  return 0;
   
Line 584  fsocreate(int domain, struct socket **so
Line 585  fsocreate(int domain, struct socket **so
                 fp->f_data = so;                  fp->f_data = so;
                 fd_affix(curproc, fp, fd);                  fd_affix(curproc, fp, fd);
                 *fdout = fd;                  *fdout = fd;
                   if (flags & SOCK_NONBLOCK)
                           so->so_state |= SS_NBIO;
         }          }
         return error;          return error;
 }  }
Line 1131  soreceive(struct socket *so, struct mbuf
Line 1134  soreceive(struct socket *so, struct mbuf
 {  {
         struct lwp *l = curlwp;          struct lwp *l = curlwp;
         struct mbuf     *m, **mp, *mt;          struct mbuf     *m, **mp, *mt;
         int atomic, flags, len, error, s, offset, moff, type, orig_resid;          size_t len, offset, moff, orig_resid;
           int atomic, flags, error, s, type;
         const struct protosw    *pr;          const struct protosw    *pr;
         struct mbuf     *nextrecord;          struct mbuf     *nextrecord;
         int             mbuf_removed = 0;          int             mbuf_removed = 0;
Line 1164  soreceive(struct socket *so, struct mbuf
Line 1168  soreceive(struct socket *so, struct mbuf
                         goto bad;                          goto bad;
                 do {                  do {
                         error = uiomove(mtod(m, void *),                          error = uiomove(mtod(m, void *),
                             (int) min(uio->uio_resid, m->m_len), uio);                              MIN(uio->uio_resid, m->m_len), uio);
                         m = m_free(m);                          m = m_free(m);
                 } while (uio->uio_resid > 0 && error == 0 && m);                  } while (uio->uio_resid > 0 && error == 0 && m);
  bad:   bad:
Line 1418  soreceive(struct socket *so, struct mbuf
Line 1422  soreceive(struct socket *so, struct mbuf
                         SBLASTMBUFCHK(&so->so_rcv, "soreceive uiomove");                          SBLASTMBUFCHK(&so->so_rcv, "soreceive uiomove");
                         sounlock(so);                          sounlock(so);
                         splx(s);                          splx(s);
                         error = uiomove(mtod(m, char *) + moff, (int)len, uio);                          error = uiomove(mtod(m, char *) + moff, len, uio);
                         s = splsoftnet();                          s = splsoftnet();
                         solock(so);                          solock(so);
                         if (error != 0) {                          if (error != 0) {

Legend:
Removed from v.1.208  
changed lines
  Added in v.1.209.2.2

CVSweb <webmaster@jp.NetBSD.org>