Lines Matching refs:bp

80 m_length(struct mbuf *bp)
84 for (len = 0; bp; bp = bp->m_next)
85 len += bp->m_len;
109 struct mbuf *bp;
128 bp = &(*mb)->u.m;
147 bp = &(*mb)->u.m;
155 memset(bp, '\0', sizeof(struct mbuf));
156 bp->m_size = size - sizeof *bp;
157 bp->m_len = m_len;
158 bp->m_type = type;
161 MemMap[type].octets += bp->m_size;
163 return bp;
167 m_free(struct mbuf *bp)
172 if ((f = (struct mbucket *)bp) != NULL) {
173 MemMap[bp->m_type].fragments--;
174 MemMap[bp->m_type].octets -= bp->m_size;
176 nbp = bp->m_next;
177 mb = M_BUCKET(bp->m_size);
183 bp = nbp;
186 return bp;
190 m_freem(struct mbuf *bp)
192 while (bp)
193 bp = m_free(bp);
197 mbuf_Read(struct mbuf *bp, void *v, size_t len)
202 while (bp && len > 0) {
203 if (len > bp->m_len)
204 nb = bp->m_len;
208 memcpy(ptr, MBUF_CTOP(bp), nb);
210 bp->m_len -= nb;
212 bp->m_offset += nb;
214 if (bp->m_len == 0)
215 bp = m_free(bp);
218 while (bp && bp->m_len == 0)
219 bp = m_free(bp);
221 return bp;
225 mbuf_View(struct mbuf *bp, void *v, size_t len)
230 while (bp && l > 0) {
231 if (l > bp->m_len)
232 nb = bp->m_len;
235 memcpy(ptr, MBUF_CTOP(bp), nb);
238 bp = bp->m_next;
245 m_prepend(struct mbuf *bp, const void *ptr, size_t len, u_short extra)
249 if (bp && bp->m_offset) {
250 if (bp->m_offset >= len) {
251 bp->m_offset -= len;
252 bp->m_len += len;
254 memcpy(MBUF_CTOP(bp), ptr, len);
255 return bp;
257 len -= bp->m_offset;
259 memcpy(bp + 1, (const char *)ptr + len, bp->m_offset);
260 bp->m_len += bp->m_offset;
261 bp->m_offset = 0;
264 head = m_get(len + extra, bp ? bp->m_type : MB_UNKNOWN);
269 head->m_next = bp;
275 m_adj(struct mbuf *bp, ssize_t n)
278 while (bp) {
279 if ((size_t)n < bp->m_len) {
280 bp->m_len = n;
281 bp->m_offset += n;
282 return bp;
284 n -= bp->m_len;
285 bp = m_free(bp);
288 if ((n = m_length(bp) + n) <= 0) {
289 m_freem(bp);
292 for (; bp; bp = bp->m_next, n -= bp->m_len)
293 if ((size_t)n < bp->m_len) {
294 bp->m_len = n;
295 m_freem(bp->m_next);
296 bp->m_next = NULL;
301 return bp;
305 mbuf_Write(struct mbuf *bp, const void *ptr, size_t m_len)
310 plen = m_length(bp);
315 nb = (m_len < bp->m_len) ? m_len : bp->m_len;
316 memcpy(MBUF_CTOP(bp), ptr, nb);
317 m_len -= bp->m_len;
318 bp = bp->m_next;
349 struct mbuf *bp;
352 bp = q->top;
353 if (bp) {
362 bp->m_nextpkt = NULL;
365 return bp;
369 m_enqueue(struct mqueue *queue, struct mbuf *bp)
371 if (bp != NULL) {
373 queue->last->m_nextpkt = bp;
374 queue->last = bp;
376 queue->last = queue->top = bp;
383 m_pullup(struct mbuf *bp)
387 if (bp != NULL) {
388 if (bp->m_next != NULL) {
392 nbp = m_get(m_length(bp), bp->m_type);
394 for (cp = MBUF_CTOP(nbp); bp; bp = m_free(bp)) {
395 memcpy(cp, MBUF_CTOP(bp), bp->m_len);
396 cp += bp->m_len;
398 bp = nbp;
401 else if ((bp->m_offset & (sizeof(long) - 1)) != 0) {
402 bcopy(MBUF_CTOP(bp), bp + 1, bp->m_len);
403 bp->m_offset = 0;
408 return bp;
412 m_settype(struct mbuf *bp, int type)
414 for (; bp; bp = bp->m_next)
415 if (type != bp->m_type) {
416 MemMap[bp->m_type].fragments--;
417 MemMap[bp->m_type].octets -= bp->m_size;
418 bp->m_type = type;
420 MemMap[type].octets += bp->m_size;
425 m_append(struct mbuf *bp, const void *v, size_t sz)
427 struct mbuf *m = bp;
439 bp = m_prepend(NULL, v, sz, 0);
441 return bp;