/* uipc_mbuf.c 1.7 81/11/04 */
#include "../inet/inet.h"
#include "../inet/inet_systm.h"
if (mbstat
.m_lowat
+ mbufs
> NNETPAGES
* NMBPG
- 32)
mbstat
.m_hiwat
= 2 * mbstat
.m_lowat
;
mbstat
.m_hiwat
= 2 * mbstat
.m_lowat
;
#define m_more(x) ((struct mbuf *)panic("m_more"))
m
= (struct mbuf
*)&netutl
[0]; /* ->start of buffer virt mem */
vmemall(&Netmap
[0], 2, proc
, CSYS
);
vmaccess(&Netmap
[0], m
, 2);
for (i
=0; i
< NMBPG
; i
++) {
if ((i
= rmalloc(netmap
, n
)) == 0)
/* should use vmemall sometimes */
if (memall(&Netmap
[j
], k
, proc
, CSYS
) == 0) {
vmaccess(&Netmap
[j
], (caddr_t
)m
, k
);
if ((i
= rmalloc(netmap
, n
)) == 0)
/* should use vmemall sometimes */
if (memall(&Netmap
[j
], k
, proc
, CSYS
) == 0)
vmaccess(&Netmap
[j
], (caddr_t
)m
, k
);
for (j
=0; j
< bufs
; j
++) {
register struct mbuf
*m
, *n
;
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
, n
->m_len
);
register struct mbuf
*m
, *n
;
for (m = mp; m; m = m->m_next) {
printf("a %x %d\n", m, m->m_len);
if (len
>= 0) { /* adjust from top of msg chain */
while (m
!= NULL
&& len
> 0) {
if (m
->m_len
<= len
) { /* free this mbuf */
} else { /* adjust mbuf */
} else { /* adjust from bottom of msg chain */
while (len
> 0 && m
->m_len
!= 0) {
while (m
!= NULL
&& m
->m_len
!= 0) {
if (n
->m_len
<= len
) { /* last mbuf */
} else { /* adjust length */
* convert mbuf virtual to physical addr for uballoc
register unsigned long addr
;
register struct pte
*pte
;
i
= (((int)m
& ~PGOFSET
) - (int)netutl
) >> PGSHIFT
;
addr
= (pte
->pg_pfnum
<< PGSHIFT
) | ((int)m
& PGOFSET
);