| version 1.77, 2003/02/01 06:23:44 |
version 1.78, 2003/02/26 06:31:11 |
| Line 345 socreate(int dom, struct socket **aso, i |
|
| Line 345 socreate(int dom, struct socket **aso, i |
|
| so->so_proto = prp; |
so->so_proto = prp; |
| so->so_send = sosend; |
so->so_send = sosend; |
| so->so_receive = soreceive; |
so->so_receive = soreceive; |
| |
#ifdef MBUFTRACE |
| |
so->so_rcv.sb_mowner = &prp->pr_domain->dom_mowner; |
| |
so->so_snd.sb_mowner = &prp->pr_domain->dom_mowner; |
| |
so->so_mowner = &prp->pr_domain->dom_mowner; |
| |
#endif |
| if (p != 0) |
if (p != 0) |
| so->so_uid = p->p_ucred->cr_uid; |
so->so_uid = p->p_ucred->cr_uid; |
| error = (*prp->pr_usrreq)(so, PRU_ATTACH, (struct mbuf *)0, |
error = (*prp->pr_usrreq)(so, PRU_ATTACH, (struct mbuf *)0, |
| Line 681 sosend(struct socket *so, struct mbuf *a |
|
| Line 686 sosend(struct socket *so, struct mbuf *a |
|
| top->m_flags |= M_EOR; |
top->m_flags |= M_EOR; |
| } else do { |
} else do { |
| if (top == 0) { |
if (top == 0) { |
| MGETHDR(m, M_WAIT, MT_DATA); |
m = m_gethdr(M_WAIT, MT_DATA); |
| mlen = MHLEN; |
mlen = MHLEN; |
| m->m_pkthdr.len = 0; |
m->m_pkthdr.len = 0; |
| m->m_pkthdr.rcvif = (struct ifnet *)0; |
m->m_pkthdr.rcvif = (struct ifnet *)0; |
| } else { |
} else { |
| MGET(m, M_WAIT, MT_DATA); |
m = m_get(M_WAIT, MT_DATA); |
| mlen = MLEN; |
mlen = MLEN; |
| } |
} |
| |
MCLAIM(m, so->so_snd.sb_mowner); |
| if (use_sosend_loan && |
if (use_sosend_loan && |
| uio->uio_iov->iov_len >= SOCK_LOAN_THRESH && |
uio->uio_iov->iov_len >= SOCK_LOAN_THRESH && |
| space >= SOCK_LOAN_THRESH && |
space >= SOCK_LOAN_THRESH && |
| Line 700 sosend(struct socket *so, struct mbuf *a |
|
| Line 706 sosend(struct socket *so, struct mbuf *a |
|
| } |
} |
| 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); |
m_clget(m, M_WAIT); |
| if ((m->m_flags & M_EXT) == 0) |
if ((m->m_flags & M_EXT) == 0) |
| goto nopages; |
goto nopages; |
| mlen = MCLBYTES; |
mlen = MCLBYTES; |