/* uipc_mbuf.c 1.10 81/11/16 */
#include "../net/inet_systm.h" /* XXX */
if (mbstat
.m_lowat
+ mbufs
> NMBPAGES
* NMBPG
- 32)
mbstat
.m_hiwat
= 2 * mbstat
.m_lowat
;
mbstat
.m_hiwat
= 2 * mbstat
.m_lowat
;
bzero(mtod(m
, caddr_t
), MLEN
);
#define m_more(x) (panic("m_more"), (struct mbuf *)0)
m
= (struct mbuf
*)&mbutl
[0]; /* ->start of buffer virt mem */
(void) vmemall(&Mbmap
[0], 2, proc
, CSYS
);
vmaccess(&Mbmap
[0], (caddr_t
)m
, 2);
for (i
=0; i
< NMBPG
; i
++) {
if ((i
= rmalloc(mbmap
, n
)) == 0)
/* should use vmemall sometimes */
if (memall(&Mbmap
[j
], k
, proc
, CSYS
) == 0) {
vmaccess(&Mbmap
[j
], (caddr_t
)m
, k
);
if ((i
= rmalloc(mbmap
, n
)) == 0)
/* should use vmemall sometimes */
if (memall(&Mbmap
[j
], k
, proc
, CSYS
) == 0)
vmaccess(&Mbmap
[j
], (caddr_t
)m
, k
);
for (j
=0; j
< bufs
; j
++) {
needs
= need
= mbstat
.m_hiwat
- mbstat
.m_bufs
;
for (i
=0; i
< needp
; i
++, need
-= NMBPG
)
/* while (not enough) ask protocols to free code */
register struct mbuf
*m
, *n
;
if (m
->m_off
+ m
->m_len
+ n
->m_len
<= MMAXOFF
) {
bcopy(mtod(n
, caddr_t
), mtod(m
, caddr_t
) + m
->m_len
,
register struct mbuf
*m
, *n
;
while (m
!= NULL
&& len
> 0) {
/* a 2 pass algorithm might be better */
while (len
> 0 && m
->m_len
!= 0) {
while (m
!= NULL
&& m
->m_len
!= 0) {